diff --git a/omap3/gstreamer/colorseg/AUTHORS b/omap3/gstreamer/colorseg/AUTHORS
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/omap3/gstreamer/colorseg/COPYING b/omap3/gstreamer/colorseg/COPYING
deleted file mode 100644
index 94a9ed024d3859793618152ea559a168bbcbb5e2..0000000000000000000000000000000000000000
--- a/omap3/gstreamer/colorseg/COPYING
+++ /dev/null
@@ -1,674 +0,0 @@
- 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/omap3/gstreamer/colorseg/ChangeLog b/omap3/gstreamer/colorseg/ChangeLog
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/omap3/gstreamer/colorseg/Makefile.am b/omap3/gstreamer/colorseg/Makefile.am
deleted file mode 100644
index 5ff2f586079338fd09aba314e2d4868f86926554..0000000000000000000000000000000000000000
--- a/omap3/gstreamer/colorseg/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-SUBDIRS = src
-
-EXTRA_DIST = autogen.sh
diff --git a/omap3/gstreamer/colorseg/Makefile.in b/omap3/gstreamer/colorseg/Makefile.in
deleted file mode 100644
index b5f549cee3ac4bcf1b90aad525fac6f92e511cc4..0000000000000000000000000000000000000000
--- a/omap3/gstreamer/colorseg/Makefile.in
+++ /dev/null
@@ -1,723 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = .
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/config.h.in \
- $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
- config.guess config.sub depcomp install-sh ltmain.sh missing
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
- distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir dist dist-all distcheck
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
- { test ! -d "$(distdir)" \
- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr "$(distdir)"; }; }
-am__relativize = \
- dir0=`pwd`; \
- sed_first='s,^\([^/]*\)/.*$$,\1,'; \
- sed_rest='s,^[^/]*/*,,'; \
- sed_last='s,^.*/\([^/]*\)$$,\1,'; \
- sed_butlast='s,/*[^/]*$$,,'; \
- while test -n "$$dir1"; do \
- first=`echo "$$dir1" | sed -e "$$sed_first"`; \
- if test "$$first" != "."; then \
- if test "$$first" = ".."; then \
- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
- else \
- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
- if test "$$first2" = "$$first"; then \
- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
- else \
- dir2="../$$dir2"; \
- fi; \
- dir0="$$dir0"/"$$first"; \
- fi; \
- fi; \
- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
- done; \
- reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-GST_CFLAGS = @GST_CFLAGS@
-GST_LIBS = @GST_LIBS@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-HAVE_PKGCONFIG = @HAVE_PKGCONFIG@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-SUBDIRS = src
-EXTRA_DIST = autogen.sh
-all: config.h
- $(MAKE) $(AM_MAKEFLAGS) all-recursive
-
-.SUFFIXES:
-am--refresh:
- @:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
- $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- echo ' $(SHELL) ./config.status'; \
- $(SHELL) ./config.status;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- $(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- $(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-
-config.h: stamp-h1
- @if test ! -f $@; then \
- rm -f stamp-h1; \
- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
- else :; fi
-
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
- @rm -f stamp-h1
- cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
- rm -f stamp-h1
- touch $@
-
-distclean-hdr:
- -rm -f config.h stamp-h1
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool config.lt
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- $(am__remove_distdir)
- test -d "$(distdir)" || mkdir "$(distdir)"
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- $(am__relativize); \
- new_distdir=$$reldir; \
- dir1=$$subdir; dir2="$(top_distdir)"; \
- $(am__relativize); \
- new_top_distdir=$$reldir; \
- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
- ($(am__cd) $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$new_top_distdir" \
- distdir="$$new_distdir" \
- am__remove_distdir=: \
- am__skip_length_check=: \
- am__skip_mode_fix=: \
- distdir) \
- || exit 1; \
- fi; \
- done
- -test -n "$(am__skip_mode_fix)" \
- || find "$(distdir)" -type d ! -perm -755 \
- -exec chmod u+rwx,go+rx {} \; -o \
- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
- || chmod -R a+r "$(distdir)"
-dist-gzip: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
-
-dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
- $(am__remove_distdir)
-
-dist-lzma: distdir
- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
- $(am__remove_distdir)
-
-dist-xz: distdir
- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
- $(am__remove_distdir)
-
-dist-tarZ: distdir
- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
- $(am__remove_distdir)
-
-dist-shar: distdir
- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
- $(am__remove_distdir)
-
-dist-zip: distdir
- -rm -f $(distdir).zip
- zip -rq $(distdir).zip $(distdir)
- $(am__remove_distdir)
-
-dist dist-all: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration. Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
- case '$(DIST_ARCHIVES)' in \
- *.tar.gz*) \
- GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
- *.tar.bz2*) \
- bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
- *.tar.lzma*) \
- lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
- *.tar.xz*) \
- xz -dc $(distdir).tar.xz | $(am__untar) ;;\
- *.tar.Z*) \
- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
- *.shar.gz*) \
- GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
- *.zip*) \
- unzip $(distdir).zip ;;\
- esac
- chmod -R a-w $(distdir); chmod a+w $(distdir)
- mkdir $(distdir)/_build
- mkdir $(distdir)/_inst
- chmod a-w $(distdir)
- test -d $(distdir)/_build || exit 0; \
- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
- && am__cwd=`pwd` \
- && $(am__cd) $(distdir)/_build \
- && ../configure --srcdir=.. --prefix="$$dc_install_base" \
- $(DISTCHECK_CONFIGURE_FLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) dvi \
- && $(MAKE) $(AM_MAKEFLAGS) check \
- && $(MAKE) $(AM_MAKEFLAGS) install \
- && $(MAKE) $(AM_MAKEFLAGS) installcheck \
- && $(MAKE) $(AM_MAKEFLAGS) uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
- distuninstallcheck \
- && chmod -R a-w "$$dc_install_base" \
- && ({ \
- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
- } || { rm -rf "$$dc_destdir"; exit 1; }) \
- && rm -rf "$$dc_destdir" \
- && $(MAKE) $(AM_MAKEFLAGS) dist \
- && rm -rf $(DIST_ARCHIVES) \
- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
- && cd "$$am__cwd" \
- || exit 1
- $(am__remove_distdir)
- @(echo "$(distdir) archives ready for distribution: "; \
- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
- sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
- @$(am__cd) '$(distuninstallcheck_dir)' \
- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
- || { echo "ERROR: files left after uninstall:" ; \
- if test -n "$(DESTDIR)"; then \
- echo " (check DESTDIR support)"; \
- fi ; \
- $(distuninstallcheck_listfiles) ; \
- exit 1; } >&2
-distcleancheck: distclean
- @if test '$(srcdir)' = . ; then \
- echo "ERROR: distcleancheck can only run from a VPATH build" ; \
- exit 1 ; \
- fi
- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
- || { echo "ERROR: files left in build directory after distclean:" ; \
- $(distcleancheck_listfiles) ; \
- exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile config.h
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-hdr \
- distclean-libtool distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf $(top_srcdir)/autom4te.cache
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
- ctags-recursive install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am am--refresh check check-am clean clean-generic \
- clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
- dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
- distcheck distclean distclean-generic distclean-hdr \
- distclean-libtool distclean-tags distcleancheck distdir \
- distuninstallcheck dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- installdirs-am maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
- ps ps-am tags tags-recursive uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/omap3/gstreamer/colorseg/NEWS b/omap3/gstreamer/colorseg/NEWS
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/omap3/gstreamer/colorseg/README b/omap3/gstreamer/colorseg/README
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/omap3/gstreamer/colorseg/autogen.sh b/omap3/gstreamer/colorseg/autogen.sh
deleted file mode 100755
index 9df38d3fa27ac84077cde47d0ad17aa5757757a4..0000000000000000000000000000000000000000
--- a/omap3/gstreamer/colorseg/autogen.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-# you can either set the environment variables AUTOCONF, AUTOHEADER, AUTOMAKE,
-# ACLOCAL, AUTOPOINT and/or LIBTOOLIZE to the right versions, or leave them
-# unset and get the defaults
-
-autoreconf --verbose --force --install --make || {
- echo 'autogen.sh failed';
- exit 1;
-}
-
-./configure || {
- echo 'configure failed';
- exit 1;
-}
-
-echo
-echo "Now type 'make' to compile this module."
-echo
diff --git a/omap3/gstreamer/colorseg/configure.ac b/omap3/gstreamer/colorseg/configure.ac
deleted file mode 100644
index cf23d86b3cdd1a8e3ca93ee6a11b63278d52885f..0000000000000000000000000000000000000000
--- a/omap3/gstreamer/colorseg/configure.ac
+++ /dev/null
@@ -1,88 +0,0 @@
-dnl required version of autoconf
-AC_PREREQ([2.53])
-
-dnl fill in your package name and package version here
-AC_INIT([colorseg],[0.0.1])
-
-dnl required versions of gstreamer and plugins-base
-GST_REQUIRED=0.10.16
-GSTPB_REQUIRED=0.10.16
-
-AC_CONFIG_SRCDIR([src])
-AC_CONFIG_HEADERS([config.h])
-
-dnl required version of automake
-AM_INIT_AUTOMAKE([1.10])
-
-dnl enable mainainer mode by default
-AM_MAINTAINER_MODE([enable])
-
-dnl check for tools (compiler etc.)
-AC_PROG_CC
-
-dnl required version of libtool
-LT_PREREQ([2.2.6])
-LT_INIT
-
-dnl give error and exit if we don't have pkgconfig
-AC_CHECK_PROG(HAVE_PKGCONFIG, pkg-config, [ ], [
- AC_MSG_ERROR([You need to have pkg-config installed!])
-])
-
-dnl Check for the required version of GStreamer core (and gst-plugins-base)
-dnl This will export GST_CFLAGS and GST_LIBS variables for use in Makefile.am
-dnl
-dnl If you need libraries from gst-plugins-base here, also add:
-dnl for libgstaudio-0.10: gstreamer-audio-0.10 >= $GST_REQUIRED
-dnl for libgstvideo-0.10: gstreamer-video-0.10 >= $GST_REQUIRED
-dnl for libgsttag-0.10: gstreamer-tag-0.10 >= $GST_REQUIRED
-dnl for libgstpbutils-0.10: gstreamer-pbutils-0.10 >= $GST_REQUIRED
-dnl for libgstfft-0.10: gstreamer-fft-0.10 >= $GST_REQUIRED
-dnl for libgstinterfaces-0.10: gstreamer-interfaces-0.10 >= $GST_REQUIRED
-dnl for libgstrtp-0.10: gstreamer-rtp-0.10 >= $GST_REQUIRED
-dnl for libgstrtsp-0.10: gstreamer-rtsp-0.10 >= $GST_REQUIRED
-dnl etc.
-PKG_CHECK_MODULES(GST, [
- gstreamer-0.10 >= $GST_REQUIRED
- gstreamer-base-0.10 >= $GST_REQUIRED
- gstreamer-video-0.10 >= $GST_REQUIRED
- gstreamer-controller-0.10 >= $GST_REQUIRED
-], [
- AC_SUBST(GST_CFLAGS)
- AC_SUBST(GST_LIBS)
-], [
- AC_MSG_ERROR([
- You need to install or upgrade the GStreamer development
- packages on your system. On debian-based systems these are
- libgstreamer0.10-dev and libgstreamer-plugins-base0.10-dev.
- on RPM-based systems gstreamer0.10-devel, libgstreamer0.10-devel
- or similar. The minimum version required is $GST_REQUIRED.
- ])
-])
-
-dnl check if compiler understands -Wall (if yes, add -Wall to GST_CFLAGS)
-AC_MSG_CHECKING([to see if compiler understands -Wall])
-save_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -Wall"
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ ], [ ])], [
- GST_CFLAGS="$GST_CFLAGS -Wall"
- AC_MSG_RESULT([yes])
-], [
- AC_MSG_RESULT([no])
-])
-
-dnl set the plugindir where plugins should be installed (for src/Makefile.am)
-if test "x${prefix}" = "x$HOME"; then
- plugindir="$HOME/.gstreamer-0.10/plugins"
-else
- plugindir="\$(libdir)/gstreamer-0.10"
-fi
-AC_SUBST(plugindir)
-
-dnl set proper LDFLAGS for plugins
-GST_PLUGIN_LDFLAGS='-module -avoid-version -export-symbols-regex [_]*\(gst_\|Gst\|GST_\).*'
-AC_SUBST(GST_PLUGIN_LDFLAGS)
-
-AC_CONFIG_FILES([Makefile src/Makefile])
-AC_OUTPUT
-
diff --git a/omap3/gstreamer/colorseg/src/Makefile.am b/omap3/gstreamer/colorseg/src/Makefile.am
deleted file mode 100644
index ee9fba9a97b345d5f7dbe49fc56596606a8aab77..0000000000000000000000000000000000000000
--- a/omap3/gstreamer/colorseg/src/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-# Note: plugindir is set in configure
-
-plugin_LTLIBRARIES = libcolorseg.la
-
-# sources used to compile this plug-in
-libcolorseg_la_SOURCES = gstcolorseg.c gstcolorseg.h colorseg.c colorseg.h threshold.h
-
-# compiler and linker flags used to compile this plugin, set in configure.ac
-libcolorseg_la_CFLAGS = $(GST_CFLAGS)
-libcolorseg_la_LIBADD = $(GST_LIBS)
-libcolorseg_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libcolorseg_la_LIBTOOLFLAGS = --tag=disable-static
-
-
-# headers we need but don't want installed
-#noinst_HEADERS = gstplugin.h
diff --git a/omap3/gstreamer/colorseg/src/colorseg.c b/omap3/gstreamer/colorseg/src/colorseg.c
deleted file mode 100644
index 461b547a47d03f3a60db8afd53d9c7750a09acb7..0000000000000000000000000000000000000000
--- a/omap3/gstreamer/colorseg/src/colorseg.c
+++ /dev/null
@@ -1,78 +0,0 @@
-#include
-#include
-//#define NDEBUG
-#include
-
-#include "colorseg.h"
-#include "threshold.h"
-
-
-#define min(a, b) ((ab)?a:b)
-
-
-static inline color_class get_color_class(unsigned char *pixel) {
- // Segmentation super rapide
- // [Y/U/V]Class sont définis dans threshold.h
- return YClass[pixel[0]] & UClass[pixel[1]] & VClass[pixel[2]];
-}
-
-static inline color_class get_color_class_YUY2(unsigned char *data, unsigned int pixel_nb) {
- unsigned int offset = pixel_nb / 2;
- unsigned int add = pixel_nb % 2;
- unsigned char Y=data[4*offset + 2*add], U=data[4*offset + 1], V=data[4*offset + 3];
- return YClass[Y] & UClass[U] & VClass[V];
-}
-
-static inline void set_pixel_YUY2(unsigned char *data, unsigned int pixel_nb, unsigned char Y, unsigned char U, unsigned char V) {
- unsigned int offset = pixel_nb / 2;
- unsigned int add = pixel_nb % 2;
- data[4*offset + 2*add] = Y, data[4*offset + 1] = U, data[4*offset + 3] = V;
-}
-
-static inline void get_color_from_class(unsigned char *Y, unsigned char *U, unsigned char *V, color_class class) {
- switch (class) {
- case 0:
- *Y = 0; *U = *V = 128;
- break;
- case 1:
- *Y = 76; *U = 85; *V = 255;
- break;
- case 2:
- *Y = 30; *U = 255; *V = 107;
- break;
- case 4:
- *Y = 152; *U = 42; *V = 202;
- break;
- case 8:
- *Y = 226; *U = 1; *V = 149;
- break;
- default:
- *Y = 255; *U = *V = 128;
- break;
- }
-}
-
-void draw_segmentation(unsigned char *data, unsigned int width, unsigned int height, unsigned char mode) {
- unsigned int i, j;
- unsigned char Y, U, V;
- for (j=0;j>1) + (Y>>1));
- l[1] = ((l[1]>>1) + (U>>1));
- l[2] = ((l[2]>>1) + (Y>>1));
- l[3] = ((l[3]>>1) + (V>>1));
- }
- }
- }
-}
-
diff --git a/omap3/gstreamer/colorseg/src/colorseg.h b/omap3/gstreamer/colorseg/src/colorseg.h
deleted file mode 100644
index e35bf2a245c37cb1651b559a147f72ba832d1188..0000000000000000000000000000000000000000
--- a/omap3/gstreamer/colorseg/src/colorseg.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef COLORSEG_INCLUDED
-#define COLORSEG_INCLUDED
-
-typedef enum {
- COLOR_SEG_NORMAL,
- COLOR_SEG_OVERLAY,
- COLOR_SEG_MIX,
- COLOR_SEG_NONE
-} ColorSegMethod;
-
-typedef unsigned char color_class;
-
-void draw_segmentation(unsigned char *data, unsigned int width, unsigned int height, unsigned char mode);
-
-#endif // COLORSEG_INCLUDED
diff --git a/omap3/gstreamer/colorseg/src/gstcolorseg.c b/omap3/gstreamer/colorseg/src/gstcolorseg.c
deleted file mode 100644
index 4c6d22dd2c852f7504e1003fcfc2b9382c0afff1..0000000000000000000000000000000000000000
--- a/omap3/gstreamer/colorseg/src/gstcolorseg.c
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * GStreamer ColorSeg plugin
- * Copyright (C) 2010 Rémi <>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-colorseg
- *
- * FIXME:Describe colorseg here.
- *
- *
- * Example launch line
- * |[
- * gst-launch -v -m fakesrc ! colorseg ! fakesink silent=TRUE
- * ]|
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include
-
-#include "colorseg.h"
-
-#include "gstcolorseg.h"
-
-/* debug variable definition */
-GST_DEBUG_CATEGORY (gst_color_seg_debug);
-
-/* Filter signals and args */
-enum
-{
- /* FILL ME */
- LAST_SIGNAL
-};
-
-enum
-{
- PROP_0,
- PROP_DRAW_MODE,
-};
-
-/* the capabilities of the inputs and outputs.
- */
-static GstStaticPadTemplate sink_template =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("video/x-raw-yuv, "
- "format = (fourcc) YUY2")
-);
-
-static GstStaticPadTemplate src_template =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("video/x-raw-yuv, "
- "format = (fourcc) YUY2")
-);
-
-#define DEFAULT_PROP_DRAW_MODE COLOR_SEG_NORMAL
-
-#define GST_TYPE_COLOR_SEG_METHOD (gst_color_seg_method_get_type())
-static GType
-gst_color_seg_method_get_type (void)
-{
- static GType color_seg_method_type = 0;
-
- static const GEnumValue color_seg_methods[] = {
- {COLOR_SEG_NORMAL, "Normal", "normal"},
- {COLOR_SEG_OVERLAY, "Overlay", "overlay"},
- {COLOR_SEG_MIX, "Mix", "mix"},
- {0, NULL, NULL},
- };
-
- if (!color_seg_method_type) {
- color_seg_method_type =
- g_enum_register_static ("ColorSegMethod", color_seg_methods);
- }
- return color_seg_method_type;
-}
-
-GST_BOILERPLATE (GstColorSeg, gst_color_seg, GstVideoFilter,
- GST_TYPE_VIDEO_FILTER);
-
-static void gst_color_seg_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_color_seg_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static GstFlowReturn gst_color_seg_transform_ip (GstBaseTransform * base,
- GstBuffer * outbuf);
-static gboolean gst_color_seg_set_caps (GstBaseTransform * base, GstCaps * incaps, GstCaps * outcaps);
-
-/* GObject vmethod implementations */
-
-static void
-gst_color_seg_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_set_details_simple (element_class,
- "ColorSeg",
- "Filter/Effect/Video",
- "Misc operations",
- "Rémi Koenig ");
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
-}
-
-/* initialize the colorseg's class */
-static void
-gst_color_seg_class_init (GstColorSegClass * klass)
-{
- GObjectClass *gobject_class;
-
- gobject_class = (GObjectClass *) klass;
- gobject_class->set_property = gst_color_seg_set_property;
- gobject_class->get_property = gst_color_seg_get_property;
-
- g_object_class_install_property (gobject_class, PROP_DRAW_MODE,
- g_param_spec_enum ("draw-mode", "Draw mode", "0, 1 or 2",
- GST_TYPE_COLOR_SEG_METHOD, DEFAULT_PROP_DRAW_MODE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- GST_BASE_TRANSFORM_CLASS (klass)->transform_ip =
- GST_DEBUG_FUNCPTR (gst_color_seg_transform_ip);
- GST_BASE_TRANSFORM_CLASS (klass)->set_caps =
- GST_DEBUG_FUNCPTR (gst_color_seg_set_caps);
-}
-
-/* initialize the new element
- * initialize instance structure
- */
-static void
-gst_color_seg_init (GstColorSeg *filter, GstColorSegClass * klass)
-{
- filter->draw_mode = DEFAULT_PROP_DRAW_MODE;
-}
-
-static void
-gst_color_seg_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstColorSeg *filter = GST_COLORSEG (object);
-
- switch (prop_id) {
- case PROP_DRAW_MODE:
- filter->draw_mode = g_value_get_enum (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_color_seg_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstColorSeg *filter = GST_COLORSEG (object);
-
- switch (prop_id) {
- case PROP_DRAW_MODE:
- g_value_set_enum (value, filter->draw_mode);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static gboolean
-gst_color_seg_set_caps (GstBaseTransform * base, GstCaps * incaps, GstCaps * outcaps)
-{
- GstColorSeg *filter = GST_COLORSEG (base);
- gboolean ret = TRUE;
-
- ret = gst_video_format_parse_caps (incaps, NULL,
- &filter->width, &filter->height);
- if (!ret)
- return ret;
-
- g_print ("Caps negotiation succeeded with %dx%d\n",
- (gint)filter->width, (gint)filter->height);
-
- return ret;
-}
-
-
-/* GstBaseTransform vmethod implementations */
-
-/* this function does the actual processing
- */
-static GstFlowReturn
-gst_color_seg_transform_ip (GstBaseTransform * base, GstBuffer * outbuf)
-{
- GstColorSeg *filter = GST_COLORSEG (base);
-
- draw_segmentation(outbuf->data, filter->width, filter->height, filter->draw_mode);
-
- return GST_FLOW_OK;
-}
-
-
-/* entry point to initialize the plug-in
- * initialize the plug-in itself
- * register the element factories and other features
- */
-static gboolean
-colorseg_init (GstPlugin * colorseg)
-{
- if (!gst_element_register (colorseg, "colorseg", GST_RANK_NONE,
- GST_TYPE_COLORSEG))
- return FALSE;
- GST_DEBUG_CATEGORY_INIT (gst_color_seg_debug, "colorseg", 0,
- "colorseg element");
- return TRUE;
-}
-
-/* gstreamer looks for this structure to register colorsegs
- */
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "colorseg",
- "Color segmentation",
- colorseg_init,
- VERSION,
- "LGPL",
- "GStreamer",
- "http://gstreamer.net/"
-)
diff --git a/omap3/gstreamer/colorseg/src/gstcolorseg.h b/omap3/gstreamer/colorseg/src/gstcolorseg.h
deleted file mode 100644
index 92ec452e741b1bfc36030a36a40aed143da9dddd..0000000000000000000000000000000000000000
--- a/omap3/gstreamer/colorseg/src/gstcolorseg.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * GStreamer ColorSeg plugin
- * Copyright (C) 2010 Rémi <>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_COLORSEG_H__
-#define __GST_COLORSEG_H__
-
-#include
-#include
-#include
-
-#include "colorseg.h"
-
-G_BEGIN_DECLS
-
-GST_DEBUG_CATEGORY_EXTERN (gst_color_seg_debug);
-#define GST_CAT_DEFAULT gst_color_seg_debug
-
-#define GST_TYPE_COLORSEG \
- (gst_color_seg_get_type())
-#define GST_COLORSEG(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_COLORSEG,GstColorSeg))
-#define GST_COLORSEG_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_COLORSEG,GstColorSegClass))
-#define GST_IS_COLORSEG(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_COLORSEG))
-#define GST_IS_COLORSEG_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_COLORSEG))
-
-typedef struct _GstColorSeg GstColorSeg;
-typedef struct _GstColorSegClass GstColorSegClass;
-
-struct _GstColorSeg {
- GstVideoFilter element;
- ColorSegMethod draw_mode;
- unsigned int width, height;
-};
-
-struct _GstColorSegClass {
- GstVideoFilterClass parent_class;
-};
-
-GType gst_color_seg_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_COLORSEG_H__ */
diff --git a/omap3/gstreamer/colorseg/src/threshold.h b/omap3/gstreamer/colorseg/src/threshold.h
deleted file mode 100644
index 7e95adf86907a45fc45095ed2cb56304cc7a6bb0..0000000000000000000000000000000000000000
--- a/omap3/gstreamer/colorseg/src/threshold.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef THRESHOLD_INCLUDED
-#define THRESHOLD_INCLUDED
-
-#include "colorseg.h"
-
-color_class YClass[256] = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8};
-color_class UClass[256] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2};
-color_class VClass[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 12, 12, 12, 12, 12, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
-
-#endif // THRESHOLD_INCLUDED
diff --git a/omap3/traitementImages/Applatir/applatir.cpp b/omap3/traitementImages/Applatir/applatir.cpp
deleted file mode 100644
index c67beaf428cd543e20a179ec304cdb22c4d2cf38..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/Applatir/applatir.cpp
+++ /dev/null
@@ -1,132 +0,0 @@
-#include "cv.h"
-#include "highgui.h"
-
-#include
-#include
-
-#define PI 3.14159265
-
-using namespace cv;
-using namespace std;
-
-int main(int argc, char** argv) {
- int alpha_=90., beta_=90., gamma_=90.;
- int f_ = 500, dist_ = 500;
- bool video = false;
-
- Mat source, destination;
- VideoCapture capture(0);
-
- if (argc >= 2) {
- // Si au moins un argument est précisé, on essaye de charger l'image
- cout << "Lecture de " << argv[1] << endl;
- source = imread(argv[1]);
- } else {
- // Sinon on essaye d'ouvrir une capture de vidéo (webcam)
- cout << "Ouverture du flux vidéo..." << endl;
- if(!capture.isOpened()) {
- cout << "... échec :(" << endl;
- return -1;
- }
- cout << "... ça marche :)" << endl;
- video = true;
- }
-
- string wndname1 = "Source";
- string wndname2 = "Warp Perspective";
- string tbarname1 = "Alpha";
- string tbarname2 = "Beta";
- string tbarname3 = "Gamma";
- string tbarname4 = "f";
- string tbarname5 = "Distance";
- namedWindow(wndname1, 1);
- namedWindow(wndname2, 1);
- createTrackbar(tbarname1, wndname2, &alpha_, 180);
- createTrackbar(tbarname2, wndname2, &beta_, 180);
- createTrackbar(tbarname3, wndname2, &gamma_, 180);
- createTrackbar(tbarname4, wndname2, &f_, 2000);
- createTrackbar(tbarname5, wndname2, &dist_, 2000);
-
-
- while(true) {
- // Les trackbar d'opencv ne donnent que des valeurs entières entre 0
- // et le max (dernier paramètre de createTrackbar)
- // Il faut donc adapter les paramètres
- double f, dist;
- double alpha, beta, gamma;
- alpha = ((double)alpha_ - 90.)*PI/180;
- beta = ((double)beta_ - 90.)*PI/180;
- gamma = ((double)gamma_ - 90.)*PI/180;
- f = (double) f_;
- dist = (double) dist_;
-
- if (video) {
- // Capture l'image de la caméra
- capture >> source;
- }
-
- // Affiche l'image
- imshow(wndname1, source);
-
- Size taille = source.size();
- double w = (double)taille.width, h = (double)taille.height;
-
- // Cette matrice projette l'image de la caméra (2D) dans l'espace (3D)
- // et la centre
- Mat A1 = (Mat_(4,3) <<
- 1, 0, -w/2,
- 0, 1, -h/2,
- 0, 0, 0,
- 0, 0, 1);
- // On définit les 3 matrices de rotation (une par axe)
- Mat RX = (Mat_(4, 4) <<
- 1, 0, 0, 0,
- 0, cos(alpha), -sin(alpha), 0,
- 0, sin(alpha), cos(alpha), 0,
- 0, 0, 0, 1);
- Mat RY = (Mat_(4, 4) <<
- cos(beta), 0, -sin(beta), 0,
- 0, 1, 0, 0,
- sin(beta), 0, cos(beta), 0,
- 0, 0, 0, 1);
- Mat RZ = (Mat_(4, 4) <<
- cos(gamma), -sin(gamma), 0, 0,
- sin(gamma), cos(gamma), 0, 0,
- 0, 0, 1, 0,
- 0, 0, 0, 1);
- // La matrice de rotation finale
- Mat R = RX * RY * RZ;
- // Matrice de translation : on place le plan à la distance "dist" de
- // la caméra
- Mat T = (Mat_(4, 4) <<
- 1, 0, 0, 0,
- 0, 1, 0, 0,
- 0, 0, 1, dist,
- 0, 0, 0, 1);
- // Matrice de la caméra : projette l'image en 2D et la centre
- Mat A2 = (Mat_(3,4) <<
- f, 0, w/2, 0,
- 0, f, h/2, 0,
- 0, 0, 1, 0);
- // La matrice de transformation est tout simplement le produit des
- // matrices
- Mat transfo = A2 * (T * (R * A1));
-
- // Applique la transformation
- warpPerspective(source, destination, transfo, taille, INTER_CUBIC | WARP_INVERSE_MAP);
- // Affiche le résultat
- imshow(wndname2, destination);
-
- if (video) {
- // Quitte lorsqu'une touche est pressée
- if(waitKey(10) >= 0)
- break;
- } else {
- // Quitte lorsque la touche echap est pressée
- if(waitKey(0) == 27)
- break;
- }
- }
-
- return 0;
-}
diff --git a/omap3/traitementImages/Applatir/makefile b/omap3/traitementImages/Applatir/makefile
deleted file mode 100644
index a63bf3073f563b5a69f71ef5da99c0ed366782ff..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/Applatir/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-CC=g++
-CFLAGS=-c -Wall -g -O0 `pkg-config opencv --cflags`
-LDFLAGS=`pkg-config opencv --libs`
-SOURCES=applatir.cpp
-OBJECTS=$(SOURCES:.cpp=.o)
-EXECUTABLE=applatir.bin
-
-all: $(SOURCES) $(EXECUTABLE)
-
-$(EXECUTABLE): $(OBJECTS)
- $(CC) $(LDFLAGS) $(OBJECTS) -o $@
-
-.cpp.o:
- $(CC) $(CFLAGS) $< -o $@
-
-clean:
- rm *.o
diff --git a/omap3/traitementImages/GetColor/getColor.cpp b/omap3/traitementImages/GetColor/getColor.cpp
deleted file mode 100644
index 9c85037fcfa1850c3b08f8410108e3b5de0336a4..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/GetColor/getColor.cpp
+++ /dev/null
@@ -1,138 +0,0 @@
-
-
-// include standard OpenCV headers, same as before
-#include
-#include
-#include
-#include
-#include
-#include "cv.h"
-#include "highgui.h"
-
-// all the new API is put into "cv" namespace. Export its content
-using namespace cv;
-using namespace std;
-
-// enable/disable use of mixed API in the code below.
-#define DEMO_MIXED_API_USE 1
-
-#define CV_EVENT_MOUSEMOVE 0
-#define CV_EVENT_LBUTTONDOWN 1
-#define CV_EVENT_RBUTTONDOWN 2
-#define CV_EVENT_MBUTTONDOWN 3
-#define CV_EVENT_LBUTTONUP 4
-#define CV_EVENT_RBUTTONUP 5
-#define CV_EVENT_MBUTTONUP 6
-#define CV_EVENT_LBUTTONDBLCLK 7
-#define CV_EVENT_RBUTTONDBLCLK 8
-#define CV_EVENT_MBUTTONDBLCLK 9
-
-int h = 0, s = 0, v = 0, tolerance = 40;
-IplImage *image;
-
-void my_mouse_callback( int event, int x, int y, int flags, void *param=NULL)
-{
-
- CvScalar pixel;
-
-
-
-if(event== CV_EVENT_LBUTTONDOWN )
- {
-
- pixel=cvGet2D(image,y,x);
-
-
- printf("\nB=%f, G=%f R=%f",pixel.val[0],pixel.val[1],pixel.val[2]);
-
- h = (int)pixel.val[0];
- s = (int)pixel.val[1];
- v = (int)pixel.val[2];
-
-
- }
-
-
-
-}
-
-
-int main( )
-{
-
- const char* imagename = "1.jpg";
- //const char* imagename = "1.jpg";
-
- IplImage *img = cvLoadImage(imagename);
- if(!img)
- {
- printf("Erreur \n");
- return -1;
-
- }
- //Largueur image dans pixels
- int width = img->width;
- //Hauture image dans pixels
- int height = img->height;
- int step = img->widthStep/sizeof(uchar);
-
- //Nombre canaux image
- int channels = img->nChannels;
-
-
-
-
-//Binarisation
-int x, y;
-CvScalar pixel;
-IplImage *img_s,*hsv, *detec,*mask,*hsv_s, *mask_s, *image_new, *image_new2, *gray;
-IplConvKernel *kernel;
-int sommeX = 0, sommeY = 0;
-int nbPixels = 0, nbPixels2 = 0;
-// Key for keyboard event
-char key=0;
-
-
-
-//uchar* data = (uchar *)img->imageData; //cargamos los datos de la imagen en “data”
-
-
-printf("\nstep=%d height=%d",step, height);
-fflush(stdout);
-
-//image = cvCloneImage(img);
-
-cvNamedWindow("original", CV_WINDOW_AUTOSIZE);
-cvShowImage("original", img);
-
-
-image= cvCloneImage(img);
-
-// Set up the callback
-//cvSetMouseCallback("original_hsv", my_mouse_callback, (void*) image_hsv); //original_hsv
-
-//FONCTION QUI DETECTE LES COULEURS RGB
-cvSetMouseCallback("original", my_mouse_callback, (void*) image); //original
-
-
- while(1/*key != 'Q' && key != 'q'*/)
- {
-
-
- // We wait 10 ms
- key = cvWaitKey(10);
-
- }
-
-
-
-cvReleaseImage( &img );
-
-cvDestroyWindow("original");
-
-cvWaitKey(10);
-
-return 0;
-
-
-}
diff --git a/omap3/traitementImages/GetColor/makefile b/omap3/traitementImages/GetColor/makefile
deleted file mode 100644
index 941b41911c25a62adb8169afe90e9e383af82137..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/GetColor/makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-CC=g++
-CFLAGS=-c -Wall -g -O0 `pkg-config opencv --cflags`
-LDFLAGS=`pkg-config opencv --libs`
-SOURCES=getColor.cpp
-OBJECTS=$(SOURCES:.cpp=.o)
-EXECUTABLE=Color.bin
-all: $(SOURCES) $(EXECUTABLE)
-
-$(EXECUTABLE): $(OBJECTS)
- $(CC) $(LDFLAGS) $(OBJECTS) -o $@
-
-.cpp.o:
- $(CC) $(CFLAGS) $< -o $@
-
-clean:
- rm *.o
diff --git a/omap3/traitementImages/TestCPP/TestCPP.cbp b/omap3/traitementImages/TestCPP/TestCPP.cbp
deleted file mode 100644
index 71b579189cb8f5666e0d281e893d370a74041dc4..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/TestCPP/TestCPP.cbp
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/omap3/traitementImages/TestCPP/TestCPP.depend b/omap3/traitementImages/TestCPP/TestCPP.depend
deleted file mode 100644
index 6187e5a5e8ee5a4f94ef1d894b13c8038bc5495c..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/TestCPP/TestCPP.depend
+++ /dev/null
@@ -1,11 +0,0 @@
-# depslib dependency file v1.0
-1302210822 source:/home/mohamed/ProjetS4/TestCPP/main.cpp
-
-
-
-
-1302191236 source:/home/mohamed/ProjetS4/TestCPP/math.cpp
- "math.h"
-
-1302191489 /home/mohamed/ProjetS4/TestCPP/math.h
-
diff --git a/omap3/traitementImages/TestCPP/TestCPP.layout b/omap3/traitementImages/TestCPP/TestCPP.layout
deleted file mode 100644
index c760e45544fc86fa7e9aef33f034b242c6fcc7f9..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/TestCPP/TestCPP.layout
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/omap3/traitementImages/TestCPP/main.cpp b/omap3/traitementImages/TestCPP/main.cpp
deleted file mode 100644
index a0b521c56934796b97e5892f478b1770136fd7b3..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/TestCPP/main.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-#include
-# include
-#include
-#include
-
-using namespace std;
-
-string desordonner(string mot)
-{
- srand(time(0));
- int l(mot.size());
- string motDesordonne("");
- while (l!=0)
- {
- int position=rand() % l;
- motDesordonne+=mot[position];
- mot.erase(position,1);
- l=mot.size();
- }
- return motDesordonne;
-}
-
-
-int main()
-{
- int *pointeur(0);
- pointeur=new int;
- cout << "quel est votre age ?"<< endl;
- cin >> *pointeur;
- cout << "votre age est : " << *pointeur << endl;
- delete pointeur;
- pointeur=0;
- return 0;
-}
-
-
diff --git a/omap3/traitementImages/TestCPP/math.cpp b/omap3/traitementImages/TestCPP/math.cpp
deleted file mode 100644
index 5999b7629244baadfc71327d0318d6ab955ee81b..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/TestCPP/math.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "math.h"
-
-int ajouteDeux(int nombreRecu)
-{
- int valeur(nombreRecu + 2);
-
- return valeur;
-}
diff --git a/omap3/traitementImages/TestCPP/math.h b/omap3/traitementImages/TestCPP/math.h
deleted file mode 100644
index 16a72154a5a831f7f21fe3d8cdf938b88c4cd8dd..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/TestCPP/math.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef MATH_H_INCLUDED
-#define MATH_H_INCLUDED
-
-int ajouteDeux(int nombreRecu);
-
-#endif // MATH_H_INCLUDED
diff --git a/omap3/traitementImages/TestCPP/monTexte.txt b/omap3/traitementImages/TestCPP/monTexte.txt
deleted file mode 100644
index 54d7e9be01a3238a79e045846625332a2c679dcf..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/TestCPP/monTexte.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-moi benjelloun mohamed
-j'ai 22 ans !
-je suis beaugoss. moi benjelloun amine
-j'ai 16 ans !
-je suis beaugoss.
\ No newline at end of file
diff --git a/omap3/traitementImages/Vision/Vision.cpp b/omap3/traitementImages/Vision/Vision.cpp
deleted file mode 100644
index 21d6d3881d963af615e7fc34b7971a594408f09b..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/Vision/Vision.cpp
+++ /dev/null
@@ -1,310 +0,0 @@
-#include "cv.h"
-#include "highgui.h"
-
-#include
-#include
-#include
-#include
-#include
-
-#define PI 3.14159265
-
-using namespace cv;
-using namespace std;
-
-
-
-// les paramètres pour applatir l'image reçue de la camèra.
-// A regler selon la position de la camera sur le robot !
-int alpha_=30., beta_=90., gamma_=90.;
-int f_ = 500, dist_ =415;
-
-// les parametres ci-dessous dependent de la resolution de la camera, des parametres pour applatir.
-// ils servent a faire le lien entre la distance reelle sur la table et la distance mesure sur l'image.
-// et aussi de detecter les cercles avec précision
-
-double dminCentres=40.; // la distance minimale entre les centres des cercles a detecter.
-int rayonMin=13; // le rayon minimal des cercles a detecter.
-int rayonMax=192; // le rayon maximal des cercles a detecter
-
-int coteCase=350; // en mm, chaque case a une longueur de 100 pixels donc chaque pixel represente 3,5 mm.
-
-// cette fonction prend en argument une matrice de 0 et de 1,
-// et retourne si le pourcentage des "1" est superieur à la valeur pourcentage donnée en argument.
-bool estBlanc(Mat rect,double pourcentage) {
- bool estBlanc;
- Size taille = rect.size();
- double w = (double)taille.width, h = (double)taille.height;
- double nombreDesUns=countNonZero((Mat_)rect);
- double pourcentageDesUns=nombreDesUns/(w*h);
- if (pourcentageDesUns>=pourcentage) {
- estBlanc=true;
- }
- else {
- estBlanc=false;
- }
- return estBlanc;
-}
-
-
-//cette fonction dit si le point est à l'interieur du rectangle
-bool estInterieur(Rect rectangle,Point point) {
- double x=rectangle.x;
- double y=rectangle.y;
- double w=rectangle.width;
- double h=rectangle.height;
- if ((point.x>=x)&&(point.y>=y)&&(point.x<=x+w)&&(point.y<=y+h)) {
- return true;
- }
- else return false;
-}
-
-// cette fonction donne le type du pion observé : 0 un simple pion, 1 une tour.
-int pion(double longueur) {
- if (longueur<=20)
- return 0;
- else return 1;
-}
-
-int main(int argc, char** argv) {
-
-
- // indique si on a le flux video ou pas.
- bool video = false;
-
- // source est l'image vu par la camèra.
- // destination est l'image "vu" par le robot.
- // contours1 est l'image obtenue apres detection de contours sur l'image en 3 channals.
- // contours2 est l'image obtenue apres detection de contours sur l'image dans le channal G (Green).
- // cercles1 est un vecteur contenant les coordonnées et rayons des cercles dans l'image contours1
- // cercles2 est un vecteur contenant les coordonnées et rayons des cercles dans l'image contours2
- Mat source, destination, contours1, contours2;
- vector cercles1, cercles2;
- VideoCapture capture(0);
-
- // lecture des donnees :
- if (argc >= 2) {
- // Si au moins un argument est précisé, on essaye de charger l'image
- cout << "Lecture de " << argv[1] << endl;
- source = imread(argv[1]);
- } else {
- // Sinon on essaye d'ouvrir une capture de vidéo (webcam)
- cout << "Ouverture du flux vidéo..." << endl;
- if(!capture.isOpened()) {
- cout << "... échec :(" << endl;
- return -1;
- }
- cout << "... ça marche :)" << endl;
- video = true;
- }
-
- // juste pour les tests sur ordinateur.
- string wndname1 = "Source";
- string wndname2 = "destination";
- string wndname3 = "contours1";
- string wndname4 = "contours2";
- string wndname5 = "test";
- namedWindow(wndname1, 1);
- namedWindow(wndname2, 1);
- namedWindow(wndname3, 1);
- namedWindow(wndname4, 1);
- namedWindow(wndname5, 1);
-
- while(true) {
-
- // on transforme les angles en radians.
- double f, dist;
- double alpha, beta, gamma;
- alpha = ((double)alpha_ - 90.)*PI/180;
- beta = ((double)beta_ - 90.)*PI/180;
- gamma = ((double)gamma_ - 90.)*PI/180;
- f = (double) f_;
- dist = (double) dist_;
-
- if (video) {
- // Capture l'image de la caméra
- capture >> source;
- }
-
- // Affiche l'image
- imshow(wndname1, source);
-
- Size taille = source.size();
- double w = (double)taille.width, h = (double)taille.height;
-
- // Cette matrice projette l'image de la caméra (2D) dans l'espace (3D)
- // et la centre
- Mat A1 = (Mat_(4,3) <<
- 1, 0, -w/2,
- 0, 1, -h/2,
- 0, 0, 0,
- 0, 0, 1);
- // On définit les 3 matrices de rotation (une par axe)
- Mat RX = (Mat_(4, 4) <<
- 1, 0, 0, 0,
- 0, cos(alpha), -sin(alpha), 0,
- 0, sin(alpha), cos(alpha), 0,
- 0, 0, 0, 1);
- Mat RY = (Mat_(4, 4) <<
- cos(beta), 0, -sin(beta), 0,
- 0, 1, 0, 0,
- sin(beta), 0, cos(beta), 0,
- 0, 0, 0, 1);
- Mat RZ = (Mat_(4, 4) <<
- cos(gamma), -sin(gamma), 0, 0,
- sin(gamma), cos(gamma), 0, 0,
- 0, 0, 1, 0,
- 0, 0, 0, 1);
- // La matrice de rotation finale
- Mat R = RX * RY * RZ;
- // Matrice de translation : on place le plan à la distance "dist" de
- // la caméra
- Mat T = (Mat_(4, 4) <<
- 1, 0, 0, 0,
- 0, 1, 0, 0,
- 0, 0, 1, dist,
- 0, 0, 0, 1);
- // Matrice de la caméra : projette l'image en 2D et la centre
- Mat A2 = (Mat_(3,4) <<
- f, 0, w/2, 0,
- 0, f, h/2, 0,
- 0, 0, 1, 0);
- // La matrice de transformation est tout simplement le produit des
- // matrices
- Mat transfo = A2 * (T * (R * A1));
-
- // Applique la transformation
- warpPerspective(source, destination, transfo, taille, INTER_CUBIC | WARP_INVERSE_MAP);
- // Affiche le résultat
- imshow(wndname2, destination);
-
- // le traitement
-
- // on construit contours1, l'image contenant les contours de l'image destination (en 3 channals)
- // et on construit aussi l'image gray : c'est l'image "destination" en noir et blanc.
- cvtColor(destination, contours1, CV_BGR2GRAY);
- GaussianBlur(contours1, contours1, Size(5,5), 1.5, 1.5);
- Canny(contours1, contours1, 20, 50, 3,false);
- Mat gray;
- cvtColor(destination, gray, CV_BGR2GRAY);
-
- // on construit contours2, l'image contenant les contours de l'image destination dans le channal 1 (ie Green)
- vector channels;
- split(destination, channels);
- GaussianBlur(channels[1], contours2, Size(5,5), 1.5, 1.5);
- Canny(contours2, contours2, 20, 50, 3,false);
-
- // on consruit l'image Ggray : c'est l'image channels[1] (Vert) en noir et blanc.
- // et Gray2, l'image channels[2] (Rouge) en noir et blanc
- // et ensuite Ressemblance qui correspond à l'image ou le jaune dans "destination" est en blanc dans cette image et les autres couleurs sont en noir
- // c est le vecteur contenant les contours dans l'image "Ressemblance"
- Mat Ggray,Ggray2;
- threshold(channels[1], Ggray, 172.,255., THRESH_BINARY);
- threshold(channels[2], Ggray2, 172.,255., THRESH_BINARY);
- Mat Ressemblance,contours3;
- Ressemblance=((Ggray)&(Ggray2));
- GaussianBlur(Ressemblance, contours3, Size(5,5), 1.5, 1.5);
- Canny(contours3, contours3, 20, 50, 3,false);
- vector > c;
- findContours(contours3, c, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
-
- // Detection des cercles dans les images contours1 et contours2,
- HoughCircles(contours1,cercles1,CV_HOUGH_GRADIENT,2,dminCentres,600.,190.,rayonMin,rayonMax);
- HoughCircles(contours2,cercles2,CV_HOUGH_GRADIENT,2,dminCentres,600.,190.,rayonMin,rayonMax);
-
- // Ces parametres dependent de la qualite de la camera,
- // ils donnent les valeurs (en int) possibles des pixelx dont la couleur est celle des pions.
- //int couleurPionsMax=2000000000;
- //int couleurPionsMin=0;
-
- // puis on dessine chaque cercle (detecte dans contours2) dans destination en ne gardant que les pions,
- // et on stocke le triplet (x,y,rayon) de ces pions dans le tableau pions.
- // la matrice rect sert à eliminer les cercles parasites.
- vector pions;
- Mat rect;
-
- for( size_t i = 0; i < cercles2.size(); i++ )
- {
- Point centre(cvRound(cercles2[i][0]), cvRound(cercles2[i][1]));
- int rayon = cvRound(cercles2[i][2]);
-
- //on construit rect la matrice rectangle entourant le cercle i dans "Ressemblance", et on le transforme en une matrice de 0 et de 1,
- getRectSubPix(Ressemblance, Size(2*rayon,2*rayon),centre,rect);
- rect/=255.;
-
- // et on fait des conditions pour ne garder que les pions, ici on se base sur les couleurs,
- // les valeurs des pixels sont détérminées par des tests sur plusieurs images, il faut les changer en fonction de la luminence de la table !
- if ((((Mat_)gray).at(centre)>104)&&(((Mat_)gray).at(centre)<248)&&(((Mat_)destination).at(centre)<218)&&(((Mat_)channels[0]).at(centre)>6)&&(((Mat_)channels[0]).at(centre)<182)&&(((Mat_)channels[2]).at(centre)>133)&&(((Mat_)channels[1]).at(centre)>103)&&(estBlanc(rect,0.25))){
- //if (estBlanc(rect,0.25)) {
-
- double hauteur=0; //c'est la hauteur du rectangle entourant le pion.
-
- // on cherche le rectangle entourant le pion,
- for (size_t k=0; k= 0)
- break;
- } else {
- // Quitte lorsque la touche echap est pressée
- if(waitKey(0) == 27)
- break;
- }
- }
-
- return 0;
-}
diff --git a/omap3/traitementImages/Vision/makefile b/omap3/traitementImages/Vision/makefile
deleted file mode 100644
index 50c4e484353252c088c47547c27c82db5286cf8a..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/Vision/makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-CC=g++
-CFLAGS=-c -Wall -g -O0 `pkg-config opencv --cflags`
-LDFLAGS=`pkg-config opencv --libs`
-SOURCES=Vision.cpp
-OBJECTS=$(SOURCES:.cpp=.o)
-EXECUTABLE=Vision.bin
-all: $(SOURCES) $(EXECUTABLE)
-
-$(EXECUTABLE): $(OBJECTS)
- $(CC) $(LDFLAGS) $(OBJECTS) -o $@
-
-.cpp.o:
- $(CC) $(CFLAGS) $< -o $@
-
-clean:
- rm *.o
diff --git a/omap3/traitementImages/Vision/seg.cpp b/omap3/traitementImages/Vision/seg.cpp
deleted file mode 100644
index a5ab596ba564676eeeb9ea8947c4063db3088f22..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/Vision/seg.cpp
+++ /dev/null
@@ -1,210 +0,0 @@
-#include "cv.h"
-#include "highgui.h"
-
-#include
-#include
-#include
-
-
-#define PI 3.14159265
-
-using namespace cv;
-using namespace std;
-
-int main(int argc, char** argv) {
-
- // les paramètres pour applatir l'image reçue de la camèra.
- // A regler selon la position de la camera sur le robot !
- int alpha_=30., beta_=90., gamma_=90.;
- int f_ = 500, dist_ =415;
-
- // indique si on a le flux video ou pas.
- bool video = false;
-
- // source est l'image vu par la camèra.
- // destination est l'image "vu" par le robot.
- // contours1 est l'image obtenue apres detection de contours sur l'image en 3 channals.
- // contours2 est l'image obtenue apres detection de contours sur l'image dans le channal G (Green).
- // lines1 est un vecteur contenant les coordonnées des extremites des segments detectes
-
- Mat source, destination, contours1, contours2;
- vector lines1,lines2;
- VideoCapture capture(0);
-
- // lecture des donnees :
- if (argc >= 2) {
- // Si au moins un argument est précisé, on essaye de charger l'image
- cout << "Lecture de " << argv[1] << endl;
- source = imread(argv[1]);
- } else {
- // Sinon on essaye d'ouvrir une capture de vidéo (webcam)
- cout << "Ouverture du flux vidéo..." << endl;
- if(!capture.isOpened()) {
- cout << "... échec :(" << endl;
- return -1;
- }
- cout << "... ça marche :)" << endl;
- video = true;
- }
-
- // juste pour les tests sur ordinateur.
- string wndname1 = "Source";
- string wndname2 = "destination";
- string wndname3 = "contours1";
- string wndname4 = "contours2";
- string wndname5 = "test";
- namedWindow(wndname1, 1);
- namedWindow(wndname2, 1);
- namedWindow(wndname3, 1);
- namedWindow(wndname4, 1);
- namedWindow(wndname5, 1);
-
- Mat test=Mat_(40,40);
- test=Scalar(0.,254.,255.);
- cout << test.at(20,20)[1]<< endl;
- imshow(wndname5, test);
-
- while(true) {
-
- // on transforme les angles en radians.
- double f, dist;
- double alpha, beta, gamma;
- alpha = ((double)alpha_ - 90.)*PI/180;
- beta = ((double)beta_ - 90.)*PI/180;
- gamma = ((double)gamma_ - 90.)*PI/180;
- f = (double) f_;
- dist = (double) dist_;
-
- if (video) {
- // Capture l'image de la caméra
- capture >> source;
- }
-
- // Affiche l'image
- imshow(wndname1, source);
-
- Size taille = source.size();
- double w = (double)taille.width, h = (double)taille.height;
-
- // Cette matrice projette l'image de la caméra (2D) dans l'espace (3D)
- // et la centre
- Mat A1 = (Mat_(4,3) <<
- 1, 0, -w/2,
- 0, 1, -h/2,
- 0, 0, 0,
- 0, 0, 1);
- // On définit les 3 matrices de rotation (une par axe)
- Mat RX = (Mat_(4, 4) <<
- 1, 0, 0, 0,
- 0, cos(alpha), -sin(alpha), 0,
- 0, sin(alpha), cos(alpha), 0,
- 0, 0, 0, 1);
- Mat RY = (Mat_(4, 4) <<
- cos(beta), 0, -sin(beta), 0,
- 0, 1, 0, 0,
- sin(beta), 0, cos(beta), 0,
- 0, 0, 0, 1);
- Mat RZ = (Mat_(4, 4) <<
- cos(gamma), -sin(gamma), 0, 0,
- sin(gamma), cos(gamma), 0, 0,
- 0, 0, 1, 0,
- 0, 0, 0, 1);
- // La matrice de rotation finale
- Mat R = RX * RY * RZ;
- // Matrice de translation : on place le plan à la distance "dist" de
- // la caméra
- Mat T = (Mat_(4, 4) <<
- 1, 0, 0, 0,
- 0, 1, 0, 0,
- 0, 0, 1, dist,
- 0, 0, 0, 1);
- // Matrice de la caméra : projette l'image en 2D et la centre
- Mat A2 = (Mat_(3,4) <<
- f, 0, w/2, 0,
- 0, f, h/2, 0,
- 0, 0, 1, 0);
- // La matrice de transformation est tout simplement le produit des
- // matrices
- Mat transfo = A2 * (T * (R * A1));
-
- // Applique la transformation
- warpPerspective(source, destination, transfo, taille, INTER_CUBIC | WARP_INVERSE_MAP);
- // Affiche le résultat
- imshow(wndname2, destination);
-
-
- // le traitement
-
- // on construit contours1, l'image contenant les contours de l'image destination (en 3 channals)
- cvtColor(destination, contours1, CV_BGR2GRAY);
- Mat gray;
- cvtColor(destination, gray, CV_BGR2GRAY);
- GaussianBlur(contours1, contours1, Size(5,5), 1.5, 1.5);
- Canny(contours1, contours1, 20, 50, 3,false);
-
- // on construit contours2, l'image contenant les contours de l'image destination dans le channal 1 ie Green
- vector channels;
- split(destination, channels);
- GaussianBlur(channels[1], contours2, Size(5,5), 1.5, 1.5);
- Canny(contours2, contours2, 20, 50, 3,false);
-
- IplImage *tranche,*src;
- src= cvLoadImage("d.JPG");
- tranche = cvCreateImage(cvGetSize(src),src->depth , 1);
- cvInRangeS(src,Scalar(0.,0.,0.),Scalar(0.,255.,0.),tranche);
- imshow(wndname5,src);
- imshow("test2",tranche);
-
- // les parametres ci-dessous dependent de la resolution de la camera, des parametres pour applatir.
- // ils servent a faire le lien entre la distance reelle sur la table et la distance mesure sur l'image.
-
- double dminCentres=40.; // la distance minimale entre les centres des cercles a detecter.
- int rayonMin=10; // le rayon minimal des cercles a detecter.
- int rayonMax=200; // le rayon maximal des cercles a detecter
-
-
- // Detection des cercles dans les images contours1 et contours2,
- HoughLinesP(contours1,lines1, 1, CV_PI/180,1, 13, 5 );
- //HoughLinesP(contours2, lines2, 1, CV_PI/180, 80, 30, 10 );;
-
- // Ces parametres dependent de la qualite de la camera,
- // ils donnent les valeurs (en int) possibles des pixelx dont la couleur est celle des pions.
- int couleurPionsMax=2000000000;
- int couleurPionsMin=0;
-
- // puis on dessine chaque cercle detecte dans contours2 en ne gardant que les pions,
- // et on stocke le triplet (x,y,rayon) de ces pions dans le tableau pions.
- vector pions;
-
- for( size_t i = 0; i < lines1.size(); i++ )
- {
- line( destination, Point(lines1[i][0], lines1[i][1]),
- Point(lines1[i][2], lines1[i][3]), Scalar(0,0,255), 3, 8 );
-
- }
- for( size_t i = 0; i < lines2.size(); i++ )
- {
- line( destination, Point(lines2[i][0], lines2[i][1]),
- Point(lines2[i][2], lines2[i][3]), Scalar(0,0,255), 3, 8 );
-
- }
-
- imshow(wndname2, destination);
- imshow(wndname3,contours1);
- imshow(wndname4,contours2);
- //cout <= 0)
- break;
- } else {
- // Quitte lorsque la touche echap est pressée
- if(waitKey(0) == 27)
- break;
- }
- }
-
- return 0;
-}
diff --git a/omap3/traitementImages/code_sara/applatir.cpp b/omap3/traitementImages/code_sara/applatir.cpp
deleted file mode 100644
index 6a31295bd825bfab311376a86c1f3bff2e9e0739..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/code_sara/applatir.cpp
+++ /dev/null
@@ -1,235 +0,0 @@
-//Matching avec cvMatchTemplate()
-#include
-#include
-#include
-
-#include "cv.h"
-#include "cxcore.h"
-#include "highgui.h"
-#include "iostream"
-using namespace std;
-using namespace cv;
-/*enregistrez une image template en appuyant sur 'espace'
-cette image sera recherchée dans la video issue de la webcam
-matchtemplate retourne une valeur de corrélation pour chaque pixel de l'image
-la valeur la plus grande de corrélation correspond très probablement au template recherché
-pour un matching plus précis, il est possible de régler le seuil à partir duquel il y a matching
-pour cela, observer dans la console la valeur maximale de corrélation pour chaque frame
-puis agir sur la trackbar de seuil*/
-
-int main() {
-
- //définition des images a utiliser
- IplImage *src,*hsv,*mask;//=cvCreateImage(cvSize(640,480), 8, 3);
- IplImage *templ;// = cvCreateImage(cvSize(200,300), 8, 3);
-
- templ = cvLoadImage("templ2.JPG");
- if(!templ)
- {
- printf("Erreur \n");
- return -1;
-
- }
-src = cvLoadImage("img3.JPG");
-if(!src)
- {
- printf("Erreur \n");
- return -1;
-
- }
-mask = cvCreateImage(cvGetSize(src),src->depth , 1);
-hsv = cvCloneImage(src);
-cvCvtColor(src, hsv, CV_BGR2HSV);
-
-
-
-cvInRangeS(hsv, cvScalar(9,80, 0), cvScalar(30,240,255),mask);
-
-
-cvSaveImage("mascara.JPG",mask);
-src = cvLoadImage("mascara.JPG"/*"mascara.JPG"*/);//src = cvLoadImage("img.JPG", 0);
- if(!src)
- {
- printf("Erreur \n");
- return -1;
-
- }
-
- //définition de la taille(largeur, hauteur) de l'image ftmp
- int iwidth = src->width - templ->width + 1;
- int iheight = src->height - templ->height + 1;
- IplImage *ftmp = cvCreateImage(cvSize(iwidth,iheight),IPL_DEPTH_32F,1);
-
- //seuil qui pourra être réglé avec un trackbar pour une détection plus pertinente
- double seuil = 80.0;
- //le trackbar n'acceptant que des valeurs entières on utilise 'seuil_int'
- int seuil_int = (int) seuil;
-//int center_x=0,center_y=0;
-CvPoint min_loc_ant, max_loc_ant;
-min_loc_ant.x=min_loc_ant.y=max_loc_ant.x=max_loc_ant.y=0;
-CvPoint min_loc, max_loc;
-min_loc_ant.x=min_loc_ant.y=max_loc_ant.x=max_loc_ant.y=2;
- //définitions de points
- CvPoint cadre_pt1 = cvPoint( (src->width - templ->width) / 2 , (src->height - templ->height) / 2);
- CvPoint cadre_pt2 = cvPoint(cadre_pt1.x + templ->width , cadre_pt1.y + templ->height);
-
-
-
- /* CvCapture* capture = cvCreateCameraCapture( CV_CAP_ANY );
- if( !capture )
- return 1;
- if(!cvGrabFrame( capture ))
- return 2;
-
-*/int key=1;
-
- cvSmooth(src,src,CV_MEDIAN,3);
- imshow("test",src);
-
- while (1/*(max_loc.x!=max_loc_ant.x) && (max_loc.y!=max_loc_ant.y) && (min_loc.x!=min_loc_ant.x) && (min_loc.x!=min_loc_ant.x)*/)
- {
- max_loc_ant.x=max_loc.x;
- max_loc_ant.y=max_loc.y;
- min_loc_ant.x=min_loc.x;
- min_loc_ant.y=min_loc.y;
- //si la touche 'échap' code ASCII '27' est appuyée, on quitte la boucle pour terminer le programme
- if( key == 27 ) break;
-
- //capture les frames dans l'image 'src'
- //src = cvRetrieveFrame( capture );
-
- //applique le filtre médian pour réduire le bruit
- // cvSmooth(src,src,CV_MEDIAN,3);
-
- //si la touche 'espace' code ASCII '32' est appuyée, on enregistre le template à partir de l'image 'src'
- //le template est un rectangle 200*300 centré dans l'image 'src'
- /* if (key == 32)
- {
- //dessine un rectangle noir autour de la zone qui est "photographiée"
- cvRectangle(src, cadre_pt1,cadre_pt2, cvScalar(0,0,0));
-
- //définition une région d'intérêt ROI
- CvRect roi = cvRect (cadre_pt1.x,cadre_pt1.y,templ->width,templ->height);
-
- //fixe la ROI à l'image
- cvSetImageROI(src,roi);
-
- //copie le rectangle sélectionné de 'src' à 'templ'
- cvCopy(src,templ);
-
- // libérer la Region Of Interest de 'src'
- cvResetImageROI(src);
- }*/
-
- cvMatchTemplate( src, templ, ftmp, 2);//trouver ce qui correspond à 'templ' dans 'src'
- //src: l'image source capturée par la caméra
- //templ: le template qui sera recherché dans l'image source
- //ftmp: l'image qui contient le réultat du calcul
- //CV_TM_CCOEFF_NORMED: la méthode de calcul utilisée ici permet un matching plus pertinent mais au prix de plus de calcul
-
-
- //retrouver dans 'ftmp' les coordonnées du point ayant une valeur maximale
- double min_val, max_val;
-
- cvMinMaxLoc(ftmp, &min_val, &max_val, &min_loc, &max_loc);
-
- //défnir un deuxième point à partir du premier point et de la taille de 'ftmp'
- CvPoint max_loc2 = cvPoint(max_loc.x + templ->width, max_loc.y + templ->height);//définir le deuxième point en fonction de la taille du template
-
- //trackelfbar pour régler le seuil
- cvCreateTrackbar( "seuil", "out", &seuil_int, 100, NULL );
-
- // 'seuil' appartient à [0 1] alors que 'seuil_int' appartient à [0 100] donc:
- seuil = (double) seuil_int / 100.0;
-
- //afficher la valeur maximale*100 de 'ftmp' pour chaque frame
- cout << max_val*100 << "===";
-
- //si la valeur maximale de 'ftmp' est supérieure au 'seuil'
- //dessiner un rectangle rouge utilisant les coordonnées des deux points 'max_loc' et 'max_loc2'
- if( max_val > seuil && max_val!=1 )
- {
- cvRectangle(src, max_loc,max_loc2, cvScalar(0,0,255));
- printf("\nx1=%d x2_x=%d y1=%d y2=%d",max_loc.x,max_loc2.x,max_loc.y,max_loc2.y);
- CvPoint centre;
- if(max_loc.x>max_loc2.x)
-
- centre.x=max_loc2.x+41;//(int)((max_loc.x-max_loc2.x)/2);
- else
- centre.x=max_loc.x+41;(int)((max_loc2.x-max_loc.x)/2);
- if(max_loc.y>max_loc2.y)
-
- centre.y=max_loc2.y+25;//(int)((max_loc.y-max_loc2.y)/2);
- else
-
- centre.y=max_loc2.y+25;//(int)((max_loc2.y-max_loc.y)/2);
-
- printf("\ncentrexl=%d centrey=%d\n",centre.x,centre.y);
-
-float distance = 0;
-int position=2;//0 gauche, 1 droite
-CvPoint ptoref;
-ptoref.x=((src->width)/2);
-ptoref.y=((src->height));
-if(ptoref.x>centre.x) //figure a gauche
-{
- position=0;
- distance=sqrt(((ptoref.x-centre.x)*(ptoref.x-centre.x))+((ptoref.y-centre.y)*(ptoref.y-centre.y)));
-}
-else //figure a droite
-{
- position=1;
- distance=sqrt(((centre.x-ptoref.x)*(centre.x-ptoref.x))+((ptoref.y-centre.y)*(ptoref.y-centre.y)));
-}
-CvPoint position_new;
-position_new.x=((src->height)-(centre.y));
-position_new.y=(centre.x-(src->width/2));
-float distance2=sqrt((position_new.x*position_new.x)+(position_new.y*position_new.y));
-printf("\n\ndistance1=%f distance2=%f",distance,distance2);
-if(position==0)
- printf("\nFigure detecté à gauche à une distance de %f dans les coordonnés[%d,%d]",distance,position_new.x,position_new.y);
-else
- printf("\nFigure detecté à droite à une distance de %f dans les coordonnés[%d,%d]",distance,position_new.x,position_new.y);
-
-/*int hauteur=350;
-int alfa=15;
-int d_horizontale=1000;//cm
-int distance2=((350*cos30)/sin30);
-*/
-
-
-
-
-
-
-
-
-
-
-
- }
-
-
- cvNamedWindow( "out", CV_WINDOW_AUTOSIZE );
- cvShowImage( "out", src );
- cvNamedWindow( "template", CV_WINDOW_AUTOSIZE );
- cvShowImage( "template", templ );
-
- // On attend 10 ms
- key = cvWaitKey(1000);
-
- // On essaye de capturer la frame suivante
- // if(!cvGrabFrame( int centre_y=(int)((max_loc.y-max_loc2.y)/2);capture )) key = 27;
-
- }
-while(1);
- // On détruit les fenêtres créées
- cvDestroyAllWindows();
-
- // On détruit la capture
- // cvReleaseCapture( &capture );
-
- return 0;
-
-}
-
diff --git a/omap3/traitementImages/code_sara/makefile b/omap3/traitementImages/code_sara/makefile
deleted file mode 100644
index 9ea2d0c17605bb6739418c3782c7c98316a416e3..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/code_sara/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-C=g++
-CFLAGS=-c -Wall -g -O0 `pkg-config opencv --cflags`
-LDFLAGS=`pkg-config opencv --libs`
-SOURCES=applatir.cpp
-OBJECTS=$(SOURCES:.cpp=.o)
-EXECUTABLE=applatir.bin
-
-all: $(SOURCES) $(EXECUTABLE)
-
-$(EXECUTABLE): $(OBJECTS)
- $(CC) $(LDFLAGS) $(OBJECTS) -o $@
-
-.cpp.o:
- $(CC) $(CFLAGS) $< -o $@
-
-clean:
- rm *.o
diff --git a/omap3/traitementImages/code_sara2/applatir.cpp b/omap3/traitementImages/code_sara2/applatir.cpp
deleted file mode 100644
index 7c8f21a105a9b812ea05095f10c1993d90197e3b..0000000000000000000000000000000000000000
--- a/omap3/traitementImages/code_sara2/applatir.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-//Matching avec cvMatchTemplate()
-#include
-#include
-#include
-
-#include "cv.h"
-#include "cxcore.h"
-#include "highgui.h"
-#include "iostream"
-using namespace std;
-
-/*enregistrez une image template en appuyant sur 'espace'
-cette image sera recherchée dans la video issue de la webcam
-matchtemplate retourne une valeur de corrélation pour chaque pixel de l'image
-la valeur la plus grande de corrélation correspond très probablement au template recherché
-pour un matching plus précis, il est possible de régler le seuil à partir duquel il y a matching
-pour cela, observer dans la console la valeur maximale de corrélation pour chaque frame
-puis agir sur la trackbar de seuil*/
-
-int main() {
-
- //définition des images a utiliser
- IplImage *src,*hsv,*mask;//=cvCreateImage(cvSize(640,480), 8, 3);
- IplImage *templ;// = cvCreateImage(cvSize(200,300), 8, 3);
-
- templ = cvLoadImage("motif.JPG");
- if(!templ)
- {
- printf("Erreur \n");
- return -1;
-
- }
-src = cvLoadImage("image.JPG");
-if(!src)
- {
- printf("Erreur \n");
- return -1;
-
- }
-
-
-
- //définition de la taille(largeur, hauteur) de l'image ftmp
- int iwidth = src->width - templ->width + 1;
- int iheight = src->height - templ->height + 1;
- IplImage *ftmp = cvCreateImage(cvSize(iwidth,iheight),IPL_DEPTH_32F,1);
-
- //seuil qui pourra être réglé avec un trackbar pour une détection plus pertinente
- double seuil = 80.0;
- //le trackbar n'acceptant que des valeurs entières on utilise 'seuil_int'
- int seuil_int = (int) seuil;
-//int center_x=0,center_y=0;
-CvPoint min_loc_ant, max_loc_ant;
-min_loc_ant.x=min_loc_ant.y=max_loc_ant.x=max_loc_ant.y=0;
-CvPoint min_loc, max_loc;
-min_loc_ant.x=min_loc_ant.y=max_loc_ant.x=max_loc_ant.y=2;
-
-
-max_loc_ant.x=-1;
-max_loc_ant.y=-1;
-min_loc_ant.x=-1;
-min_loc_ant.y=-1;
-int key=1;
-
- cvSmooth(src,src,CV_MEDIAN,3);
-int repite=0,premiermotiftrouve=0;
-
- while (repite==0)
- {
-
-
- cvMatchTemplate( src, templ, ftmp, CV_TM_CCOEFF_NORMED);//trouver ce qui correspond à 'templ' dans 'src'
- //src: l'image source capturée par la caméra
- //templ: le template qui sera recherché dans l'image source
- //ftmp: l'image qui contient le réultat du calcul
- //CV_TM_CCOEFF_NORMED: la méthode de calcul utilisée ici permet un matching plus pertinent mais au prix de plus de calcul
-
-
- //retrouver dans 'ftmp' les coordonnées du point ayant une valeur maximale
- double min_val, max_val;
-
- cvMinMaxLoc(ftmp, &min_val, &max_val, &min_loc, &max_loc);
-
- //défnir un deuxième point à partir du premier point et de la taille de 'ftmp'
- CvPoint max_loc2 = cvPoint(max_loc.x + templ->width, max_loc.y + templ->height);//définir le deuxième point en fonction de la taille du template
-
- //trackelfbar pour régler le seuil
- cvCreateTrackbar( "seuil", "out", &seuil_int, 100, NULL );
-
- // 'seuil' appartient à [0 1] alors que 'seuil_int' appartient à [0 100] donc:
- seuil = (double) seuil_int / 100.0;
-
-
-
- //si la valeur maximale de 'ftmp' est supérieure au 'seuil'
- //dessiner un rectangle rouge utilisant les coordonnées des deux points 'max_loc' et 'max_loc2'
- if( max_val > seuil && max_val!=1 )
- {
- if(premiermotiftrouve==0)
- {
- max_loc_ant.x=max_loc.x;
- max_loc_ant.y=max_loc.y;
- min_loc_ant.x=min_loc.x;
- min_loc_ant.y=min_loc.y;
- premiermotiftrouve=1;
- }
- else if((max_loc.x==max_loc_ant.x) && (max_loc.y==max_loc_ant.y) && (min_loc.x==min_loc_ant.x) && (min_loc.x==min_loc_ant.x))
- {
- repite=1;
- }
- cvRectangle(src, max_loc,max_loc2, cvScalar(0,0,255));
- printf("\nx1=%d x2_x=%d y1=%d y2=%d",max_loc.x,max_loc2.x,max_loc.y,max_loc2.y);
-
-
- }
-
-
- cvNamedWindow( "out", CV_WINDOW_AUTOSIZE );
- cvShowImage( "out", src );
- cvNamedWindow( "template", CV_WINDOW_AUTOSIZE );
- cvShowImage( "template", templ );
-
- // On attend 10 ms
- key = cvWaitKey(1000);
- }
-while(1);
- // On détruit les fenêtres créées
- cvDestroyAllWindows();
-
- return 0;
-
-}
-
diff --git a/petit_robot/Capteur.cpp b/petit_robot/Capteur.cpp
deleted file mode 100644
index 2eec77d6e767756c64627babebebc895570a24cc..0000000000000000000000000000000000000000
--- a/petit_robot/Capteur.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "Capteur.h"
-#include "Arduino.h"
-#include "Sharp.h"
-#include "Ultrason.h"
-
-Capteur::Capteur(int capteurPin) : capteurPin(capteurPin), valeur(0)
-{
- //capteurPin = capteurPin;
- //valeur = 0;
-}
-
-Capteur::Capteur(int capteurPin, int valeur) : capteurPin(capteurPin), valeur(valeur)
-{
- //capteurPin = capteurPin;
- //valeur = 0;
-}
-
-Capteur::~Capteur()
-{
-
-}
-
-int Capteur::GetValue()
-{
- Update();
- return valeur;
-}
-
-void Capteur::Update()
-{
-
-}
diff --git a/petit_robot/Capteur.h b/petit_robot/Capteur.h
deleted file mode 100644
index 0781424600482c130d1bd77f82e914765c348dac..0000000000000000000000000000000000000000
--- a/petit_robot/Capteur.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef DEF_CAPTEUR // Si la constante n'a pas été définie` le fichier n'a jamais été inclus
-#define DEF_CAPTEUR // On définit la constante pour que la prochaine fois le fichier ne soit plus inclus
-
-
-
-class Capteur
-{
- public:
-
- Capteur(int capteurPin);
- Capteur(int capteurPin, int valeur);
- ~Capteur();
- int GetValue();
- void Update();
-
- private:
-
- protected://Les capteurs sharp peuvent modifier leurs "valeur".
-
- int valeur; //Distance ou autre, la valeur renvoyée par le capteur.
- int capteurPin;
-};
-
-#endif
diff --git a/petit_robot/Detection.cpp b/petit_robot/Detection.cpp
deleted file mode 100644
index d53688ec56c9c039aadfa5c463cdd2178e0f32f9..0000000000000000000000000000000000000000
--- a/petit_robot/Detection.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-#include "Detection.h"
-#include "Arduino.h"
-#include "Capteur.h"
-#include "Ultrason.h"
-#include "Sharp.h"
-
-//enum sharpDetectant { AUCUN, GAUCHE, DROITE, TTAVANT, ARRIERE, TTGAUCHE, TTDROITE, TT, AUCUNETHAUT, GAUCHEETHAUT, DROITEETHAUT, TTAVANTETHAUT, ARRIEREETHAUT, TTGAUCHEETHAUT, TTDROITEETHAUT, TTETHAUT, AUCUNETMILIEU, GAUCHEETMILIEU, DROITEETMILIEU, TTAVANTETMILIEU, ARRIEREETMILIEU, TTGAUCHEETMILIEU, TTDROITEETMILIEU, TTETMILIEU, AUCUNETHAUTETMILIEU, GAUCHEETHAUTETMILIEU, DROITEETHAUTETMILIEU, TTAVANTETHAUTETMILIEU, ARRIEREETHAUTETMILIEU, TTGAUCHEETHAUTETMILIEU, TTDROITEETHAUTETMILIEU, TTETHAUTETMILIEU};
-
-//enum sharpDetectant { AUCUN, GAUCHE, DROITE, TTAVANT, ARRIERE, TTGAUCHE, TTDROITE, TT };
-
-enum numeroSharp { GAUCHE, DROITE, MILIEU, HAUT, ARRIERE };
-
-enum sens { AVANCER, RECULER, TOURNEGAUCHE, TOURNEDROITE, AVANCERBOUTEILLE };
-/*#define pinSharpAvG A6
-#define pinSharpAvD A4
-#define pinSharpArr A7
-#define pinUltrason 10*/
-#define seuilSharpAvG 350
-#define seuilSharpAvD 350
-#define seuilSharpMilieu 350
-#define seuilSharpHaut 350
-#define seuilSharpArr 350
-
-
-Detection::Detection()
-{
- for (int initcvqqch = 0 ; initcvqqchVoitQQch())
- {
- capteurVoitQQch[iLireCapteurs]--;//On décrémente si on ne voit rien.
- }
- else
- {
- capteurVoitQQch[iLireCapteurs]=8;//Sinon on remet le compteur à 8.
- }
-
- if(capteurVoitQQch[iLireCapteurs]==0)
- {
- capteurVoitObstacle[iLireCapteurs]=0;
- }
- }
- else//Si on n'est pas devant un obstacle
- {
- if(capteurSharp[iLireCapteurs]->VoitQQch())
- {
- capteurVoitQQch[iLireCapteurs]++;//On décrémente si on ne voit rien.
- }
- else
- {
- capteurVoitQQch[iLireCapteurs]=0;//Sinon on remet le compteur à 8.
- }
-
- if(capteurVoitQQch[iLireCapteurs]==8)
- {
- capteurVoitObstacle[iLireCapteurs]=1;
- }
- }
- }
- /*
- capteurVoitQQch[GAUCHE]=min(8,(capteurVoitQQch[GAUCHE]+1)*capteurAvantG->VoitQQch());
-
- capteurVoitQQch[DROITE]=min(8,(capteurVoitQQch[DROITE]+1)*capteurAvantD->VoitQQch());
-
- capteurVoitQQch[MILIEU]=min(8,(capteurVoitQQch[MILIEU]+1)*capteurMilieu->VoitQQch());
-
- capteurVoitQQch[HAUT]=min(8,(capteurVoitQQch[MILIEU]+1)*capteurHaut->VoitQQch());
-
- capteurVoitQQch[ARRIERE]=min(8,(capteurVoitQQch[ARRIERE]+1)*capteurArriere->VoitQQch());*/
-
- /*capteurVoitQQch[GAUCHE]=capteurAvantG->VoitQQch();
-
- capteurVoitQQch[DROITE]=capteurAvantD->VoitQQch();
-
- capteurVoitQQch[MILIEU]=capteurMilieu->VoitQQch();
-
- capteurVoitQQch[HAUT]=capteurHaut->VoitQQch();
-
- capteurVoitQQch[ARRIERE]=capteurArriere->VoitQQch();*/
-
-}
diff --git a/petit_robot/Detection.h b/petit_robot/Detection.h
deleted file mode 100644
index 0c61e7610ae579e278268cf5ccd06fe796f0a014..0000000000000000000000000000000000000000
--- a/petit_robot/Detection.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef DEF_DETECTION // Si la constante n'a pas été définie` le fichier n'a jamais été inclus
-#define DEF_DETECTION // On définit la constante pour que la prochaine fois le fichier ne soit plus inclus
-
-#include "Sharp.h"
-#include "Ultrason.h"
-
-#define NOMBRECAPTEUR 5
-
-
-class Detection
-{
- public:
-
- Detection();
- ~Detection();
- int JePeuxAvancer(int sensVoulu);
- void LireCapteursDistance();
-
- private:
-
-
- int capteurVoitQQch[NOMBRECAPTEUR];
- int capteurVoitObstacle[NOMBRECAPTEUR];//tableau permettant de pallier le problème du bruit : il faut capter 8 fois d'affillée pour voir un obstacle
- //Ultrason ping;
- /*Sharp *capteurAvantG;
- Sharp *capteurAvantD;
- Sharp *capteurMilieu;
- Sharp *capteurHaut;
- Sharp *capteurArriere;*/
- Sharp **capteurSharp;
-
-
-};
-
-#endif
-
diff --git a/petit_robot/Diode.cpp b/petit_robot/Diode.cpp
deleted file mode 100644
index 2290d9b405786dd641b48349e9f17de554519c92..0000000000000000000000000000000000000000
--- a/petit_robot/Diode.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "Diode.h"
-#include "Arduino.h"
-
-//using namespace std;
-
-Diode::Diode(int diodePin)//Constructeur
-{
- int duree = 0;
- diodePin = diodePin;
-}
-
-Diode::~Diode()//Destructeur
-{
-
-}
-
-//On éteind les diodes qui doivent l'etre
-//permet d'avoir des diodes allumées pendant des cycles entiers, pour qu'elles soient suffisament lumineuses.
-void Diode::DiodeOff()
-{
-
- if(dureeEncoreAllumee>1)
- {
- dureeEncoreAllumee--;
- }
- else
- {
- if(dureeEncoreAllumee==1)
- {
- digitalWrite(diodePin,LOW);
- dureeEncoreAllumee--;
- }
- }
-}
-
-void Diode::DiodeOn(int duree)
-{
- dureeEncoreAllumee=duree;
- digitalWrite(diodePin,HIGH);
-}
-
diff --git a/petit_robot/Diode.h b/petit_robot/Diode.h
deleted file mode 100644
index a1c8ae423293e7dfffce4c11dd02def5549c0064..0000000000000000000000000000000000000000
--- a/petit_robot/Diode.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef DEF_DIODE // Si la constante n'a pas été définie` le fichier n'a jamais été inclus
-#define DEF_DIODE // On définit la constante pour que la prochaine fois le fichier ne soit plus inclus
-
-
-class Diode
-{
- public:
-
- Diode(int diodePin);
- ~Diode();
- void DiodeOff();//eteind une diode
- void DiodeOn(int duree);//allume une diode
-
- private:
-
- int dureeEncoreAllumee;//Correspond au nombre de cycles pendant lesquels la diode va continuer à etre allumée.
- int diodePin;//le pin de l'arduino auquel est attché la diode.
-
-};
-
-#endif
-
diff --git a/petit_robot/Petit_robot_2_0_1_sanscapteur.ino b/petit_robot/Petit_robot_2_0_1_sanscapteur.ino
deleted file mode 100644
index 83d4048d264d4a9bd6cc1809dcbdf8f9fac99812..0000000000000000000000000000000000000000
--- a/petit_robot/Petit_robot_2_0_1_sanscapteur.ino
+++ /dev/null
@@ -1,1027 +0,0 @@
-#include
-#include "Diode.h"
-#include "Detection.h"
-#include
-
-#define AUTO 0
-#define RATTRAPAGE 1
-
-
- // DEFINITION DES CONSTANTES //
-
-const int pinRoueG = 5;
-const int pinRoueD = 3;
-
-
-
-const int pinCalClaire = 9;
-const int pinCalObs = 7;
-const int pinCalGD = 6;
-
-//##### DFRduino nano
-/*const int pinCCG = A0;//pin du CapteurCouleurGauche
-const int pinCCD = A1;
-
-const int pinTirr = A5;
-
-const int pinSharpAvG = A6;
-const int pinSharpAvD = A4;
-const int pinSharpArr = A7;*/
-
-//##### Arduino nano
-const int pinCCG = A0;//pin du CapteurCouleurGauche
-const int pinCCD = A7;
-
-const int pinTirr = A2;
-
-const int pinSharpAvG = A1;//attention, aussi défini dans detection
-const int pinSharpAvD = A3;
-const int pinSharpArr = A6;
-
-const int pinLed1 = 8;
-const int pinLed2 = 11;
-const int pinLed3 = 12;
-
-const int pinPing = 10;
-
-enum couleurMatch { ROUGE, VIOLET };
-enum sharpDetectant { AUCUN, GAUCHE, DROITE, TTAVANT, ARRIERE, TTGAUCHE, TTDROITE, TT, AUCUNETHAUT, GAUCHEETHAUT, DROITEETHAUT, TTAVANTETHAUT, ARRIEREETHAUT, TTGAUCHEETHAUT, TTDROITEETHAUT, TTETHAUT, AUCUNETMILIEU, GAUCHEETMILIEU, DROITEETMILIEU, TTAVANTETMILIEU, ARRIEREETMILIEU, TTGAUCHEETMILIEU, TTDROITEETMILIEU, TTETMILIEU, AUCUNETHAUTETMILIEU, GAUCHEETHAUTETMILIEU, DROITEETHAUTETMILIEU, TTAVANTETHAUTETMILIEU, ARRIEREETHAUTETMILIEU, TTGAUCHEETHAUTETMILIEU, TTDROITEETHAUTETMILIEU, TTETHAUTETMILIEU};
-enum sens { AVANCER, RECULER, TOURNEGAUCHE, TOURNEDROITE, AVANCERBOUTEILLE };
-
-int couleurRobot = 0;
-
- // PARAMETRES DE DEPLACEMENT AUTOMATIQUE //
-
-const unsigned long dureeMatch = 89000;// 89 secondes : mieux vaut ne pas prendre de risques
-//const unsigned long dureeMatch = 9000;// 89 secondes : mieux vaut ne pas prendre de risques
-unsigned long tempDepartMatch = 0;
-
-const int paramArretRoueG = 90;
-const int paramArretRoueD = 90;
-
-
- const int TTDroitRoueG = 110;
-const int TTDroitRoueD = 69;//70à
-
-const int TournerGaucheRoueG = 82;
-const int TournerGaucheRoueD = 82;
-const int TournerGaucheTemps = 865;
-
-const int TournerDroiteRoueG = 98;
-const int TournerDroiteRoueD = 98;
-const int TournerDroiteTemps = 865;
-
-const int ReculerRoueG = 77;
-const int ReculerRoueD = 110;
-
-const int ReculerLentRoueG = 85;
-const int ReculerLentRoueD = 95;
-
-
-
-
-
-
-
-const unsigned long tempsMaxCapteurs = 10;
-
- // PARAMETRES DE SUIVEUR DE LIGNE //
-
-const int valMoyenneG = 0;
-const int valMoyenneD = 0;
-
-//pour lancer le rattrapa(ge
-int seuilHautRattrapageG = 0;
-int seuilHautRattrapageD = 0;
-int seuilBasRattrapageG = 0;
-int seuilBasRattrapageD = 0;
-
-int basGauche=0;
-int basDroite=0;
-int hautGauche=0;
-int hautDroite=0;
-
-int seuilHautDifferenceRattrapageG=0;
-int seuilHautDifferenceRattrapageD=0;
-
-const int paramDiff = 2;
-
-const int paramD = 0;
-const int paramG = 0;
-
-const int offsetD = 0;
-const int offsetG = 0;
-
-const float paramSeuilHautRattrapage = 0.99;
-const float paramSeuilBasRattrapage = 1.003;
-
-
-//pour arreter le rattrppage
-const int tempMaxRattrappage = 1000;
-
-int seuilHautRattrapeeG = 0;
-int seuilHautRattrapeeD = 0;
-int seuilBasRattrapeeG = 0;
-int seuilBasRattrapeeD = 0;
-
-const float paramSeuilHautRattrapee = 0.8;
-const float paramSeuilBasRattrapee = 1.1;
-
- // PARAMETRES DES SHARPS //
-/*
-const int seuilSharpAvG = 200;
-const int seuilSharpAvD = 200;
-const int seuilSharpArr = 200;*/
-
-const int distanceMin = 15;
-
-
-
-
-
- // DEFINITION DES VARIBABLES //
-
-Servo myservoRoueGauche;
-Servo myservoRoueDroite;
-
-int bouteilleUneAPousser=0;
-int utiliseLigne=0;
-
-
- // VARIABLES DIODES //
- Diode diode1(pinLed1), diode2(pinLed2), diode3(pinLed3);
- Detection detection;
-
-
-
-int cycleAllumeDiode1 = 0;//Nombre de cycle de boucle pendant lesquels la diode 1 doit etre allumée : permet d'avoir des diodes allumées pendant des cycles entiers, pour qu'elles soient suffisament lumineuses.
-int cycleAllumeDiode2 = 0;
-int cycleAllumeDiode3 = 0;
-
- // PROTOPTYPES DES FONCTIONS //
-
- void SuivreLigne();
- int DeplacementAuto(char* dir, unsigned long duree, int modeRattrappageLigne);
- void Rattrapage(char* cote);
- int LireCapteursSharp();
- void Arret();
- long microsecondsToCentimeters(long microseconds);
- int DetectionUltrason();
- int JePeuxAvancer(int sensVoulu);
- void CalibrationAuto();
- void DiodesOff();
- void DiodeOn(int numeroLed, int duree);
- void EnregistreDonnee(int adresse, int valeur);
- int LireDonnee(int adresse);
-
-
-
-void setup() //premiere fonction appelée.
-{
- // initialize serial communication:
- Serial.begin(9600);
- Serial.println(10, DEC);
-
-
- myservoRoueGauche.attach(pinRoueG,200,2400);//initialisation des servos //100,1500 || 220,2400
- myservoRoueDroite.attach(pinRoueD,220,2400); //80,1500 || 200,2400
- myservoRoueDroite.write(90);//90
- myservoRoueGauche.write(90);//90
-
-
- pinMode(pinTirr, INPUT);//la tirette est une entrée d'information
- pinMode(pinCalClaire, INPUT);
- pinMode(pinCalObs, INPUT);
- pinMode(pinCalGD, INPUT);
- pinMode(pinLed1,OUTPUT);
- pinMode(pinLed2,OUTPUT);
- pinMode(pinLed3,OUTPUT);
-
- pinMode(13, OUTPUT);
-
-
- //Initialisation de la calibration capteurs couleurs à partir de l'EEPROM
- seuilHautRattrapeeG=LireDonnee(0);
- seuilHautRattrapageG=LireDonnee(1);
- seuilHautRattrapeeD=LireDonnee(2);
- seuilHautRattrapageD=LireDonnee(3);
-
- seuilBasRattrapeeG=LireDonnee(4);
- seuilBasRattrapageG=LireDonnee(5);
- seuilBasRattrapeeD=LireDonnee(6);
- seuilBasRattrapageD=LireDonnee(7);
-
- seuilHautDifferenceRattrapageG=LireDonnee(8);
- seuilHautDifferenceRattrapageD=LireDonnee(9);
-
- int tirretteAJamaisEtePresente=1;
-
- while(digitalRead(pinTirr)>0 || tirretteAJamaisEtePresente)//On attend que la tirette soit tirée pour débuter le match. Il faut aussi qu'elle ait été presente (sinon le robot partirai direct si allumé sans tirrette.
- {
- //Calibration : 2 modes : automatique (les 2 interrupteurs de calib' obscure (noir) et clair (bleu) sont activés) : on lance "CalibrationAuto".
- //manuelle : seul un interrupteur de calib' (obs OU clair) est activé : on calibre le capteur gauche OU droit, selon l'interrupteur de choix.
-
- diode1.DiodeOff();
- diode2.DiodeOff();
- diode3.DiodeOff();
- DiodesOff();//On éteind les diodes qui doivent l'etre
-
- if(digitalRead(pinCalClaire)>0)
- {
-
-
- /*if(digitalRead(pinCalObs)>0)//calibration auto//Commentarisé : l'ancienne calibration manuelle.
- {*/
- CalibrationAuto();
- while((digitalRead(pinCalClaire)>0/* || digitalRead(pinCalObs)>0*/) && (digitalRead(pinTirr)>0 || tirretteAJamaisEtePresente))// On attend que l'utilisateur mette le robot en attente d'une nouvelle calibration (les deux interrupteurs à l'arrt ; ou que le match commence.
- {
- //On regarde si la tirrette est là :
- if (digitalRead(pinTirr)>0)
- {
- tirretteAJamaisEtePresente=0;//Alors on n'a plus qu'à attendre que la tirrette soit tirée.
- }
- delay(1);
- }
- //}
- /*
- else//Calibration manuelle
- {
- if(digitalRead(pinCalGD)>0)
- {
- seuilBasRattrapeeG=paramSeuilBasRattrapee*analogRead(pinCCG);
- EnregistreDonnee(4, seuilBasRattrapeeG);
-
- seuilBasRattrapageG=paramSeuilBasRattrapage*analogRead(pinCCG);
- EnregistreDonnee(seuilBasRattrapageG, 5);
- Serial.println(analogRead(pinCCG));
- Serial.println(9);
- }
-
-
- else
- {
- seuilBasRattrapeeD=paramSeuilBasRattrapee*analogRead(pinCCD);
- EnregistreDonnee(6, seuilBasRattrapeeD);
-
- seuilBasRattrapageG=paramSeuilBasRattrapage*analogRead(pinCCD);
- EnregistreDonnee(7, seuilBasRattrapageD);
- Serial.println(analogRead(pinCCD));
- Serial.println(8);
- }
- }
- }
- else if(digitalRead(pinCalObs)>0)
- {
- if(digitalRead(pinCalClaire)>0)//calibration auto
- {
- CalibrationAuto();
- while((digitalRead(pinCalClaire)>0 || digitalRead(pinCalObs)>0) && digitalRead(pinTirr)>0)// On attend que l'utilisateur mette le robot en attente d'une nouvelle calibration (les deux interrupteurs à l'arrt ; ou que le match commence.
- {
- delay(1);
- }
- }
-
- else//Calibration manuelle
- {
- if(digitalRead(pinCalGD)>0)
- {
- seuilHautRattrapeeG=paramSeuilHautRattrapee*analogRead(pinCCG);
- EnregistreDonnee(0, seuilHautRattrapeeG);
-
- seuilHautRattrapageG=paramSeuilHautRattrapage*analogRead(pinCCG);
- EnregistreDonnee(1, seuilHautRattrapageG);
- Serial.println(analogRead(pinCCG));
- Serial.println(7);
- }
- else
- {
- seuilHautRattrapeeD=paramSeuilHautRattrapee*analogRead(pinCCD);
- EnregistreDonnee(2, seuilHautRattrapeeD);
-
- seuilHautRattrapageD=paramSeuilHautRattrapage*analogRead(pinCCD);
- EnregistreDonnee(3, seuilHautRattrapageD);
- Serial.println(analogRead(pinCCD));
- Serial.println(6);
- }
- }*/
- }
-
- //On regarde si la tirrette est là :
- if (digitalRead(pinTirr)>0)
- {
- tirretteAJamaisEtePresente=0;//Alors on n'a plus qu'à attendre que la tirrette soit tirée.
- }
- delay(1);
- }
-
- tempDepartMatch=millis();//Référence pour s'arreter 90s plus tard.
-
-
-
- //Couleur de la zone de départ.
- if(digitalRead(pinCalGD)==0)
- {
- couleurRobot = VIOLET;
-
- }
- else
- {
- couleurRobot = ROUGE;
- }
- if(digitalRead(pinCalObs)==0)
- {
- utiliseLigne = 1;
- }
- else
- {
- utiliseLigne = 0;
- }
-}
-
-
-
-
-void loop()//Boucle principale, appelée dès que setup() est fini.
-{
-
-
-
-
- /*DeplacementAuto("tout droit", 10000, 2);
- Arret();
- delay(1000);
-
- DeplacementAuto("reculer", 2000, AUTO);
- Arret();
- delay(10000);*/
-
-
-
- if(utiliseLigne)//Si on est en mode suiveur de ligne
- {
- //SEQUENCE INITIALE POUR REJOINDRE LA LIGNE.
-
-
- //reculer
-
- DeplacementAuto("tout droit", 2500, AUTO);
- Arret();
- delay(100);
-
-
- if(couleurRobot==VIOLET)
- {
- //tourner à droite :
- DeplacementAuto("droite", 900, AUTO);
-
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 900, AUTO);
- }
-
-
- //ttdroit
- DeplacementAuto("tout droit", 1000, AUTO);
-
- //VERRIFICATION QU'ON EST BIEN SUR LA LIGNE
- if(couleurRobot==VIOLET)
- {
- int ligne=DeplacementAuto("gauche", 1200, 1);
-
- if(ligne==10 || ligne==0)//Si on n'a pas rattrappé la ligne en tournant à droite
- {
- ligne=DeplacementAuto("droite", 2400, 1);
-
- if(ligne==10 || ligne==0)//Si on n'a pas rattrappé la ligne en tournant à gauche
- {
- DeplacementAuto("gauche", 1250, 1);//On se recentre et on va tout droit... en esperant que ça passe...
- }
- else//Sinon, si on a bien rattrappé la ligne
- {
- DeplacementAuto("tout droit", 600, AUTO);
- DeplacementAuto("gauche", 400, AUTO);
- }
- }
-
-
- }
- else
- {
- int ligne=DeplacementAuto("droite", 1200, 1);
-
- if(ligne==10 || ligne==0)//Si on n'a pas rattrappé la ligne en tournant à droite
- {
- ligne=DeplacementAuto("gauche", 2400, 1);
-
- if(ligne==10 || ligne==0)//Si on n'a pas rattrappé la ligne en tournant à gauche
- {
- DeplacementAuto("droite", 1250, 1);//On se recentre et on va tout droit... en esperant que ça passe...
- }
- }
- else//Sinon, si on a bien rattrappé la ligne
- {
-
- }
-
- }
- Arret();
- delay(100);
-
-
-
- // SEQUENCE DE SUIVAGE DE LIGNE //
-
- // while(!bouteilleUnePoussee)
- unsigned long tempsDepartSuivageLigne = millis();
- unsigned long tempsPasseArreteSuivreLigne = 0;
- unsigned long debutArretSuivreLigne = 0;
- unsigned long tempsMiniSuivageLigne = 8000;//Le temps minimal qu'il faut au robot pour suivre la ligne : permet de ne pas taper un robot par erreur
- unsigned long tempsActuel = 0;
- int dejaArreteSuiveurLigne = 0;
- while(!bouteilleUneAPousser)
- {
- diode1.DiodeOff();
- diode2.DiodeOff();
- diode3.DiodeOff();
- DiodesOff();//On éteind les diodes qui doivent l'etre
- tempsActuel=millis();
- if(tempsActueltempsMiniSuivageLigne && (detection.JePeuxAvancer(AVANCERBOUTEILLE)==2))//-tempsPasseArreteSuivreLigne
- {
- bouteilleUneAPousser=1;
- }
- else
- {
-
- Arret();
- if(!dejaArreteSuiveurLigne)//si c'est le début de l'arret
- {
- dejaArreteSuiveurLigne=1;
- debutArretSuivreLigne=tempsActuel;
- }
-
- }
- }
- }
- else//Si le match est fini
- {
- while(1)
- {
- Arret();//on arrete tout
- delay(10);
- }
- }
-
- }
- Arret();
- delay(1000);
-
-
- }
- //#################################################################################
- else//Sinon, si on est en mode sans ligne,
- {
- DeplacementAuto("tout droit", 2700, AUTO);
- Arret();
- delay(300);
-
- if(couleurRobot==VIOLET)
- {
- //tourner à droite :
- DeplacementAuto("droite", 900, AUTO);
-
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 900, AUTO);
- }
-
- Arret();
- delay(300);
- DeplacementAuto("reculer", 800, AUTO);//5000
- /* Arret();
- delay(200);*/
- DeplacementAuto("reculer lent", 1200, AUTO);//5000
- Arret();
- delay(300);
- DeplacementAuto("tout droit", 6200, AUTO);
-
- if(couleurRobot==ROUGE)
- {
- //tourner à droite :
- DeplacementAuto("droite", 900, AUTO);
-
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 900, AUTO);
- }
-
- Arret();
- delay(300);
- DeplacementAuto("reculer", 1000, AUTO);//5000
- /* Arret();
- delay(200);*/
- DeplacementAuto("reculer lent", 1200, AUTO);//5000
- Arret();
- delay(300);
- DeplacementAuto("tout droit", 900, AUTO);//5000
- Arret();
- delay(300);
- if(couleurRobot==VIOLET)
- {
- //tourner à droite :
- DeplacementAuto("droite", 800, AUTO);
-
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 800, AUTO);
- }
-
- DeplacementAuto("tout droit", 1500, AUTO);
- Arret();
- delay(300);
- /*
- DeplacementAuto("pousseBouteille", 1000, AUTO);
- Arret();
- delay(100);*/
-
-
- }
-
-
-
- DeplacementAuto("pousseBouteille", 1000, AUTO);//500
- Arret();
- delay(100);
- DeplacementAuto("reculer", 1800, AUTO);
- Arret();
- delay(500);
-
-
- if(couleurRobot==ROUGE)
- {
-//tourner à droite :
-DeplacementAuto("droite", 900, AUTO);
-
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 900, AUTO);
-
- }
- Arret();
- delay(500);
- DeplacementAuto("reculer", 1000, AUTO);//5000
- Arret();
- delay(500);
- DeplacementAuto("reculer lent", 1200, AUTO);//5000
-
- /*Arret();
- delay(500);
- DeplacementAuto("tout droit", 500, AUTO);//5000
-
- Arret();
- delay(500);
- if(couleurRobot==ROUGE)
- {
- //tourner à droite :
- DeplacementAuto("droite", 50, AUTO);
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 50, AUTO);
-
- }*/
- Arret();
- delay(500);
- //DeplacementAuto("tout droit", 6000, AUTO);//5000
- DeplacementAuto("tout droit", 6850, AUTO);
- Arret();
- delay(500);
- DeplacementAuto("reculer", 500, AUTO);//5000
-
- Arret();
- delay(500);
- if(couleurRobot==VIOLET)
- {
-//tourner à droite :
-DeplacementAuto("droite", 850, AUTO);
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 850, AUTO);
-
- }
-
- Arret();
- delay(300);
-
-
-
- //DeplacementAuto("tout droit", 2000, 2);
- DeplacementAuto("tout droit", 500, AUTO);
- Arret();
- delay(300);
-
- DeplacementAuto("pousseBouteille", 1000, AUTO);
- Arret();
- delay(100);
- //DeplacementAuto("reculer", 1000, AUTO);
- Arret();
-
- delay(1000000000);
-}
-
-
-//############VERSION 1##################
-//marche bien, mais pas idéal : peu rapide et risque de perdre la ligne si le robot a un angle trop important avec elle.
-void SuivreLigne()//Permet de se déplacer en suivant la ligne.
-{
- int valCCG = analogRead(pinCCG);//valeur du CapteurCouleurGauche
- int valCCD = analogRead(pinCCD);
-
-
-
- //if(valCCG > seuilHautRattrapageG && valCCD < seuilBasRattrapageG)//Si la ligne est entièrement sous le capteur gauche, et pas du tout sur le capteur droit
- if(valCCG > seuilHautDifferenceRattrapageG)//Si la ligne est entièrement sous le capteur gauche, et pas du tout sur le capteur droit
- {
- myservoRoueGauche.write(90);//90
- myservoRoueDroite.write(30);//82
-
- //delay(500);
-
- //Rattrapage("gauche");//on lance la procédure de rattrapage.
-
-
- }
- //else if(valCCD > seuilHautRattrapageD && valCCG < seuilBasRattrapageD)//Idem
- else if(valCCD > seuilHautDifferenceRattrapageD)//Idem
- {
- myservoRoueGauche.write(150);//98
- myservoRoueDroite.write(90);//90
- //delay(500);
- //Rattrapage("droite");
-
- }
- else//Sinon, tout va bien
- {
- //Serial.println(00000);
-
- myservoRoueGauche.write(95);
- myservoRoueDroite.write(83);
-
- //myservoRoueGauche.write(valMoyenneG-(offsetG+valCCG)*paramG+(offsetD+valCCD)*paramD);//On fait tourner les servos, en fonction des valeurs renvoyées par les capteurs.
- //myservoRoueDroite.write(valMoyenneD-(offsetD+valCCD)*paramD+(offsetG+valCCG)*paramG);
-
- }
-}
-
-
-int DeplacementAuto(char* dir, unsigned long duree, int modeRattrappageLigne)//Permet de se déplacer sans la ligne. v2
-{
- unsigned long tempsDebut=millis();
-
- unsigned long currentTime=millis();
-
- unsigned long delaiArret = 0;//Sile robot doit s'arreter (par exemple s'il detecte un robot adverse), il faut qu'il finisse son mouvement plus tard que prevu.
-
- unsigned long debutArret = 0;
-
- int dejaArrete = 0;
-
- int valeurRetour = 0;
-
- while((currentTime seuilHautDifferenceRattrapageG)//valeur du CapteurCouleurGauche
- {
- Arret();
- delay(100);
- DeplacementAuto("gauche", 100, AUTO);
- Arret();
- delay(100);
- //delay(500);
- valeurRetour++;
-
- //diode3.DiodeOn(2);//Allume la diode pendant 2 cycles.
- /* digitalWrite(pinLed2,HIGH);
- delay(1000);
- digitalWrite(pinLed2,LOW);*/
- }
- if(analogRead(pinCCD) > seuilHautDifferenceRattrapageD)//valeur du CapteurCouleurGauche
- {
- Arret();
- delay(100);
- DeplacementAuto("droite", 100, AUTO);
- Arret();
- delay(100);
- //delay(500);
- valeurRetour+=2;
-
- //diode3.DiodeOn(2);//Allume la diode pendant 2 cycles.
- /* digitalWrite(pinLed1,HIGH);
- delay(1000);
- digitalWrite(pinLed1,LOW);*/
- }
-
- if(valeurRetour>0)
- {
- return valeurRetour;
- }
- }
- /*else if(modeRattrappageLigne==2)//Si on veut se mettre en place pour pousser une 2° bouteille
- {
- detection.JePeuxAvancer(AVANCERBOUTEILLE)==2;
- return 20;
- }*/
-
- //Serial.println( dejaArrete);
- if((currentTime+tempsMaxCapteurs>tempsDebut+duree+delaiArret) && !dejaArrete)//Si le mouvement est en cours et se fini avant qu'on ait le temps de faire une boucle supplémentaire, on attend la fin du mouvement.
- {
- if(currentTime0)))
- {
-
-
- if(dejaArrete)//Si on sort d'une période d'arret
- {
- dejaArrete=0;
- delaiArret+=millis()-debutArret;
- }
- if(dir=="reculer")
- {
- myservoRoueGauche.write(ReculerRoueG);
- myservoRoueDroite.write(ReculerRoueD);
- }
- else if(dir=="tout droit")
- {
-
- myservoRoueGauche.write(TTDroitRoueG);
- myservoRoueDroite.write(TTDroitRoueD);
- }
-
- else if(dir=="droite")
- {
- myservoRoueGauche.write(TournerDroiteRoueG);
- myservoRoueDroite.write(TournerDroiteRoueD);
- }
- else if(dir=="gauche")
- {
- myservoRoueGauche.write(TournerGaucheRoueG);
- myservoRoueDroite.write(TournerGaucheRoueD);
- }
- else if(dir=="pousseBouteille")
- {
- myservoRoueGauche.write(TTDroitRoueG);
- myservoRoueDroite.write(TTDroitRoueD);
- }
- else if(dir=="reculer lent")
- {
- myservoRoueGauche.write(ReculerLentRoueG);
- myservoRoueDroite.write(ReculerLentRoueD);
- }
-
- }
-
- else//Sinon, s'il y a un obstacle
- {
- Arret();
- if(!dejaArrete)//si c'est le début de l'arret
- {
- dejaArrete=1;
- debutArret=millis();
- }
- delay(1);
- }
-
- }
-
- currentTime=millis();//Le temps actuel pour le prochain tour de boucle.
- }
-
- return 0;
-}
-
-
-
-void Arret()//Arrete les moteurs.
-{
- myservoRoueGauche.write(paramArretRoueG);
- myservoRoueDroite.write(paramArretRoueD);
-}
-
-
-
-void CalibrationAuto()//Permet d'auto-calibrer le robot. Il faut le placer sur une ligne noire et enclencher les deux interrupteurs "cal obsc" et "cal clair".
-{
- Arret();
- delay(500);
-
- //On est sensé etre sur la ligne noire, donc on calibre.
- hautGauche=analogRead(pinCCG);
- hautDroite=analogRead(pinCCD);
-
- seuilHautRattrapeeG=paramSeuilHautRattrapee*analogRead(pinCCG);
- EnregistreDonnee(0, seuilHautRattrapeeG);
-
- seuilHautRattrapageG=paramSeuilHautRattrapage*analogRead(pinCCG);
- EnregistreDonnee(1, seuilHautRattrapageG);
-
- seuilHautRattrapeeD=paramSeuilHautRattrapee*analogRead(pinCCD);
- EnregistreDonnee(2, seuilHautRattrapeeD);
-
- seuilHautRattrapageD=paramSeuilHautRattrapage*analogRead(pinCCD);
- EnregistreDonnee(3, seuilHautRattrapageD);
- delay(300);
- //On avance, pour arriver sur du blanc, puis on calibre.
- myservoRoueGauche.write(95);
- myservoRoueDroite.write(85);
- delay(500);
- Arret();
- delay(1000);
-
- basGauche=analogRead(pinCCG);
- basDroite=analogRead(pinCCD);
-
- seuilBasRattrapeeG=paramSeuilBasRattrapee*analogRead(pinCCG);
- EnregistreDonnee(4, seuilBasRattrapeeG);
-
- seuilBasRattrapageG=paramSeuilBasRattrapage*analogRead(pinCCG);
- EnregistreDonnee(5, seuilBasRattrapageG);
-
- seuilBasRattrapeeD=paramSeuilBasRattrapee*analogRead(pinCCD);
- EnregistreDonnee(6, seuilBasRattrapeeD);
-
- seuilBasRattrapageD=paramSeuilBasRattrapage*analogRead(pinCCD);
- EnregistreDonnee(7, seuilBasRattrapageD);
-
-
-
- seuilHautDifferenceRattrapageG=hautGauche-(hautGauche-basGauche)/paramDiff;
- EnregistreDonnee(8, seuilHautDifferenceRattrapageG);
-
- seuilHautDifferenceRattrapageD=hautDroite-(hautDroite-basDroite)/paramDiff;
- EnregistreDonnee(9, seuilHautDifferenceRattrapageD);
-
- //On enregistre dans la mémoire eeprom, pour pouvoir tester sans avoir à re-qualibrer.
- //EEPROM.write(0,seuilHautRattrapeeG);
-}
-
-//On éteind les diodes qui doivent l'etre
-//permet d'avoir des diodes allumées pendant des cycles entiers, pour qu'elles soient suffisament lumineuses.
-void DiodesOff()
-{
- if(cycleAllumeDiode1>1)
- {
- cycleAllumeDiode1--;
- }
- else
- {
- if(cycleAllumeDiode1==1)
- {
- digitalWrite(pinLed1,LOW);
- cycleAllumeDiode1--;
- }
- }
- if(cycleAllumeDiode2>0)
- {
- cycleAllumeDiode2--;
- }
- else
- {
- if(cycleAllumeDiode2==1)
- {
- digitalWrite(pinLed2,LOW);
- cycleAllumeDiode2--;
- }
- }
- if(cycleAllumeDiode3>0)
- {
- cycleAllumeDiode3--;
- }
- else
- {
- if(cycleAllumeDiode3==1)
- {
- digitalWrite(pinLed3,LOW);
- cycleAllumeDiode3--;
- }
- }
-
-}
-
-void DiodeOn(int numeroLed, int duree)
-{
- if(numeroLed==pinLed1)
- {
- cycleAllumeDiode1=duree;
- digitalWrite(pinLed1,HIGH);
- }
- if(numeroLed==pinLed2)
- {
- cycleAllumeDiode2=duree;
- digitalWrite(pinLed2,HIGH);
- }
- if(numeroLed==pinLed3)
- {
- cycleAllumeDiode3=duree;
- digitalWrite(pinLed3,HIGH);
- }
-}
-
-void EnregistreDonnee(int adresse, int valeur)//Enregistre un nombre entre 0 et 1023 dans l'EEPROM
-{
- if(valeur>=3*256)
- {
- EEPROM.write(adresse*4+3,valeur-3*256);//Reste bien compris entre 0 et 255
- EEPROM.write(adresse*4+2,255);
- EEPROM.write(adresse*4+1,255);
- EEPROM.write(adresse*4+0,255);
- }
- else
- {
- EEPROM.write(adresse*4+3,0);
- if(valeur>=2*256)
- {
- EEPROM.write(adresse*4+2,valeur-2*256);//Reste bien compris entre 0 et 255
- EEPROM.write(adresse*4+1,255);
- EEPROM.write(adresse*4+0,255);
- }
- else
- {
- EEPROM.write(adresse*4+2,0);
- if(valeur>=1*256)
- {
- EEPROM.write(adresse*4+1,valeur-1*256);//Reste bien compris entre 0 et 255
- EEPROM.write(adresse*4+0,255);
- }
- else
- {
- EEPROM.write(adresse*4+1,0);
- EEPROM.write(adresse*4+0,valeur-0*256);//Reste bien compris entre 0 et 255
- }
- }
- }
-}
-
-int LireDonnee(int adresse)//Lit un nombre entre 0 et 1023 dans l'EEPROM
-{
- int valeur = 0;
- int lu = 0;
- valeur += EEPROM.read(adresse*4+0);
-
- lu=EEPROM.read(adresse*4+1);
- if(lu)
- {
- valeur+=lu+1;//EEPROM.read va de 0 à 255
- lu=EEPROM.read(adresse*4+2);
- if(lu)
- {
- valeur+=lu+1;//EEPROM.read va de 0 à 255
- lu=EEPROM.read(adresse*4+3);
- if(lu)
- {
- valeur+=lu+1;//EEPROM.read va de 0 à 255
- }
- }
- }
- return valeur;
-}
-
diff --git a/petit_robot/Petit_robot_2_0_1_sanscapteur/Capteur.cpp b/petit_robot/Petit_robot_2_0_1_sanscapteur/Capteur.cpp
deleted file mode 100644
index 2eec77d6e767756c64627babebebc895570a24cc..0000000000000000000000000000000000000000
--- a/petit_robot/Petit_robot_2_0_1_sanscapteur/Capteur.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "Capteur.h"
-#include "Arduino.h"
-#include "Sharp.h"
-#include "Ultrason.h"
-
-Capteur::Capteur(int capteurPin) : capteurPin(capteurPin), valeur(0)
-{
- //capteurPin = capteurPin;
- //valeur = 0;
-}
-
-Capteur::Capteur(int capteurPin, int valeur) : capteurPin(capteurPin), valeur(valeur)
-{
- //capteurPin = capteurPin;
- //valeur = 0;
-}
-
-Capteur::~Capteur()
-{
-
-}
-
-int Capteur::GetValue()
-{
- Update();
- return valeur;
-}
-
-void Capteur::Update()
-{
-
-}
diff --git a/petit_robot/Petit_robot_2_0_1_sanscapteur/Capteur.h b/petit_robot/Petit_robot_2_0_1_sanscapteur/Capteur.h
deleted file mode 100644
index 0781424600482c130d1bd77f82e914765c348dac..0000000000000000000000000000000000000000
--- a/petit_robot/Petit_robot_2_0_1_sanscapteur/Capteur.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef DEF_CAPTEUR // Si la constante n'a pas été définie` le fichier n'a jamais été inclus
-#define DEF_CAPTEUR // On définit la constante pour que la prochaine fois le fichier ne soit plus inclus
-
-
-
-class Capteur
-{
- public:
-
- Capteur(int capteurPin);
- Capteur(int capteurPin, int valeur);
- ~Capteur();
- int GetValue();
- void Update();
-
- private:
-
- protected://Les capteurs sharp peuvent modifier leurs "valeur".
-
- int valeur; //Distance ou autre, la valeur renvoyée par le capteur.
- int capteurPin;
-};
-
-#endif
diff --git a/petit_robot/Petit_robot_2_0_1_sanscapteur/Detection.cpp b/petit_robot/Petit_robot_2_0_1_sanscapteur/Detection.cpp
deleted file mode 100644
index d53688ec56c9c039aadfa5c463cdd2178e0f32f9..0000000000000000000000000000000000000000
--- a/petit_robot/Petit_robot_2_0_1_sanscapteur/Detection.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-#include "Detection.h"
-#include "Arduino.h"
-#include "Capteur.h"
-#include "Ultrason.h"
-#include "Sharp.h"
-
-//enum sharpDetectant { AUCUN, GAUCHE, DROITE, TTAVANT, ARRIERE, TTGAUCHE, TTDROITE, TT, AUCUNETHAUT, GAUCHEETHAUT, DROITEETHAUT, TTAVANTETHAUT, ARRIEREETHAUT, TTGAUCHEETHAUT, TTDROITEETHAUT, TTETHAUT, AUCUNETMILIEU, GAUCHEETMILIEU, DROITEETMILIEU, TTAVANTETMILIEU, ARRIEREETMILIEU, TTGAUCHEETMILIEU, TTDROITEETMILIEU, TTETMILIEU, AUCUNETHAUTETMILIEU, GAUCHEETHAUTETMILIEU, DROITEETHAUTETMILIEU, TTAVANTETHAUTETMILIEU, ARRIEREETHAUTETMILIEU, TTGAUCHEETHAUTETMILIEU, TTDROITEETHAUTETMILIEU, TTETHAUTETMILIEU};
-
-//enum sharpDetectant { AUCUN, GAUCHE, DROITE, TTAVANT, ARRIERE, TTGAUCHE, TTDROITE, TT };
-
-enum numeroSharp { GAUCHE, DROITE, MILIEU, HAUT, ARRIERE };
-
-enum sens { AVANCER, RECULER, TOURNEGAUCHE, TOURNEDROITE, AVANCERBOUTEILLE };
-/*#define pinSharpAvG A6
-#define pinSharpAvD A4
-#define pinSharpArr A7
-#define pinUltrason 10*/
-#define seuilSharpAvG 350
-#define seuilSharpAvD 350
-#define seuilSharpMilieu 350
-#define seuilSharpHaut 350
-#define seuilSharpArr 350
-
-
-Detection::Detection()
-{
- for (int initcvqqch = 0 ; initcvqqchVoitQQch())
- {
- capteurVoitQQch[iLireCapteurs]--;//On décrémente si on ne voit rien.
- }
- else
- {
- capteurVoitQQch[iLireCapteurs]=8;//Sinon on remet le compteur à 8.
- }
-
- if(capteurVoitQQch[iLireCapteurs]==0)
- {
- capteurVoitObstacle[iLireCapteurs]=0;
- }
- }
- else//Si on n'est pas devant un obstacle
- {
- if(capteurSharp[iLireCapteurs]->VoitQQch())
- {
- capteurVoitQQch[iLireCapteurs]++;//On décrémente si on ne voit rien.
- }
- else
- {
- capteurVoitQQch[iLireCapteurs]=0;//Sinon on remet le compteur à 8.
- }
-
- if(capteurVoitQQch[iLireCapteurs]==8)
- {
- capteurVoitObstacle[iLireCapteurs]=1;
- }
- }
- }
- /*
- capteurVoitQQch[GAUCHE]=min(8,(capteurVoitQQch[GAUCHE]+1)*capteurAvantG->VoitQQch());
-
- capteurVoitQQch[DROITE]=min(8,(capteurVoitQQch[DROITE]+1)*capteurAvantD->VoitQQch());
-
- capteurVoitQQch[MILIEU]=min(8,(capteurVoitQQch[MILIEU]+1)*capteurMilieu->VoitQQch());
-
- capteurVoitQQch[HAUT]=min(8,(capteurVoitQQch[MILIEU]+1)*capteurHaut->VoitQQch());
-
- capteurVoitQQch[ARRIERE]=min(8,(capteurVoitQQch[ARRIERE]+1)*capteurArriere->VoitQQch());*/
-
- /*capteurVoitQQch[GAUCHE]=capteurAvantG->VoitQQch();
-
- capteurVoitQQch[DROITE]=capteurAvantD->VoitQQch();
-
- capteurVoitQQch[MILIEU]=capteurMilieu->VoitQQch();
-
- capteurVoitQQch[HAUT]=capteurHaut->VoitQQch();
-
- capteurVoitQQch[ARRIERE]=capteurArriere->VoitQQch();*/
-
-}
diff --git a/petit_robot/Petit_robot_2_0_1_sanscapteur/Detection.h b/petit_robot/Petit_robot_2_0_1_sanscapteur/Detection.h
deleted file mode 100644
index 0c61e7610ae579e278268cf5ccd06fe796f0a014..0000000000000000000000000000000000000000
--- a/petit_robot/Petit_robot_2_0_1_sanscapteur/Detection.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef DEF_DETECTION // Si la constante n'a pas été définie` le fichier n'a jamais été inclus
-#define DEF_DETECTION // On définit la constante pour que la prochaine fois le fichier ne soit plus inclus
-
-#include "Sharp.h"
-#include "Ultrason.h"
-
-#define NOMBRECAPTEUR 5
-
-
-class Detection
-{
- public:
-
- Detection();
- ~Detection();
- int JePeuxAvancer(int sensVoulu);
- void LireCapteursDistance();
-
- private:
-
-
- int capteurVoitQQch[NOMBRECAPTEUR];
- int capteurVoitObstacle[NOMBRECAPTEUR];//tableau permettant de pallier le problème du bruit : il faut capter 8 fois d'affillée pour voir un obstacle
- //Ultrason ping;
- /*Sharp *capteurAvantG;
- Sharp *capteurAvantD;
- Sharp *capteurMilieu;
- Sharp *capteurHaut;
- Sharp *capteurArriere;*/
- Sharp **capteurSharp;
-
-
-};
-
-#endif
-
diff --git a/petit_robot/Petit_robot_2_0_1_sanscapteur/Diode.cpp b/petit_robot/Petit_robot_2_0_1_sanscapteur/Diode.cpp
deleted file mode 100644
index 2290d9b405786dd641b48349e9f17de554519c92..0000000000000000000000000000000000000000
--- a/petit_robot/Petit_robot_2_0_1_sanscapteur/Diode.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "Diode.h"
-#include "Arduino.h"
-
-//using namespace std;
-
-Diode::Diode(int diodePin)//Constructeur
-{
- int duree = 0;
- diodePin = diodePin;
-}
-
-Diode::~Diode()//Destructeur
-{
-
-}
-
-//On éteind les diodes qui doivent l'etre
-//permet d'avoir des diodes allumées pendant des cycles entiers, pour qu'elles soient suffisament lumineuses.
-void Diode::DiodeOff()
-{
-
- if(dureeEncoreAllumee>1)
- {
- dureeEncoreAllumee--;
- }
- else
- {
- if(dureeEncoreAllumee==1)
- {
- digitalWrite(diodePin,LOW);
- dureeEncoreAllumee--;
- }
- }
-}
-
-void Diode::DiodeOn(int duree)
-{
- dureeEncoreAllumee=duree;
- digitalWrite(diodePin,HIGH);
-}
-
diff --git a/petit_robot/Petit_robot_2_0_1_sanscapteur/Diode.h b/petit_robot/Petit_robot_2_0_1_sanscapteur/Diode.h
deleted file mode 100644
index a1c8ae423293e7dfffce4c11dd02def5549c0064..0000000000000000000000000000000000000000
--- a/petit_robot/Petit_robot_2_0_1_sanscapteur/Diode.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef DEF_DIODE // Si la constante n'a pas été définie` le fichier n'a jamais été inclus
-#define DEF_DIODE // On définit la constante pour que la prochaine fois le fichier ne soit plus inclus
-
-
-class Diode
-{
- public:
-
- Diode(int diodePin);
- ~Diode();
- void DiodeOff();//eteind une diode
- void DiodeOn(int duree);//allume une diode
-
- private:
-
- int dureeEncoreAllumee;//Correspond au nombre de cycles pendant lesquels la diode va continuer à etre allumée.
- int diodePin;//le pin de l'arduino auquel est attché la diode.
-
-};
-
-#endif
-
diff --git a/petit_robot/Petit_robot_2_0_1_sanscapteur/Petit_robot_2_0_1_sanscapteur.ino b/petit_robot/Petit_robot_2_0_1_sanscapteur/Petit_robot_2_0_1_sanscapteur.ino
deleted file mode 100644
index 83d4048d264d4a9bd6cc1809dcbdf8f9fac99812..0000000000000000000000000000000000000000
--- a/petit_robot/Petit_robot_2_0_1_sanscapteur/Petit_robot_2_0_1_sanscapteur.ino
+++ /dev/null
@@ -1,1027 +0,0 @@
-#include
-#include "Diode.h"
-#include "Detection.h"
-#include
-
-#define AUTO 0
-#define RATTRAPAGE 1
-
-
- // DEFINITION DES CONSTANTES //
-
-const int pinRoueG = 5;
-const int pinRoueD = 3;
-
-
-
-const int pinCalClaire = 9;
-const int pinCalObs = 7;
-const int pinCalGD = 6;
-
-//##### DFRduino nano
-/*const int pinCCG = A0;//pin du CapteurCouleurGauche
-const int pinCCD = A1;
-
-const int pinTirr = A5;
-
-const int pinSharpAvG = A6;
-const int pinSharpAvD = A4;
-const int pinSharpArr = A7;*/
-
-//##### Arduino nano
-const int pinCCG = A0;//pin du CapteurCouleurGauche
-const int pinCCD = A7;
-
-const int pinTirr = A2;
-
-const int pinSharpAvG = A1;//attention, aussi défini dans detection
-const int pinSharpAvD = A3;
-const int pinSharpArr = A6;
-
-const int pinLed1 = 8;
-const int pinLed2 = 11;
-const int pinLed3 = 12;
-
-const int pinPing = 10;
-
-enum couleurMatch { ROUGE, VIOLET };
-enum sharpDetectant { AUCUN, GAUCHE, DROITE, TTAVANT, ARRIERE, TTGAUCHE, TTDROITE, TT, AUCUNETHAUT, GAUCHEETHAUT, DROITEETHAUT, TTAVANTETHAUT, ARRIEREETHAUT, TTGAUCHEETHAUT, TTDROITEETHAUT, TTETHAUT, AUCUNETMILIEU, GAUCHEETMILIEU, DROITEETMILIEU, TTAVANTETMILIEU, ARRIEREETMILIEU, TTGAUCHEETMILIEU, TTDROITEETMILIEU, TTETMILIEU, AUCUNETHAUTETMILIEU, GAUCHEETHAUTETMILIEU, DROITEETHAUTETMILIEU, TTAVANTETHAUTETMILIEU, ARRIEREETHAUTETMILIEU, TTGAUCHEETHAUTETMILIEU, TTDROITEETHAUTETMILIEU, TTETHAUTETMILIEU};
-enum sens { AVANCER, RECULER, TOURNEGAUCHE, TOURNEDROITE, AVANCERBOUTEILLE };
-
-int couleurRobot = 0;
-
- // PARAMETRES DE DEPLACEMENT AUTOMATIQUE //
-
-const unsigned long dureeMatch = 89000;// 89 secondes : mieux vaut ne pas prendre de risques
-//const unsigned long dureeMatch = 9000;// 89 secondes : mieux vaut ne pas prendre de risques
-unsigned long tempDepartMatch = 0;
-
-const int paramArretRoueG = 90;
-const int paramArretRoueD = 90;
-
-
- const int TTDroitRoueG = 110;
-const int TTDroitRoueD = 69;//70à
-
-const int TournerGaucheRoueG = 82;
-const int TournerGaucheRoueD = 82;
-const int TournerGaucheTemps = 865;
-
-const int TournerDroiteRoueG = 98;
-const int TournerDroiteRoueD = 98;
-const int TournerDroiteTemps = 865;
-
-const int ReculerRoueG = 77;
-const int ReculerRoueD = 110;
-
-const int ReculerLentRoueG = 85;
-const int ReculerLentRoueD = 95;
-
-
-
-
-
-
-
-const unsigned long tempsMaxCapteurs = 10;
-
- // PARAMETRES DE SUIVEUR DE LIGNE //
-
-const int valMoyenneG = 0;
-const int valMoyenneD = 0;
-
-//pour lancer le rattrapa(ge
-int seuilHautRattrapageG = 0;
-int seuilHautRattrapageD = 0;
-int seuilBasRattrapageG = 0;
-int seuilBasRattrapageD = 0;
-
-int basGauche=0;
-int basDroite=0;
-int hautGauche=0;
-int hautDroite=0;
-
-int seuilHautDifferenceRattrapageG=0;
-int seuilHautDifferenceRattrapageD=0;
-
-const int paramDiff = 2;
-
-const int paramD = 0;
-const int paramG = 0;
-
-const int offsetD = 0;
-const int offsetG = 0;
-
-const float paramSeuilHautRattrapage = 0.99;
-const float paramSeuilBasRattrapage = 1.003;
-
-
-//pour arreter le rattrppage
-const int tempMaxRattrappage = 1000;
-
-int seuilHautRattrapeeG = 0;
-int seuilHautRattrapeeD = 0;
-int seuilBasRattrapeeG = 0;
-int seuilBasRattrapeeD = 0;
-
-const float paramSeuilHautRattrapee = 0.8;
-const float paramSeuilBasRattrapee = 1.1;
-
- // PARAMETRES DES SHARPS //
-/*
-const int seuilSharpAvG = 200;
-const int seuilSharpAvD = 200;
-const int seuilSharpArr = 200;*/
-
-const int distanceMin = 15;
-
-
-
-
-
- // DEFINITION DES VARIBABLES //
-
-Servo myservoRoueGauche;
-Servo myservoRoueDroite;
-
-int bouteilleUneAPousser=0;
-int utiliseLigne=0;
-
-
- // VARIABLES DIODES //
- Diode diode1(pinLed1), diode2(pinLed2), diode3(pinLed3);
- Detection detection;
-
-
-
-int cycleAllumeDiode1 = 0;//Nombre de cycle de boucle pendant lesquels la diode 1 doit etre allumée : permet d'avoir des diodes allumées pendant des cycles entiers, pour qu'elles soient suffisament lumineuses.
-int cycleAllumeDiode2 = 0;
-int cycleAllumeDiode3 = 0;
-
- // PROTOPTYPES DES FONCTIONS //
-
- void SuivreLigne();
- int DeplacementAuto(char* dir, unsigned long duree, int modeRattrappageLigne);
- void Rattrapage(char* cote);
- int LireCapteursSharp();
- void Arret();
- long microsecondsToCentimeters(long microseconds);
- int DetectionUltrason();
- int JePeuxAvancer(int sensVoulu);
- void CalibrationAuto();
- void DiodesOff();
- void DiodeOn(int numeroLed, int duree);
- void EnregistreDonnee(int adresse, int valeur);
- int LireDonnee(int adresse);
-
-
-
-void setup() //premiere fonction appelée.
-{
- // initialize serial communication:
- Serial.begin(9600);
- Serial.println(10, DEC);
-
-
- myservoRoueGauche.attach(pinRoueG,200,2400);//initialisation des servos //100,1500 || 220,2400
- myservoRoueDroite.attach(pinRoueD,220,2400); //80,1500 || 200,2400
- myservoRoueDroite.write(90);//90
- myservoRoueGauche.write(90);//90
-
-
- pinMode(pinTirr, INPUT);//la tirette est une entrée d'information
- pinMode(pinCalClaire, INPUT);
- pinMode(pinCalObs, INPUT);
- pinMode(pinCalGD, INPUT);
- pinMode(pinLed1,OUTPUT);
- pinMode(pinLed2,OUTPUT);
- pinMode(pinLed3,OUTPUT);
-
- pinMode(13, OUTPUT);
-
-
- //Initialisation de la calibration capteurs couleurs à partir de l'EEPROM
- seuilHautRattrapeeG=LireDonnee(0);
- seuilHautRattrapageG=LireDonnee(1);
- seuilHautRattrapeeD=LireDonnee(2);
- seuilHautRattrapageD=LireDonnee(3);
-
- seuilBasRattrapeeG=LireDonnee(4);
- seuilBasRattrapageG=LireDonnee(5);
- seuilBasRattrapeeD=LireDonnee(6);
- seuilBasRattrapageD=LireDonnee(7);
-
- seuilHautDifferenceRattrapageG=LireDonnee(8);
- seuilHautDifferenceRattrapageD=LireDonnee(9);
-
- int tirretteAJamaisEtePresente=1;
-
- while(digitalRead(pinTirr)>0 || tirretteAJamaisEtePresente)//On attend que la tirette soit tirée pour débuter le match. Il faut aussi qu'elle ait été presente (sinon le robot partirai direct si allumé sans tirrette.
- {
- //Calibration : 2 modes : automatique (les 2 interrupteurs de calib' obscure (noir) et clair (bleu) sont activés) : on lance "CalibrationAuto".
- //manuelle : seul un interrupteur de calib' (obs OU clair) est activé : on calibre le capteur gauche OU droit, selon l'interrupteur de choix.
-
- diode1.DiodeOff();
- diode2.DiodeOff();
- diode3.DiodeOff();
- DiodesOff();//On éteind les diodes qui doivent l'etre
-
- if(digitalRead(pinCalClaire)>0)
- {
-
-
- /*if(digitalRead(pinCalObs)>0)//calibration auto//Commentarisé : l'ancienne calibration manuelle.
- {*/
- CalibrationAuto();
- while((digitalRead(pinCalClaire)>0/* || digitalRead(pinCalObs)>0*/) && (digitalRead(pinTirr)>0 || tirretteAJamaisEtePresente))// On attend que l'utilisateur mette le robot en attente d'une nouvelle calibration (les deux interrupteurs à l'arrt ; ou que le match commence.
- {
- //On regarde si la tirrette est là :
- if (digitalRead(pinTirr)>0)
- {
- tirretteAJamaisEtePresente=0;//Alors on n'a plus qu'à attendre que la tirrette soit tirée.
- }
- delay(1);
- }
- //}
- /*
- else//Calibration manuelle
- {
- if(digitalRead(pinCalGD)>0)
- {
- seuilBasRattrapeeG=paramSeuilBasRattrapee*analogRead(pinCCG);
- EnregistreDonnee(4, seuilBasRattrapeeG);
-
- seuilBasRattrapageG=paramSeuilBasRattrapage*analogRead(pinCCG);
- EnregistreDonnee(seuilBasRattrapageG, 5);
- Serial.println(analogRead(pinCCG));
- Serial.println(9);
- }
-
-
- else
- {
- seuilBasRattrapeeD=paramSeuilBasRattrapee*analogRead(pinCCD);
- EnregistreDonnee(6, seuilBasRattrapeeD);
-
- seuilBasRattrapageG=paramSeuilBasRattrapage*analogRead(pinCCD);
- EnregistreDonnee(7, seuilBasRattrapageD);
- Serial.println(analogRead(pinCCD));
- Serial.println(8);
- }
- }
- }
- else if(digitalRead(pinCalObs)>0)
- {
- if(digitalRead(pinCalClaire)>0)//calibration auto
- {
- CalibrationAuto();
- while((digitalRead(pinCalClaire)>0 || digitalRead(pinCalObs)>0) && digitalRead(pinTirr)>0)// On attend que l'utilisateur mette le robot en attente d'une nouvelle calibration (les deux interrupteurs à l'arrt ; ou que le match commence.
- {
- delay(1);
- }
- }
-
- else//Calibration manuelle
- {
- if(digitalRead(pinCalGD)>0)
- {
- seuilHautRattrapeeG=paramSeuilHautRattrapee*analogRead(pinCCG);
- EnregistreDonnee(0, seuilHautRattrapeeG);
-
- seuilHautRattrapageG=paramSeuilHautRattrapage*analogRead(pinCCG);
- EnregistreDonnee(1, seuilHautRattrapageG);
- Serial.println(analogRead(pinCCG));
- Serial.println(7);
- }
- else
- {
- seuilHautRattrapeeD=paramSeuilHautRattrapee*analogRead(pinCCD);
- EnregistreDonnee(2, seuilHautRattrapeeD);
-
- seuilHautRattrapageD=paramSeuilHautRattrapage*analogRead(pinCCD);
- EnregistreDonnee(3, seuilHautRattrapageD);
- Serial.println(analogRead(pinCCD));
- Serial.println(6);
- }
- }*/
- }
-
- //On regarde si la tirrette est là :
- if (digitalRead(pinTirr)>0)
- {
- tirretteAJamaisEtePresente=0;//Alors on n'a plus qu'à attendre que la tirrette soit tirée.
- }
- delay(1);
- }
-
- tempDepartMatch=millis();//Référence pour s'arreter 90s plus tard.
-
-
-
- //Couleur de la zone de départ.
- if(digitalRead(pinCalGD)==0)
- {
- couleurRobot = VIOLET;
-
- }
- else
- {
- couleurRobot = ROUGE;
- }
- if(digitalRead(pinCalObs)==0)
- {
- utiliseLigne = 1;
- }
- else
- {
- utiliseLigne = 0;
- }
-}
-
-
-
-
-void loop()//Boucle principale, appelée dès que setup() est fini.
-{
-
-
-
-
- /*DeplacementAuto("tout droit", 10000, 2);
- Arret();
- delay(1000);
-
- DeplacementAuto("reculer", 2000, AUTO);
- Arret();
- delay(10000);*/
-
-
-
- if(utiliseLigne)//Si on est en mode suiveur de ligne
- {
- //SEQUENCE INITIALE POUR REJOINDRE LA LIGNE.
-
-
- //reculer
-
- DeplacementAuto("tout droit", 2500, AUTO);
- Arret();
- delay(100);
-
-
- if(couleurRobot==VIOLET)
- {
- //tourner à droite :
- DeplacementAuto("droite", 900, AUTO);
-
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 900, AUTO);
- }
-
-
- //ttdroit
- DeplacementAuto("tout droit", 1000, AUTO);
-
- //VERRIFICATION QU'ON EST BIEN SUR LA LIGNE
- if(couleurRobot==VIOLET)
- {
- int ligne=DeplacementAuto("gauche", 1200, 1);
-
- if(ligne==10 || ligne==0)//Si on n'a pas rattrappé la ligne en tournant à droite
- {
- ligne=DeplacementAuto("droite", 2400, 1);
-
- if(ligne==10 || ligne==0)//Si on n'a pas rattrappé la ligne en tournant à gauche
- {
- DeplacementAuto("gauche", 1250, 1);//On se recentre et on va tout droit... en esperant que ça passe...
- }
- else//Sinon, si on a bien rattrappé la ligne
- {
- DeplacementAuto("tout droit", 600, AUTO);
- DeplacementAuto("gauche", 400, AUTO);
- }
- }
-
-
- }
- else
- {
- int ligne=DeplacementAuto("droite", 1200, 1);
-
- if(ligne==10 || ligne==0)//Si on n'a pas rattrappé la ligne en tournant à droite
- {
- ligne=DeplacementAuto("gauche", 2400, 1);
-
- if(ligne==10 || ligne==0)//Si on n'a pas rattrappé la ligne en tournant à gauche
- {
- DeplacementAuto("droite", 1250, 1);//On se recentre et on va tout droit... en esperant que ça passe...
- }
- }
- else//Sinon, si on a bien rattrappé la ligne
- {
-
- }
-
- }
- Arret();
- delay(100);
-
-
-
- // SEQUENCE DE SUIVAGE DE LIGNE //
-
- // while(!bouteilleUnePoussee)
- unsigned long tempsDepartSuivageLigne = millis();
- unsigned long tempsPasseArreteSuivreLigne = 0;
- unsigned long debutArretSuivreLigne = 0;
- unsigned long tempsMiniSuivageLigne = 8000;//Le temps minimal qu'il faut au robot pour suivre la ligne : permet de ne pas taper un robot par erreur
- unsigned long tempsActuel = 0;
- int dejaArreteSuiveurLigne = 0;
- while(!bouteilleUneAPousser)
- {
- diode1.DiodeOff();
- diode2.DiodeOff();
- diode3.DiodeOff();
- DiodesOff();//On éteind les diodes qui doivent l'etre
- tempsActuel=millis();
- if(tempsActueltempsMiniSuivageLigne && (detection.JePeuxAvancer(AVANCERBOUTEILLE)==2))//-tempsPasseArreteSuivreLigne
- {
- bouteilleUneAPousser=1;
- }
- else
- {
-
- Arret();
- if(!dejaArreteSuiveurLigne)//si c'est le début de l'arret
- {
- dejaArreteSuiveurLigne=1;
- debutArretSuivreLigne=tempsActuel;
- }
-
- }
- }
- }
- else//Si le match est fini
- {
- while(1)
- {
- Arret();//on arrete tout
- delay(10);
- }
- }
-
- }
- Arret();
- delay(1000);
-
-
- }
- //#################################################################################
- else//Sinon, si on est en mode sans ligne,
- {
- DeplacementAuto("tout droit", 2700, AUTO);
- Arret();
- delay(300);
-
- if(couleurRobot==VIOLET)
- {
- //tourner à droite :
- DeplacementAuto("droite", 900, AUTO);
-
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 900, AUTO);
- }
-
- Arret();
- delay(300);
- DeplacementAuto("reculer", 800, AUTO);//5000
- /* Arret();
- delay(200);*/
- DeplacementAuto("reculer lent", 1200, AUTO);//5000
- Arret();
- delay(300);
- DeplacementAuto("tout droit", 6200, AUTO);
-
- if(couleurRobot==ROUGE)
- {
- //tourner à droite :
- DeplacementAuto("droite", 900, AUTO);
-
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 900, AUTO);
- }
-
- Arret();
- delay(300);
- DeplacementAuto("reculer", 1000, AUTO);//5000
- /* Arret();
- delay(200);*/
- DeplacementAuto("reculer lent", 1200, AUTO);//5000
- Arret();
- delay(300);
- DeplacementAuto("tout droit", 900, AUTO);//5000
- Arret();
- delay(300);
- if(couleurRobot==VIOLET)
- {
- //tourner à droite :
- DeplacementAuto("droite", 800, AUTO);
-
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 800, AUTO);
- }
-
- DeplacementAuto("tout droit", 1500, AUTO);
- Arret();
- delay(300);
- /*
- DeplacementAuto("pousseBouteille", 1000, AUTO);
- Arret();
- delay(100);*/
-
-
- }
-
-
-
- DeplacementAuto("pousseBouteille", 1000, AUTO);//500
- Arret();
- delay(100);
- DeplacementAuto("reculer", 1800, AUTO);
- Arret();
- delay(500);
-
-
- if(couleurRobot==ROUGE)
- {
-//tourner à droite :
-DeplacementAuto("droite", 900, AUTO);
-
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 900, AUTO);
-
- }
- Arret();
- delay(500);
- DeplacementAuto("reculer", 1000, AUTO);//5000
- Arret();
- delay(500);
- DeplacementAuto("reculer lent", 1200, AUTO);//5000
-
- /*Arret();
- delay(500);
- DeplacementAuto("tout droit", 500, AUTO);//5000
-
- Arret();
- delay(500);
- if(couleurRobot==ROUGE)
- {
- //tourner à droite :
- DeplacementAuto("droite", 50, AUTO);
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 50, AUTO);
-
- }*/
- Arret();
- delay(500);
- //DeplacementAuto("tout droit", 6000, AUTO);//5000
- DeplacementAuto("tout droit", 6850, AUTO);
- Arret();
- delay(500);
- DeplacementAuto("reculer", 500, AUTO);//5000
-
- Arret();
- delay(500);
- if(couleurRobot==VIOLET)
- {
-//tourner à droite :
-DeplacementAuto("droite", 850, AUTO);
- }
- else
- {
- //tourner à gauche :
- DeplacementAuto("gauche", 850, AUTO);
-
- }
-
- Arret();
- delay(300);
-
-
-
- //DeplacementAuto("tout droit", 2000, 2);
- DeplacementAuto("tout droit", 500, AUTO);
- Arret();
- delay(300);
-
- DeplacementAuto("pousseBouteille", 1000, AUTO);
- Arret();
- delay(100);
- //DeplacementAuto("reculer", 1000, AUTO);
- Arret();
-
- delay(1000000000);
-}
-
-
-//############VERSION 1##################
-//marche bien, mais pas idéal : peu rapide et risque de perdre la ligne si le robot a un angle trop important avec elle.
-void SuivreLigne()//Permet de se déplacer en suivant la ligne.
-{
- int valCCG = analogRead(pinCCG);//valeur du CapteurCouleurGauche
- int valCCD = analogRead(pinCCD);
-
-
-
- //if(valCCG > seuilHautRattrapageG && valCCD < seuilBasRattrapageG)//Si la ligne est entièrement sous le capteur gauche, et pas du tout sur le capteur droit
- if(valCCG > seuilHautDifferenceRattrapageG)//Si la ligne est entièrement sous le capteur gauche, et pas du tout sur le capteur droit
- {
- myservoRoueGauche.write(90);//90
- myservoRoueDroite.write(30);//82
-
- //delay(500);
-
- //Rattrapage("gauche");//on lance la procédure de rattrapage.
-
-
- }
- //else if(valCCD > seuilHautRattrapageD && valCCG < seuilBasRattrapageD)//Idem
- else if(valCCD > seuilHautDifferenceRattrapageD)//Idem
- {
- myservoRoueGauche.write(150);//98
- myservoRoueDroite.write(90);//90
- //delay(500);
- //Rattrapage("droite");
-
- }
- else//Sinon, tout va bien
- {
- //Serial.println(00000);
-
- myservoRoueGauche.write(95);
- myservoRoueDroite.write(83);
-
- //myservoRoueGauche.write(valMoyenneG-(offsetG+valCCG)*paramG+(offsetD+valCCD)*paramD);//On fait tourner les servos, en fonction des valeurs renvoyées par les capteurs.
- //myservoRoueDroite.write(valMoyenneD-(offsetD+valCCD)*paramD+(offsetG+valCCG)*paramG);
-
- }
-}
-
-
-int DeplacementAuto(char* dir, unsigned long duree, int modeRattrappageLigne)//Permet de se déplacer sans la ligne. v2
-{
- unsigned long tempsDebut=millis();
-
- unsigned long currentTime=millis();
-
- unsigned long delaiArret = 0;//Sile robot doit s'arreter (par exemple s'il detecte un robot adverse), il faut qu'il finisse son mouvement plus tard que prevu.
-
- unsigned long debutArret = 0;
-
- int dejaArrete = 0;
-
- int valeurRetour = 0;
-
- while((currentTime seuilHautDifferenceRattrapageG)//valeur du CapteurCouleurGauche
- {
- Arret();
- delay(100);
- DeplacementAuto("gauche", 100, AUTO);
- Arret();
- delay(100);
- //delay(500);
- valeurRetour++;
-
- //diode3.DiodeOn(2);//Allume la diode pendant 2 cycles.
- /* digitalWrite(pinLed2,HIGH);
- delay(1000);
- digitalWrite(pinLed2,LOW);*/
- }
- if(analogRead(pinCCD) > seuilHautDifferenceRattrapageD)//valeur du CapteurCouleurGauche
- {
- Arret();
- delay(100);
- DeplacementAuto("droite", 100, AUTO);
- Arret();
- delay(100);
- //delay(500);
- valeurRetour+=2;
-
- //diode3.DiodeOn(2);//Allume la diode pendant 2 cycles.
- /* digitalWrite(pinLed1,HIGH);
- delay(1000);
- digitalWrite(pinLed1,LOW);*/
- }
-
- if(valeurRetour>0)
- {
- return valeurRetour;
- }
- }
- /*else if(modeRattrappageLigne==2)//Si on veut se mettre en place pour pousser une 2° bouteille
- {
- detection.JePeuxAvancer(AVANCERBOUTEILLE)==2;
- return 20;
- }*/
-
- //Serial.println( dejaArrete);
- if((currentTime+tempsMaxCapteurs>tempsDebut+duree+delaiArret) && !dejaArrete)//Si le mouvement est en cours et se fini avant qu'on ait le temps de faire une boucle supplémentaire, on attend la fin du mouvement.
- {
- if(currentTime0)))
- {
-
-
- if(dejaArrete)//Si on sort d'une période d'arret
- {
- dejaArrete=0;
- delaiArret+=millis()-debutArret;
- }
- if(dir=="reculer")
- {
- myservoRoueGauche.write(ReculerRoueG);
- myservoRoueDroite.write(ReculerRoueD);
- }
- else if(dir=="tout droit")
- {
-
- myservoRoueGauche.write(TTDroitRoueG);
- myservoRoueDroite.write(TTDroitRoueD);
- }
-
- else if(dir=="droite")
- {
- myservoRoueGauche.write(TournerDroiteRoueG);
- myservoRoueDroite.write(TournerDroiteRoueD);
- }
- else if(dir=="gauche")
- {
- myservoRoueGauche.write(TournerGaucheRoueG);
- myservoRoueDroite.write(TournerGaucheRoueD);
- }
- else if(dir=="pousseBouteille")
- {
- myservoRoueGauche.write(TTDroitRoueG);
- myservoRoueDroite.write(TTDroitRoueD);
- }
- else if(dir=="reculer lent")
- {
- myservoRoueGauche.write(ReculerLentRoueG);
- myservoRoueDroite.write(ReculerLentRoueD);
- }
-
- }
-
- else//Sinon, s'il y a un obstacle
- {
- Arret();
- if(!dejaArrete)//si c'est le début de l'arret
- {
- dejaArrete=1;
- debutArret=millis();
- }
- delay(1);
- }
-
- }
-
- currentTime=millis();//Le temps actuel pour le prochain tour de boucle.
- }
-
- return 0;
-}
-
-
-
-void Arret()//Arrete les moteurs.
-{
- myservoRoueGauche.write(paramArretRoueG);
- myservoRoueDroite.write(paramArretRoueD);
-}
-
-
-
-void CalibrationAuto()//Permet d'auto-calibrer le robot. Il faut le placer sur une ligne noire et enclencher les deux interrupteurs "cal obsc" et "cal clair".
-{
- Arret();
- delay(500);
-
- //On est sensé etre sur la ligne noire, donc on calibre.
- hautGauche=analogRead(pinCCG);
- hautDroite=analogRead(pinCCD);
-
- seuilHautRattrapeeG=paramSeuilHautRattrapee*analogRead(pinCCG);
- EnregistreDonnee(0, seuilHautRattrapeeG);
-
- seuilHautRattrapageG=paramSeuilHautRattrapage*analogRead(pinCCG);
- EnregistreDonnee(1, seuilHautRattrapageG);
-
- seuilHautRattrapeeD=paramSeuilHautRattrapee*analogRead(pinCCD);
- EnregistreDonnee(2, seuilHautRattrapeeD);
-
- seuilHautRattrapageD=paramSeuilHautRattrapage*analogRead(pinCCD);
- EnregistreDonnee(3, seuilHautRattrapageD);
- delay(300);
- //On avance, pour arriver sur du blanc, puis on calibre.
- myservoRoueGauche.write(95);
- myservoRoueDroite.write(85);
- delay(500);
- Arret();
- delay(1000);
-
- basGauche=analogRead(pinCCG);
- basDroite=analogRead(pinCCD);
-
- seuilBasRattrapeeG=paramSeuilBasRattrapee*analogRead(pinCCG);
- EnregistreDonnee(4, seuilBasRattrapeeG);
-
- seuilBasRattrapageG=paramSeuilBasRattrapage*analogRead(pinCCG);
- EnregistreDonnee(5, seuilBasRattrapageG);
-
- seuilBasRattrapeeD=paramSeuilBasRattrapee*analogRead(pinCCD);
- EnregistreDonnee(6, seuilBasRattrapeeD);
-
- seuilBasRattrapageD=paramSeuilBasRattrapage*analogRead(pinCCD);
- EnregistreDonnee(7, seuilBasRattrapageD);
-
-
-
- seuilHautDifferenceRattrapageG=hautGauche-(hautGauche-basGauche)/paramDiff;
- EnregistreDonnee(8, seuilHautDifferenceRattrapageG);
-
- seuilHautDifferenceRattrapageD=hautDroite-(hautDroite-basDroite)/paramDiff;
- EnregistreDonnee(9, seuilHautDifferenceRattrapageD);
-
- //On enregistre dans la mémoire eeprom, pour pouvoir tester sans avoir à re-qualibrer.
- //EEPROM.write(0,seuilHautRattrapeeG);
-}
-
-//On éteind les diodes qui doivent l'etre
-//permet d'avoir des diodes allumées pendant des cycles entiers, pour qu'elles soient suffisament lumineuses.
-void DiodesOff()
-{
- if(cycleAllumeDiode1>1)
- {
- cycleAllumeDiode1--;
- }
- else
- {
- if(cycleAllumeDiode1==1)
- {
- digitalWrite(pinLed1,LOW);
- cycleAllumeDiode1--;
- }
- }
- if(cycleAllumeDiode2>0)
- {
- cycleAllumeDiode2--;
- }
- else
- {
- if(cycleAllumeDiode2==1)
- {
- digitalWrite(pinLed2,LOW);
- cycleAllumeDiode2--;
- }
- }
- if(cycleAllumeDiode3>0)
- {
- cycleAllumeDiode3--;
- }
- else
- {
- if(cycleAllumeDiode3==1)
- {
- digitalWrite(pinLed3,LOW);
- cycleAllumeDiode3--;
- }
- }
-
-}
-
-void DiodeOn(int numeroLed, int duree)
-{
- if(numeroLed==pinLed1)
- {
- cycleAllumeDiode1=duree;
- digitalWrite(pinLed1,HIGH);
- }
- if(numeroLed==pinLed2)
- {
- cycleAllumeDiode2=duree;
- digitalWrite(pinLed2,HIGH);
- }
- if(numeroLed==pinLed3)
- {
- cycleAllumeDiode3=duree;
- digitalWrite(pinLed3,HIGH);
- }
-}
-
-void EnregistreDonnee(int adresse, int valeur)//Enregistre un nombre entre 0 et 1023 dans l'EEPROM
-{
- if(valeur>=3*256)
- {
- EEPROM.write(adresse*4+3,valeur-3*256);//Reste bien compris entre 0 et 255
- EEPROM.write(adresse*4+2,255);
- EEPROM.write(adresse*4+1,255);
- EEPROM.write(adresse*4+0,255);
- }
- else
- {
- EEPROM.write(adresse*4+3,0);
- if(valeur>=2*256)
- {
- EEPROM.write(adresse*4+2,valeur-2*256);//Reste bien compris entre 0 et 255
- EEPROM.write(adresse*4+1,255);
- EEPROM.write(adresse*4+0,255);
- }
- else
- {
- EEPROM.write(adresse*4+2,0);
- if(valeur>=1*256)
- {
- EEPROM.write(adresse*4+1,valeur-1*256);//Reste bien compris entre 0 et 255
- EEPROM.write(adresse*4+0,255);
- }
- else
- {
- EEPROM.write(adresse*4+1,0);
- EEPROM.write(adresse*4+0,valeur-0*256);//Reste bien compris entre 0 et 255
- }
- }
- }
-}
-
-int LireDonnee(int adresse)//Lit un nombre entre 0 et 1023 dans l'EEPROM
-{
- int valeur = 0;
- int lu = 0;
- valeur += EEPROM.read(adresse*4+0);
-
- lu=EEPROM.read(adresse*4+1);
- if(lu)
- {
- valeur+=lu+1;//EEPROM.read va de 0 à 255
- lu=EEPROM.read(adresse*4+2);
- if(lu)
- {
- valeur+=lu+1;//EEPROM.read va de 0 à 255
- lu=EEPROM.read(adresse*4+3);
- if(lu)
- {
- valeur+=lu+1;//EEPROM.read va de 0 à 255
- }
- }
- }
- return valeur;
-}
-
diff --git a/petit_robot/Petit_robot_2_0_1_sanscapteur/Sharp.cpp b/petit_robot/Petit_robot_2_0_1_sanscapteur/Sharp.cpp
deleted file mode 100644
index 9f65dc4e64686e37051103be5412cc06fa3260eb..0000000000000000000000000000000000000000
--- a/petit_robot/Petit_robot_2_0_1_sanscapteur/Sharp.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "Sharp.h"
-#include "Arduino.h"
-
-
-Sharp::Sharp(): Capteur(0)
-{
- this->seuilDetection=200;
-}
-
-Sharp::Sharp(int capteurPin, int seuil) : Capteur(capteurPin, valeur), seuilDetection(seuil)
-{
- //this->seuilDetection=200;
- //valeur=0;
-
-}
-
-void Sharp::Update()
-{
- valeur = analogRead(capteurPin);
- //Serial.println( capteurPin);
- //Serial.println( analogRead(capteurPin));
- //valeur=0;
-}
-
-int Sharp::VoitQQch()
-{
- Update();
- //if(valeur>seuilDetection)
-
- if(valeur>seuilDetection)
- {
-
- //delay(100);
- return 1;
- }
- else
- {
- //Serial.println(0);
- return 0;
- }
-}
diff --git a/petit_robot/Petit_robot_2_0_1_sanscapteur/Sharp.h b/petit_robot/Petit_robot_2_0_1_sanscapteur/Sharp.h
deleted file mode 100644
index 0b9117680a57b04cf065fc45d935f61f022131c0..0000000000000000000000000000000000000000
--- a/petit_robot/Petit_robot_2_0_1_sanscapteur/Sharp.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef DEF_SHARP // Si la constante n'a pas été définie` le fichier n'a jamais été inclus
-#define DEF_SHARP // On définit la constante pour que la prochaine fois le fichier ne soit plus inclus
-
-
-#include "Capteur.h"
-
-class Sharp : public Capteur//Un sharp est un capteur : héritage !
-{
- public:
-
- Sharp();
- Sharp(int capteurPin, int seuil);
- void Update();//Met à jour la valeur du capteur.
- int VoitQQch();//Renvoit 1 si le capteur voie qqch (d'après seuil), 0 sinon.
-
-
- private:
-
- int seuilDetection;
-
-};
-
-#endif
diff --git a/petit_robot/Petit_robot_2_0_1_sanscapteur/Ultrason.cpp b/petit_robot/Petit_robot_2_0_1_sanscapteur/Ultrason.cpp
deleted file mode 100644
index 604637e76dbdd9f9258f4b52d38c36edf7d0f79f..0000000000000000000000000000000000000000
--- a/petit_robot/Petit_robot_2_0_1_sanscapteur/Ultrason.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "Ultrason.h"
-#include "Arduino.h"
-#include "Capteur.h"
-
-#define DELAI_ATTENTE_MAX 10000//On max, on attent 10ms que le son revienne.
-#define DISTANCE_MAX_DETECTION 25//S'il y a qqch à moins de 25cm, on s'arrete.
-#define DIST_MIN_DETECTION 1//si le capteur renvoit 0, c'est soit que l'objet est très loin, soit qu'il y a un pb.
-
-Ultrason::Ultrason() : Capteur(0)//Je ne vois pas trop comment faire sans mettre un constructeur bidon...
-{
-
-}
-
-
-Ultrason::Ultrason(int capteurPin) : Capteur(capteurPin)
-{
-
-}
-
-int Ultrason::VoitQQch()
-{
- Update();
- if(distance < DISTANCE_MAX_DETECTION)
- {
- return 1;
- }
- else
- {
- return 0;
- }
-}
-
-//int Ultrason::Distance()//Renvoit la distance du plus proche objet du capteur
-void Ultrason::Update()
-{
-
-
- // establish variables for duration of the ping,
- // and the distance result in inches and centimeters:
- long duration, cm;
-
- // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
- // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
- pinMode(capteurPin, OUTPUT);
- digitalWrite(capteurPin, LOW);
- delayMicroseconds(2);
- digitalWrite(capteurPin, HIGH);
- delayMicroseconds(5);
- digitalWrite(capteurPin, LOW);
-
- // The same pin is used to read the signal from the PING))): a HIGH
- // pulse whose duration is the time (in microseconds) from the sending
- // of the ping to the reception of its echo off of an object.
- pinMode(capteurPin, INPUT);
- duration = pulseIn(capteurPin, HIGH,10000);//On n'attend pas plus de 10 millisecondes le signal de retour.
-
- // convert the time into a distance
- cm = duration / 29 / 2;
- // The speed of sound is 340 m/s or 29 microseconds per centimeter.
- // The ping travels out and back, so to find the distance of the
- // object we take half of the distance travelled.
-
- if(cmseuilDetection=200;
-}
-
-Sharp::Sharp(int capteurPin, int seuil) : Capteur(capteurPin, valeur), seuilDetection(seuil)
-{
- //this->seuilDetection=200;
- //valeur=0;
-
-}
-
-void Sharp::Update()
-{
- valeur = analogRead(capteurPin);
- //Serial.println( capteurPin);
- //Serial.println( analogRead(capteurPin));
- //valeur=0;
-}
-
-int Sharp::VoitQQch()
-{
- Update();
- //if(valeur>seuilDetection)
-
- if(valeur>seuilDetection)
- {
-
- //delay(100);
- return 1;
- }
- else
- {
- //Serial.println(0);
- return 0;
- }
-}
diff --git a/petit_robot/Sharp.h b/petit_robot/Sharp.h
deleted file mode 100644
index 0b9117680a57b04cf065fc45d935f61f022131c0..0000000000000000000000000000000000000000
--- a/petit_robot/Sharp.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef DEF_SHARP // Si la constante n'a pas été définie` le fichier n'a jamais été inclus
-#define DEF_SHARP // On définit la constante pour que la prochaine fois le fichier ne soit plus inclus
-
-
-#include "Capteur.h"
-
-class Sharp : public Capteur//Un sharp est un capteur : héritage !
-{
- public:
-
- Sharp();
- Sharp(int capteurPin, int seuil);
- void Update();//Met à jour la valeur du capteur.
- int VoitQQch();//Renvoit 1 si le capteur voie qqch (d'après seuil), 0 sinon.
-
-
- private:
-
- int seuilDetection;
-
-};
-
-#endif
diff --git a/petit_robot/Ultrason.cpp b/petit_robot/Ultrason.cpp
deleted file mode 100644
index 604637e76dbdd9f9258f4b52d38c36edf7d0f79f..0000000000000000000000000000000000000000
--- a/petit_robot/Ultrason.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "Ultrason.h"
-#include "Arduino.h"
-#include "Capteur.h"
-
-#define DELAI_ATTENTE_MAX 10000//On max, on attent 10ms que le son revienne.
-#define DISTANCE_MAX_DETECTION 25//S'il y a qqch à moins de 25cm, on s'arrete.
-#define DIST_MIN_DETECTION 1//si le capteur renvoit 0, c'est soit que l'objet est très loin, soit qu'il y a un pb.
-
-Ultrason::Ultrason() : Capteur(0)//Je ne vois pas trop comment faire sans mettre un constructeur bidon...
-{
-
-}
-
-
-Ultrason::Ultrason(int capteurPin) : Capteur(capteurPin)
-{
-
-}
-
-int Ultrason::VoitQQch()
-{
- Update();
- if(distance < DISTANCE_MAX_DETECTION)
- {
- return 1;
- }
- else
- {
- return 0;
- }
-}
-
-//int Ultrason::Distance()//Renvoit la distance du plus proche objet du capteur
-void Ultrason::Update()
-{
-
-
- // establish variables for duration of the ping,
- // and the distance result in inches and centimeters:
- long duration, cm;
-
- // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
- // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
- pinMode(capteurPin, OUTPUT);
- digitalWrite(capteurPin, LOW);
- delayMicroseconds(2);
- digitalWrite(capteurPin, HIGH);
- delayMicroseconds(5);
- digitalWrite(capteurPin, LOW);
-
- // The same pin is used to read the signal from the PING))): a HIGH
- // pulse whose duration is the time (in microseconds) from the sending
- // of the ping to the reception of its echo off of an object.
- pinMode(capteurPin, INPUT);
- duration = pulseIn(capteurPin, HIGH,10000);//On n'attend pas plus de 10 millisecondes le signal de retour.
-
- // convert the time into a distance
- cm = duration / 29 / 2;
- // The speed of sound is 340 m/s or 29 microseconds per centimeter.
- // The ping travels out and back, so to find the distance of the
- // object we take half of the distance travelled.
-
- if(cm
-
-/**
- * @brief An abstract class providing an interface for plateform-specific Bluetooth serial connections
- */
-class BluetoothProxy: public AbstractSerialProxy
-{
- Q_OBJECT
- public:
- /**
- * @brief Constructor
- * @param parent
- */
- explicit BluetoothProxy(QObject *parent = 0);
-
- /**
- * @brief Connect to a remote Bluetooth host.
- *
- * Tries to establish a connection to the remote host, using the UUID given by setUUID.
- * @param address The address of the host
- * @see setUUID connected
- */
- virtual void connectToHost(const QString& address) = 0;
-
- /**
- * @brief Disconnect from the remote host
- */
- virtual void disconnect() = 0;
-
- /**
- * @brief Set the local Bluetooth adapter to use
- *
- * Set the local Bluetooth adapter to use for upcoming connections.
- * Note it will reset the connection.
- * @param address The address of the adapter to use
- */
- virtual void setAdapter(const QString& address) = 0;
-
- /**
- * @return The address of the current Bluetooth adapter, or an empty QString
- */
- virtual QString getAdapterAddress() = 0;
-
- /**
- * @brief Returns a list of the local Bluetooth adapters
- * @return A list of the local adapters
- */
- virtual QStringList getAllLocalAdapters() = 0;
-
- /**
- * @brief Initiate a scan of remote Bluetooth devices.
- *
- * This function starts a scan of remote Bluetooth devices. For each and every
- * device discovered, a deviceDiscovered() signal will be emitted.
- * Note that on some plateform, cached devices may be returned, even though
- * they are not in range.
- *
- * @see deviceDiscovered
- */
- virtual void scanRemoteDevices() = 0;
-
- /**
- * @return True is Bluetooth is available on the machine
- */
- virtual bool isBluetoothAvailable() const = 0;
-
- /**
- * @return True is a connection has been established, false otherwise.
- */
- virtual bool isConnected() const = 0;
-
- /**
- * @return The current remote MAC address or an empty QString
- */
- virtual QString remoteAddress() const = 0;
-
- /**
- * @brief Set the UUID
- *
- * Bluetooth UUIDs are a 128-bits 'unique' identifier used to identify a Bluetooth service.
- * While the Bluetooth architecture may be used in a way akin to TCP/UDP (a server, multiple clients, connection through
- * a combination of an address and a port), it is not flexible in any way and inadequate for anything that is not local
- * testing. As such, the service provided by the server (and therefore the protocol used over Bluetooth) has to be
- * identified in some way. The Bluetooth stack will then take care of the port assignation.
- * This means that for a Bluetooth client to connect to a Bluetooth server, the both of them must have the same UUID.
- * See here
- * and here for more informations.
- * @param UUID The UUID formated as 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX', X being an hexadecimal symbol
- */
- void setUUID(const QString& UUID);
-
- /**
- * @brief Returns the current UUID (see setUUID for more details)
- * @return The UUID formated as 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX' or an empty QString
- * @see setUUID
- */
- QString getUUID() const;
-
- signals:
- /**
- * @brief Signal emitted when a remote Bluetooth device is discovered.
- *
- * This signal is emitted every time a remote Bluetooth device is discovered.
- * If N devices are discovered, then it will be call N times, sequentially.
- * Note that on some plateforms, those devices may be cached by the OS, but not actually in range.
- * @param name The name of the remote device
- * @param address The MAC address of the remote device
- */
- void deviceDiscovered(QString name, QString address);
-
- private:
- QString m_UUID;
- QString m_remoteAddress;
-
-};
-
-#endif // BLUETOOTHPROXY_H
diff --git a/remote/majiks/bluetoothproxy/bluetoothproxyqt5.cpp b/remote/majiks/bluetoothproxy/bluetoothproxyqt5.cpp
deleted file mode 100644
index 98dee80ff1ffb050d9edb7f38ffd9218a86f7edc..0000000000000000000000000000000000000000
--- a/remote/majiks/bluetoothproxy/bluetoothproxyqt5.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-#include "bluetoothproxyqt5.h"
-
-
-//#include
-#include
-//#include
-
-#include
-#include
-
-BluetoothProxyQt5::BluetoothProxyQt5(QObject *parent): BluetoothProxy(parent)
-{
- //setUUID("B62C4E8D-62CC-404b-BBBF-BF3E3BBB1374");
-
- //STM32 bluetooth adapter
- setUUID("00001101-0000-1000-8000-00805F9B34FB");
-
- m_socket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommProtocol);
-
- m_discoveryAgent = new QBluetoothDeviceDiscoveryAgent();
-
- connect(m_discoveryAgent, &QBluetoothDeviceDiscoveryAgent::deviceDiscovered, this, &BluetoothProxyQt5::on_deviceDiscovered);
-
- connect(m_socket, &QBluetoothSocket::connected, this, &BluetoothProxyQt5::on_connected);
- connect(m_socket, &QBluetoothSocket::disconnected, this, &BluetoothProxyQt5::on_disconnected);
- connect(m_socket, &QBluetoothSocket::readyRead, this, &BluetoothProxyQt5::readData);
-}
-
-void BluetoothProxyQt5::connectToHost(const QString& address)
-{
- disconnect();
-
- if(m_discoveryAgent->isActive())
- m_discoveryAgent->stop();
-
- m_socket->connectToService(QBluetoothAddress(address), QBluetoothUuid(getUUID()), QIODevice::ReadWrite);
-}
-
-void BluetoothProxyQt5::disconnect()
-{
- m_socket->close();
-}
-
-void BluetoothProxyQt5::on_connected()
-{
- emit connected();
-}
-
-void BluetoothProxyQt5::on_disconnected()
-{
- emit disconnected();
-}
-
-
-QString BluetoothProxyQt5::remoteAddress() const
-{
- return isConnected()?m_socket->peerAddress().toString():QString();
-}
-
-
-void BluetoothProxyQt5::readData()
-{
- qDebug() << "Got milk";
- m_buffer.append(m_socket->readAll());
- processData(m_buffer);
-}
-
-void BluetoothProxyQt5::sendData(KrabiPacket& data)
-{
- if(!isConnected())
- return;
-
- QByteArray binData = data.dataByteArray();
- binData.append(0x0D);
- binData.append(0x0A);
-
- qDebug() << "Sending milk";
-
- m_socket->write(binData);
-}
-
-void BluetoothProxyQt5::setAdapter(const QString& address)
-{
- if(m_localAdapter)
- {
- disconnect();
- m_localAdapter->deleteLater();
- }
-
- m_localAdapter = new QBluetoothLocalDevice(QBluetoothAddress(address), this);
-}
-
-QString BluetoothProxyQt5::getAdapterAddress()
-{
- return m_localAdapter->address().toString();
-}
-
-QStringList BluetoothProxyQt5::getAllLocalAdapters()
-{
- QStringList localDevicesNames;
-
- auto l = QBluetoothLocalDevice::allDevices();
-
- for(auto d: l)
- localDevicesNames << d.name();
-
- return localDevicesNames;
-}
-
-void BluetoothProxyQt5::scanRemoteDevices()
-{
- qDebug() << "Scanning...";
- m_discoveryAgent->start();
-}
-
-void BluetoothProxyQt5::on_deviceDiscovered(const QBluetoothDeviceInfo &info)
-{
- emit deviceDiscovered(info.name(), info.address().toString());
-}
-
-bool BluetoothProxyQt5::isBluetoothAvailable() const
-{
- return !(QBluetoothLocalDevice::allDevices().isEmpty());
-}
-
-bool BluetoothProxyQt5::isConnected() const
-{
- return (m_socket->state() == QBluetoothSocket::ConnectedState);
-}
diff --git a/remote/majiks/bluetoothproxy/bluetoothproxyqt5.h b/remote/majiks/bluetoothproxy/bluetoothproxyqt5.h
deleted file mode 100644
index e72ec995a28fbf03449a843756b8cec3d40a6244..0000000000000000000000000000000000000000
--- a/remote/majiks/bluetoothproxy/bluetoothproxyqt5.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef BLUETOOTHPROXYQT5_H
-#define BLUETOOTHPROXYQT5_H
-
-#include "bluetoothproxy.h"
-
-#include
-
-class QBluetoothLocalDevice;
-class QBluetoothSocket;
-class QBluetoothDeviceDiscoveryAgent;
-class QBluetoothDeviceInfo;
-
-class BluetoothProxyQt5 : public BluetoothProxy
-{
- Q_OBJECT
- public:
- BluetoothProxyQt5(QObject* parent = 0);
-
- virtual void connectToHost(const QString& address);
- virtual void disconnect();
-
- virtual void setAdapter(const QString& address = QString());
- virtual QString getAdapterAddress();
-
- virtual QStringList getAllLocalAdapters();
-
- void sendData(KrabiPacket& data);
-
- virtual void scanRemoteDevices();
-
- virtual bool isBluetoothAvailable() const;
-
- virtual bool isConnected() const;
-
- QString remoteAddress() const;
-
- protected:
-
- QBluetoothLocalDevice* m_localAdapter;
- QBluetoothSocket* m_socket;
- QBluetoothDeviceDiscoveryAgent* m_discoveryAgent;
-
- private:
-
- void on_connected();
- void on_disconnected();
- void on_deviceDiscovered(const QBluetoothDeviceInfo &info);
-
- void readData();
-
- QByteArray m_buffer;
-
-};
-
-#endif // BLUETOOTHPROXYQT5_H
diff --git a/remote/majiks/bluetoothproxy/bluetoothproxywinsock.cpp b/remote/majiks/bluetoothproxy/bluetoothproxywinsock.cpp
deleted file mode 100644
index 6c9df64fbd08481cc045e06274edc80016bd0096..0000000000000000000000000000000000000000
--- a/remote/majiks/bluetoothproxy/bluetoothproxywinsock.cpp
+++ /dev/null
@@ -1,349 +0,0 @@
-#include "bluetoothproxywinsock.h"
-
-#ifdef BLUETOOTH_USING_WINSOCK
-#include
-#include
-#include
-
-#include
-#include
-
-#include
-#include
-#include
-
-// {B62C4E8D-62CC-404b-BBBF-BF3E3BBB1374}
-DEFINE_GUID(g_guidServiceClass, 0xb62c4e8d, 0x62cc, 0x404b, 0xbb, 0xbf, 0xbf, 0x3e, 0x3b, 0xbb, 0x13, 0x74);
-QString getLatestError(int errorCode = 0)
-{
- static TCHAR errmsg[512];
- int er = ((errorCode == 0) ? WSAGetLastError() : errorCode);
-
- if (!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, er, 0, errmsg, 511, NULL))
- {
- /* if we fail, call ourself to find out why and return that error */
- qDebug() << "Error reporting... got an error.";
- return getLatestError();
- }
-
- return QString("Error %1: ").arg(er) + QString::fromWCharArray(errmsg);
-}
-
-BluetoothProxyWinsock::BluetoothProxyWinsock(QObject *parent): BluetoothProxy(parent)
-{
- m_socket = INVALID_SOCKET;
-
- m_listenerThread = new WorkerThread(this);
-
- WSADATA wsaData;
- WORD wVersionRequested = MAKEWORD(2, 0);
-
- if(WSAStartup( wVersionRequested, &wsaData ) != NO_ERROR)
- {
- qDebug() << "Couldn't initialize PoS sockets";
- }
- else
- qDebug() << "Winsock2 initializated";
-
- //connectToHost("00:1A:7D:DA:71:05");
-
-}
-
-BluetoothProxyWinsock::WorkerThread::WorkerThread(BluetoothProxyWinsock* overseer): QThread(overseer),m_running(false),m_overseer(overseer) {}
-
-BluetoothProxyWinsock::~BluetoothProxyWinsock()
-{
- WSACleanup();
- qDebug() << "Winsock2 cleaned up";
-}
-
-
-bool CharToDigit(char c, uint8_t* digit) {
- if (c >= '0' && c <= '9') {
- *digit = c - '0';
- } else if (c >= 'a' && c < 'a' + 16 - 10) {
- *digit = c - 'a' + 10;
- } else if (c >= 'A' && c < 'A' + 16 - 10) {
- *digit = c - 'A' + 10;
- } else {
- return false;
- }
- return true;
-}
-
-bool HexStringToBytes(const std::string& input, std::vector* output)
-{
- //DCHECK_EQ(output->size(), 0u);
- size_t count = input.size();
- if (count == 0 || (count % 2) != 0)
- return false;
- for (uintptr_t i = 0; i < count / 2; ++i) {
- uint8_t msb = 0; // most significant 4 bits
- uint8_t lsb = 0; // least significant 4 bits
- if (!CharToDigit(input[i * 2], &msb) ||
- !CharToDigit(input[i * 2 + 1], &lsb))
- return false;
- output->push_back((msb << 4) | lsb);
- }
- return true;
-}
-
-BTH_ADDR ConvertToBthAddr(const QString& add)
-{
- std::string address = add.toStdString();
- BTH_ADDR bth_addr = 0;
- std::string numbers_only;
- for (int i = 0; i < 6; ++i) {
- numbers_only += address.substr(i * 3, 2);
- }
-
- std::vector address_bytes;
- HexStringToBytes(numbers_only, &address_bytes);
- int byte_position = 0;
- for (std::vector::reverse_iterator iter = address_bytes.rbegin();
- iter != address_bytes.rend(); ++iter) {
- bth_addr += *iter * pow(256.0, byte_position);
- byte_position++;
- }
- return bth_addr;
-}
-
-void BluetoothProxyWinsock::connectToHost(const QString& address)
-{
- // Will soft-kill the listener thread
- disconnect();
-
- SOCKADDR_BTH addressStruct {};
-
- //WSAStringToAddress((LPTSTR)(address.toStdString().c_str()), AF_BTH, NULL, reinterpret_cast(&addressStruct), (LPINT)sizeof(SOCKADDR_BTH));
-
- qDebug() << "Address: " << addressStruct.btAddr;
-
- addressStruct.btAddr = ConvertToBthAddr(address);
-
- qDebug() << "Address: " << addressStruct.btAddr;
-
- addressStruct.addressFamily = AF_BTH;
- addressStruct.serviceClassId = g_guidServiceClass;
- addressStruct.port = 0;
-
- // Will wait for the listener thread to stop
- QMutexLocker lock(&m_socketMutex);
-
- m_socket = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
- if(m_socket == INVALID_SOCKET)
- {
- qDebug() << "Socket PoS init failed";
- return;
- }
-
- qDebug() << "Socket init OK";
-
- if(::connect(m_socket, (struct sockaddr*)&addressStruct, sizeof(SOCKADDR_BTH)) == SOCKET_ERROR)
- {
- qDebug() << "Socket PoS couldn't connect to " << address;
- qDebug() << "Error: " << getLatestError();
- closesocket(m_socket);
- m_socket = INVALID_SOCKET;
- }
- else
- {
- m_remoteAddress = address;
-
- // Restart the listener thread
- m_listenerThread->start();
- }
-
-}
-
-QString BluetoothProxyWinsock::remoteAddress() const
-{
- return m_remoteAddress;
-}
-
-void BluetoothProxyWinsock::disconnect()
-{
- m_listenerThread->softKill();
-}
-
-void BluetoothProxyWinsock::WorkerThread::softKill()
-{
- QMutexLocker lock(&m_runningMutex);
- m_running = false;
-}
-
-void BluetoothProxyWinsock::WorkerThread::run()
-{
- // We expressely forbit ANY other thread from accessing the socket as long as this routine is running
- QMutexLocker lock(&(m_overseer->m_socketMutex));
-
- if(m_overseer->m_socket == INVALID_SOCKET)
- return;
-
- m_overseer->connected(); // 'emit' hack, see https://stackoverflow.com/questions/15176458/how-can-i-emit-a-signal-from-another-class
- qDebug() << "Connected";
-
- m_runningMutex.lock();
- m_running = true;
- m_runningMutex.unlock();
-
- bool localRunning = true;;
-
- do
- {
- receiveAll();
-
- sendAll();
-
- m_runningMutex.lock();
- localRunning = m_running;
- m_runningMutex.unlock();
- } while(localRunning);
-
- closesocket(m_overseer->m_socket);
- m_overseer->m_socket = INVALID_SOCKET;
-
- m_overseer->m_remoteAddress.clear();
-
- m_overseer->disconnected(); // 'emit' hack
- qDebug() << "Disconnected";
-}
-
-void BluetoothProxyWinsock::WorkerThread::receiveAll()
-{
- int bufferSize = 64;
-
- std::unique_ptr buffer(new char[bufferSize]);
- int pendingDataSize = recv(m_overseer->m_socket, buffer.get(), bufferSize, 0);
-
- if(pendingDataSize == SOCKET_ERROR || pendingDataSize < 0)
- {
- qDebug() << "PoS socket got an error while reading!";
- qDebug() << "Error: " << getLatestError();
- }
- else
- {
- m_rcvBuffer.append(buffer.get(), pendingDataSize);
-
- if(bufferSize < pendingDataSize)
- {
- std::unique_ptr buffer2(new char[pendingDataSize - bufferSize]);
- if(recv(m_overseer->m_socket, buffer2.get(), pendingDataSize - bufferSize, 0) == SOCKET_ERROR)
- {
- qDebug() << "PoS socket got an error while reading!";
- qDebug() << "Error: " << getLatestError();
- }
- m_rcvBuffer.append(buffer2.get(), pendingDataSize - bufferSize);
- }
- }
-
- m_overseer->processData(m_rcvBuffer);
-}
-
-
-void BluetoothProxyWinsock::WorkerThread::sendAll()
-{
- QMutexLocker lock(&m_packetQueueMutex);
-
- while(!m_packetQueue.isEmpty())
- {
- KrabiPacket packet = m_packetQueue.dequeue();
-
- QByteArray binData = packet.dataByteArray();
- binData.append(0x0D);
- binData.append(0x0A);
-
- if(send(m_overseer->m_socket, binData.data(), binData.size(), 0) == SOCKET_ERROR)
- {
- qDebug() << "PoS sockets failed to send data!";
- }
- }
-}
-
-void BluetoothProxyWinsock::WorkerThread::sendPacket(KrabiPacket packet)
-{
- QMutexLocker lock(&m_packetQueueMutex);
- m_packetQueue.enqueue(packet);
-}
-
-
-void BluetoothProxyWinsock::setAdapter(const QString&/* address*/)
-{
-}
-
-QString BluetoothProxyWinsock::getAdapterAddress()
-{
- return QString();
-}
-
-
-QStringList BluetoothProxyWinsock::getAllLocalAdapters()
-{
- return QStringList();
-}
-
-
-void BluetoothProxyWinsock::sendData(KrabiPacket& data)
-{
- if(!isConnected())
- return;
-
- m_listenerThread->sendPacket(data);
-}
-
-void BluetoothProxyWinsock::scanRemoteDevices()
-{
- WSAQUERYSET queryset;
- memset(&queryset, 0, sizeof(WSAQUERYSET));
- queryset.dwSize = sizeof(WSAQUERYSET);
- queryset.dwNameSpace = NS_BTH;
-
- HANDLE hLookup;
- int result = WSALookupServiceBegin(&queryset, LUP_CONTAINERS, &hLookup);
- if (result!=0)
- {
- qDebug() << "Fail : " << getLatestError();
- return;
- }
-
- BYTE buffer[4096];
- memset(buffer, 0, sizeof(buffer));
- DWORD bufferLength = sizeof(buffer);
- WSAQUERYSET *pResults = (WSAQUERYSET*)&buffer;
- do
- {
- result = WSALookupServiceNext(hLookup, LUP_RETURN_NAME | LUP_CONTAINERS | LUP_RETURN_ADDR | LUP_FLUSHCACHE | LUP_RETURN_TYPE | LUP_RETURN_BLOB | LUP_RES_SERVICE, &bufferLength, pResults);
- if(result==0)
- {
- QString name = QString::fromWCharArray(pResults->lpszServiceInstanceName);
-
- WCHAR wAddress[100];
- DWORD wSize = sizeof(wAddress);
- WSAAddressToString(pResults->lpcsaBuffer->RemoteAddr.lpSockaddr,pResults->lpcsaBuffer->RemoteAddr.iSockaddrLength,NULL, wAddress, &wSize);
- QString address = QString::fromWCharArray(wAddress);
-
- emit deviceDiscovered(name, address.mid(1, address.size()-2));
- }
- } while(result == 0);
-
- WSALookupServiceEnd(&hLookup);
-
-}
-
-bool BluetoothProxyWinsock::isBluetoothAvailable() const
-{
- SOCKET s = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
-
- const bool canUseBluetooth = (s != INVALID_SOCKET);
-
- closesocket(s);
-
- return canUseBluetooth;
-}
-
-bool BluetoothProxyWinsock::isConnected() const
-{
- return m_listenerThread->isRunning();
-}
-
-#endif
diff --git a/remote/majiks/bluetoothproxy/bluetoothproxywinsock.h b/remote/majiks/bluetoothproxy/bluetoothproxywinsock.h
deleted file mode 100644
index bf4e0dc81d3c5089bb94e8b74309745d74886ced..0000000000000000000000000000000000000000
--- a/remote/majiks/bluetoothproxy/bluetoothproxywinsock.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#ifndef BLUETOOTHPROXYWINSOCK_H
-#define BLUETOOTHPROXYWINSOCK_H
-
-#ifdef BLUETOOTH_USING_WINSOCK
-
-#include "bluetoothproxy.h"
-
-#include
-#include
-#include
-
-#include
-#include
-
-class BluetoothProxyWinsock : public BluetoothProxy
-{
- Q_OBJECT
-
- private:
- class WorkerThread: public QThread
- {
- public:
- WorkerThread(BluetoothProxyWinsock* overseer);
-
- void softKill();
- void sendPacket(KrabiPacket packet);
-
- private:
- void run();
-
- bool m_running;
- QMutex m_runningMutex;
-
- QQueue m_packetQueue;
- QMutex m_packetQueueMutex;
-
- QByteArray m_rcvBuffer;
-
- void receiveAll();
- void sendAll();
-
- BluetoothProxyWinsock* m_overseer;
-
- };
-
- friend class WorkerThread;
-
- public:
- BluetoothProxyWinsock(QObject* parent = 0);
- ~BluetoothProxyWinsock();
-
- virtual void connectToHost(const QString& address);
- virtual void disconnect();
-
- virtual void setAdapter(const QString& address = QString());
- virtual QString getAdapterAddress();
-
- virtual QStringList getAllLocalAdapters();
-
- void sendData(KrabiPacket& data);
-
- virtual void scanRemoteDevices();
-
- bool isBluetoothAvailable() const;
-
- virtual bool isConnected() const;
-
- virtual QString remoteAddress() const;
-
- protected:
-
- SOCKET m_socket;
- QMutex m_socketMutex;
-
- private:
- WorkerThread* m_listenerThread;
-
- QString m_remoteAddress;
-};
-
-#endif
-
-#endif // BLUETOOTHPROXYWINSOCK_H
diff --git a/remote/majiks/bluetoothtestserver.cpp b/remote/majiks/bluetoothtestserver.cpp
deleted file mode 100644
index 1aef58b82ee7d9f88325eb2a15f5c998d941477c..0000000000000000000000000000000000000000
--- a/remote/majiks/bluetoothtestserver.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-#include "bluetoothtestserver.h"
-
-#include
-#include
-#include
-
-#include "krabipacket.h"
-
-#include
-
-BluetoothTestServer::BluetoothTestServer(QObject *parent): QObject(parent)
-{
- m_server = new QBluetoothServer(QBluetoothServiceInfo::RfcommProtocol, this);
-
- connect(m_server, &QBluetoothServer::newConnection, this, &BluetoothTestServer::clientConnected);
-
- QBluetoothServiceInfo info = m_server->listen(QBluetoothUuid(QString("B62C4E8D-62CC-404b-BBBF-BF3E3BBB1374")));
-
- if(!info.isValid())
- {
- qDebug() << "Cannot setup server";
- }
- else
- qDebug() << "Server started";
-}
-
-void BluetoothTestServer::clientConnected()
-{
- QBluetoothSocket *socket = m_server->nextPendingConnection();
- if (!socket)
- return;
-
- connect(socket, &QBluetoothSocket::readyRead, std::bind(&BluetoothTestServer::receiveData, this, socket));
- connect(socket, &QBluetoothSocket::disconnected, std::bind(&BluetoothTestServer::clientDisconnected, this, socket));
-
- m_clients.append(socket);
-
- qDebug() << "Client connected: " << socket->peerName();
-}
-
-
-void BluetoothTestServer::receiveData(QBluetoothSocket* client)
-{
- qDebug() << "Data received!";
-
- m_buffer.append(client->readAll());
-
- processData(m_buffer);
-}
-
-
-int BluetoothTestServer::processData(QByteArray& data)
-{
- if(data.size() < 2)
- return 0;
-
- int packetsProcessed = 0;
-
- for(int i = 0; i < data.size() -1; ++i)
- {
- if(! (data.at(i) == 0x0D && data.at(i+1) == 0x0A))
- continue;
-
- if (i < KRABIPACKET_MAXSIZE)
- {
- KrabiPacket packet(data.left(i));
-
- if (packet.isValid())
- {
- qDebug() << "Received valid packet";
- qDebug() << "Type: " << packet.id();
- }
- else
- qDebug() << "Discarding packet (invalid checksum)";
- ++packetsProcessed;
- }
-
- data = data.right(data.size() - (i + 2));
- i = 0;
- }
-
- return packetsProcessed;
-}
-
-
-
-void BluetoothTestServer::clientDisconnected(QBluetoothSocket* client)
-{
- qDebug() << "Client disconnected";
- m_clients.removeAll(client);
-}
diff --git a/remote/majiks/bluetoothtestserver.h b/remote/majiks/bluetoothtestserver.h
deleted file mode 100644
index 51914b536d6a6df458562bddf26cac3d32669358..0000000000000000000000000000000000000000
--- a/remote/majiks/bluetoothtestserver.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef BLUETOOTHTESTSERVER_H
-#define BLUETOOTHTESTSERVER_H
-
-#include
-
-#include
-
-class QBluetoothServer;
-class QBluetoothSocket;
-
-class BluetoothTestServer: public QObject
-{
- public:
- BluetoothTestServer(QObject* parent = 0);
-
- signals:
-
- private:
-
- void receiveData(QBluetoothSocket* client);
- void clientDisconnected(QBluetoothSocket* client);
- void clientConnected();
- int processData(QByteArray& data);
-
- QBluetoothServer* m_server;
- QList m_clients;
-
- QByteArray m_buffer;
-
-};
-
-#endif // BLUETOOTHTESTSERVER_H
diff --git a/remote/majiks/doxygen-config b/remote/majiks/doxygen-config
deleted file mode 100644
index 23a9f4a315009db6c0bbe8c01dd02d1928c25fac..0000000000000000000000000000000000000000
--- a/remote/majiks/doxygen-config
+++ /dev/null
@@ -1,2477 +0,0 @@
-# Doxyfile 1.8.11
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME = Majiks
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF = "Remote control for Krabi robots"
-
-# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
-# in the documentation. The maximum height of the logo should not exceed 55
-# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
-# the logo to the output directory.
-
-PROJECT_LOGO =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = D:\DataDump\Robotique\Git\gitRobotique\remote\doc
-
-# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS = NO
-
-# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
-# characters to appear in the names of generated files. If set to NO, non-ASCII
-# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
-# U+3044.
-# The default value is: NO.
-
-ALLOW_UNICODE_NAMES = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF = "The $name class" \
- "The $name widget" \
- "The $name file" \
- is \
- provides \
- specifies \
- contains \
- represents \
- a \
- an \
- the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES = YES
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
-# page for each member. If set to NO, the documentation of a member will be part
-# of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE = 4
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
-# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
-# Fortran. In the later case the parser tries to guess whether the code is fixed
-# or free formatted code, this is the default for Fortran type files), VHDL. For
-# instance to make doxygen treat .inc files as Fortran files (default is PHP),
-# and .f files as C (default is Fortran), use: inc=Fortran f=C.
-#
-# Note: For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT = YES
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# If one adds a struct or class to a group and this option is enabled, then also
-# any nested class or struct is added to the same group. By default this option
-# is disabled and one has to add nested compounds explicitly via \ingroup.
-# The default value is: NO.
-
-GROUP_NESTED_COMPOUNDS = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE = NO
-
-# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO,
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. If set to YES, local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO, only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO, these classes will be included in the various overviews. This option
-# has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO, these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO, these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES, upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES, the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
-# append additional text to a page's title, such as Class Reference. If set to
-# YES the compound reference will be hidden.
-# The default value is: NO.
-
-HIDE_COMPOUND_REFERENCE= NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
-# list. This list is created by putting \todo commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
-# list. This list is created by putting \test commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if ... \endif and \cond
-# ... \endcond blocks.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES, the
-# list will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. See also \cite for info how to create references.
-
-CITE_BIB_FILES =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO, doxygen will only warn about wrong or incomplete
-# parameter documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC = NO
-
-# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
-# a warning is encountered.
-# The default value is: NO.
-
-WARN_AS_ERROR = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
-# Note: If this tag is empty the current directory is searched.
-
-INPUT = D:\DataDump\Robotique\Git\gitRobotique\remote\majiks
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# read by doxygen.
-#
-# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
-# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
-# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
-# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl,
-# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js.
-
-FILE_PATTERNS = *.c \
- *.cc \
- *.cxx \
- *.cpp \
- *.c++ \
- *.java \
- *.ii \
- *.ixx \
- *.ipp \
- *.i++ \
- *.inl \
- *.idl \
- *.ddl \
- *.odl \
- *.h \
- *.hh \
- *.hxx \
- *.hpp \
- *.h++ \
- *.cs \
- *.d \
- *.php \
- *.php4 \
- *.php5 \
- *.phtml \
- *.inc \
- *.m \
- *.markdown \
- *.md \
- *.mm \
- *.dox \
- *.py \
- *.pyw \
- *.f90 \
- *.f \
- *.for \
- *.tcl \
- *.vhd \
- *.vhdl \
- *.ucf \
- *.qsf \
- *.as \
- *.js
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-#
-#
-# where is the value of the INPUT_FILTER tag, and is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# properly processed by doxygen.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# properly processed by doxygen.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS = YES
-
-# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
-# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
-# cost of reduced performance. This can be particularly helpful with template
-# rich C++ code for which doxygen's built-in parser lacks the necessary type
-# information.
-# Note: The availability of this option depends on whether or not doxygen was
-# generated with the -Duse-libclang=ON option for CMake.
-# The default value is: NO.
-
-CLANG_ASSISTED_PARSING = NO
-
-# If clang assisted parsing is enabled you can provide the compiler with command
-# line options that you would normally use when invoking the compiler. Note that
-# the include paths will already be set by doxygen for the files and directories
-# specified with INPUT and INCLUDE_PATH.
-# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
-
-CLANG_OPTIONS =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX = YES
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefore more robust against future updates.
-# Doxygen will copy the style sheet files to the output directory.
-# Note: The order of the extra style sheet files is of importance (e.g. the last
-# style sheet in the list overrules the setting of the previous ones in the
-# list). For an example see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the style sheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to YES can help to show when doxygen was last run and thus if the
-# documentation is up to date.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP = NO
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler (hhc.exe). If non-empty,
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the master .chm file (NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated
-# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
-# enables the Previous and Next buttons.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW = YES
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH = 250
-
-# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use + S
-# (what the is depends on the OS and browser, but it is typically
-# , /