Initial commit

This commit is contained in:
Dionysus 2024-05-23 18:42:03 -04:00
commit 96c6e96d12
Signed by: acidvegas
GPG Key ID: EF4B922DB85DC9DE
2402 changed files with 1190154 additions and 0 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
.pio
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch

BIN
.screens/aciddrop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
.screens/aciddrop2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

10
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,10 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"platformio.platformio-ide"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"
]
}

56
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,56 @@
{
"files.associations": {
"array": "cpp",
"atomic": "cpp",
"*.tcc": "cpp",
"cctype": "cpp",
"chrono": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"deque": "cpp",
"unordered_map": "cpp",
"unordered_set": "cpp",
"vector": "cpp",
"exception": "cpp",
"algorithm": "cpp",
"functional": "cpp",
"iterator": "cpp",
"map": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"numeric": "cpp",
"optional": "cpp",
"random": "cpp",
"ratio": "cpp",
"string": "cpp",
"string_view": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"fstream": "cpp",
"initializer_list": "cpp",
"iomanip": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"istream": "cpp",
"limits": "cpp",
"new": "cpp",
"ostream": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"thread": "cpp",
"cinttypes": "cpp",
"typeinfo": "cpp"
}
}

674
LICENSE Normal file
View File

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
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.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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 <https://www.gnu.org/licenses/>.
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:
<program> Copyright (C) <year> <name of author>
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
<https://www.gnu.org/licenses/>.
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
<https://www.gnu.org/licenses/why-not-lgpl.html>.

31
README.md Normal file
View File

@ -0,0 +1,31 @@
<p align="center">
<img src="./.screens/aciddrop.png" />
</p>
# Work in progress
This is a custom firmware being developed for the [LilyGo T-Deck](https://www.lilygo.cc/products/t-deck), currently it is experimental & buggy.
I am terrible at C++ and still am trying to wrap my head around the language's logic, so most of this code has been shit out and written like a cowboy.
The project started out with as IRC bridge for [Meshtastic](https://meshtastic.org/) over MQTT, just so I could say "we have IRC over radio", which later led to me modifying the official Meshtastic [firmware](https://github.com/meshtastic/firmware) to add extended features. I am deep in the rabbit whole of embedded development and am starting from scratch making this an entirely custom firmware.
This is being developed in my free time as a fun project. It is no where near being useful.
# Roapmap
- IRC Client
- ChatGPT
- SSH Client
- Wardriving
- Gotify
- Meshtastic
- Notifcations
- Status bar
- Trackball support
# Contributors
Join us in **#comms** on **[irc.supernets.org](irc://irc.supernets.org)** if you want to get your hands dirty.
___
###### Mirrors for this repository: [acid.vegas](https://git.acid.vegas/acid-drop) • [SuperNETs](https://git.supernets.org/acidvegas/acid-drop) • [GitHub](https://github.com/acidvegas/acid-drop) • [GitLab](https://gitlab.com/acidvegas/acid-drop) • [Codeberg](https://codeberg.org/acidvegas/acid-drop)

View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Pangodream
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,2 @@
# 18650CL
Library to calculate 18650 charge in Arduino environment

View File

@ -0,0 +1,28 @@
#include <Pangodream_18650_CL.h>
//#define ADC_PIN 34
//#define CONV_FACTOR 1.7
//#define READS 20
Pangodream_18650_CL BL;
/**
* If you need to change default values you can use it as
* Pangodream_18650_CL BL(ADC_PIN, CONV_FACTOR, READS);
*/
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.print("Value from pin: ");
Serial.println(analogRead(34));
Serial.print("Average value from pin: ");
Serial.println(BL.pinRead());
Serial.print("Volts: ");
Serial.println(BL.getBatteryVolts());
Serial.print("Charge level: ");
Serial.println(BL.getBatteryChargeLevel());
Serial.println("");
delay(1000);
}

View File

@ -0,0 +1,18 @@
#######################################
# Syntax Coloring Map BH1750FVI
#######################################
#######################################
# Datatypes (KEYWORD1)
#######################################
Pangodream_18650_CL KEYWORD1
#######################################
# Methods and Functions (KEYWORD2)
#######################################
getBatteryChargeLevel KEYWORD2
getBatteryVolts KEYWORD2
getAnalogPin KEYWORD2
pinRead KEYWORD2
getConvFactor KEYWORD2

View File

@ -0,0 +1,9 @@
name=Pangodream_18650_CL
version=1.0.1
author=Pangodream
maintainer=Pangodream
sentence=Pangodream Library to calculate 18650 charge
paragraph=Pangodream Library to calculate 18650 Ion-Li battery charge
category=Uncategorized
url=https://github.com/pangodream/18650CL
architectures=esp32

View File

@ -0,0 +1,154 @@
/*
MIT License
Copyright (c) 2019 Pangodream
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#include "Arduino.h"
#include "Pangodream_18650_CL.h"
Pangodream_18650_CL::Pangodream_18650_CL(int addressPin, double convFactor, int reads)
{
_reads = reads;
_convFactor = convFactor;
_addressPin = addressPin;
_initVoltsArray();
}
Pangodream_18650_CL::Pangodream_18650_CL(int addressPin, double convFactor)
{
_reads = DEF_READS;
_convFactor = convFactor;
_addressPin = addressPin;
_initVoltsArray();
}
Pangodream_18650_CL::Pangodream_18650_CL(int addressPin)
{
_reads = DEF_READS;
_convFactor = DEF_CONV_FACTOR;
_addressPin = addressPin;
_initVoltsArray();
}
Pangodream_18650_CL::Pangodream_18650_CL()
{
_reads = DEF_READS;
_convFactor = DEF_CONV_FACTOR;
_addressPin = DEF_PIN;
_initVoltsArray();
}
int Pangodream_18650_CL::getAnalogPin()
{
return _addressPin;
}
double Pangodream_18650_CL::getConvFactor()
{
return _convFactor;
}
/**
* Loads each voltage value in its matching charge element (index)
*/
void Pangodream_18650_CL::_initVoltsArray(){
_vs[0] = 3.200;
_vs[1] = 3.250; _vs[2] = 3.300; _vs[3] = 3.350; _vs[4] = 3.400; _vs[5] = 3.450;
_vs[6] = 3.500; _vs[7] = 3.550; _vs[8] = 3.600; _vs[9] = 3.650; _vs[10] = 3.700;
_vs[11] = 3.703; _vs[12] = 3.706; _vs[13] = 3.710; _vs[14] = 3.713; _vs[15] = 3.716;
_vs[16] = 3.719; _vs[17] = 3.723; _vs[18] = 3.726; _vs[19] = 3.729; _vs[20] = 3.732;
_vs[21] = 3.735; _vs[22] = 3.739; _vs[23] = 3.742; _vs[24] = 3.745; _vs[25] = 3.748;
_vs[26] = 3.752; _vs[27] = 3.755; _vs[28] = 3.758; _vs[29] = 3.761; _vs[30] = 3.765;
_vs[31] = 3.768; _vs[32] = 3.771; _vs[33] = 3.774; _vs[34] = 3.777; _vs[35] = 3.781;
_vs[36] = 3.784; _vs[37] = 3.787; _vs[38] = 3.790; _vs[39] = 3.794; _vs[40] = 3.797;
_vs[41] = 3.800; _vs[42] = 3.805; _vs[43] = 3.811; _vs[44] = 3.816; _vs[45] = 3.821;
_vs[46] = 3.826; _vs[47] = 3.832; _vs[48] = 3.837; _vs[49] = 3.842; _vs[50] = 3.847;
_vs[51] = 3.853; _vs[52] = 3.858; _vs[53] = 3.863; _vs[54] = 3.868; _vs[55] = 3.874;
_vs[56] = 3.879; _vs[57] = 3.884; _vs[58] = 3.889; _vs[59] = 3.895; _vs[60] = 3.900;
_vs[61] = 3.906; _vs[62] = 3.911; _vs[63] = 3.917; _vs[64] = 3.922; _vs[65] = 3.928;
_vs[66] = 3.933; _vs[67] = 3.939; _vs[68] = 3.944; _vs[69] = 3.950; _vs[70] = 3.956;
_vs[71] = 3.961; _vs[72] = 3.967; _vs[73] = 3.972; _vs[74] = 3.978; _vs[75] = 3.983;
_vs[76] = 3.989; _vs[77] = 3.994; _vs[78] = 4.000; _vs[79] = 4.008; _vs[80] = 4.015;
_vs[81] = 4.023; _vs[82] = 4.031; _vs[83] = 4.038; _vs[84] = 4.046; _vs[85] = 4.054;
_vs[86] = 4.062; _vs[87] = 4.069; _vs[88] = 4.077; _vs[89] = 4.085; _vs[90] = 4.092;
_vs[91] = 4.100; _vs[92] = 4.111; _vs[93] = 4.122; _vs[94] = 4.133; _vs[95] = 4.144;
_vs[96] = 4.156; _vs[97] = 4.167; _vs[98] = 4.178; _vs[99] = 4.189; _vs[100] = 4.200;
}
int Pangodream_18650_CL::getBatteryChargeLevel()
{
int readValue = _analogRead(_addressPin);
double volts = _analogReadToVolts(readValue);
int chargeLevel = _getChargeLevel(volts);
return chargeLevel;
}
int Pangodream_18650_CL::pinRead(){
return _analogRead(_addressPin);
}
int Pangodream_18650_CL::_analogRead(int pinNumber){
int totalValue = 0;
int averageValue = 0;
for(int i = 0; i < _reads; i++){
totalValue += analogRead(pinNumber);
}
averageValue = totalValue / _reads;
return averageValue;
}
/**
* Performs a binary search to find the index corresponding to a voltage.
* The index of the array is the charge %
*/
int Pangodream_18650_CL::_getChargeLevel(double volts){
int idx = 50;
int prev = 0;
int half = 0;
if (volts >= 4.2){
return 100;
}
if (volts <= 3.2){
return 0;
}
while(true){
half = abs(idx - prev) / 2;
prev = idx;
if(volts >= _vs[idx]){
idx = idx + half;
}else{
idx = idx - half;
}
if (prev == idx){
break;
}
}
return idx;
}
double Pangodream_18650_CL::_analogReadToVolts(int readValue){
double volts;
volts = readValue * _convFactor / 1000;
return volts;
}
double Pangodream_18650_CL::getBatteryVolts(){
int readValue = analogRead(_addressPin);
return _analogReadToVolts(readValue);
}

View File

@ -0,0 +1,94 @@
/*
MIT License
Copyright (c) 2019 Pangodream
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
/*
* 18650 Ion-Li battery charge
*/
#ifndef Pangodream_18650_CL_h
#define Pangodream_18650_CL_h
#include "Arduino.h"
#define DEF_PIN 34
#define DEF_CONV_FACTOR 1.7
#define DEF_READS 20
/*
* 18650 Ion-Li battery charge
* Calculates charge level of an 18650 Ion-Li battery
*/
class Pangodream_18650_CL {
public:
/*
* Constructor
* @param addressPin, ADC pin number where the voltage divider is connected to
*/
Pangodream_18650_CL(int addressPin);
/*
* Constructor
* @param addressPin, ADC pin number where the voltage divider is connected to
* @param convFactor, Convertion factor for analog read units to volts
*/
Pangodream_18650_CL(int addressPin, double convFactor);
/*
* Constructor
* @param addressPin, ADC pin number where the voltage divider is connected to
* @param convFactor, Convertion factor for analog read units to volts
* @param reads, Number of reads of analog pin to calculate an average value
*/
Pangodream_18650_CL(int addressPin, double convFactor, int reads);
/*
* Constructor
*/
Pangodream_18650_CL();
/*
* Get the battery charge level (0-100)
* @return The calculated battery charge level
*/
int getBatteryChargeLevel();
double getBatteryVolts();
int getAnalogPin();
int pinRead();
double getConvFactor();
private:
int _addressPin; //!< ADC pin used, default is GPIO34 - ADC1_6
int _reads; //Number of reads of ADC pin to calculate an average value
double _convFactor; //!< Convertion factor to translate analog units to volts
double _vs[101]; //Array with voltage - charge definitions
void _initVoltsArray();
int _getChargeLevel(double volts);
int _analogRead(int pinNumber);
double _analogReadToVolts(int readValue);
};
#endif

View File

@ -0,0 +1,86 @@
# Changelog
* Unreleased
* 1.3.3 (2019-03-10)
* Add blurb about using `pinMode()` and button wiring configurations in
README.md based on feedback from
[Issue #19](https://github.com/bxparks/AceButton/issues/19).
* Add `AceButton::isPressedRaw()` to determine the state of the button upon
booting the device.
(See [Issue #21](https://github.com/bxparks/AceButton/issues/21))
* 1.3.2 (2018-12-30)
* Year-end maintenance release. No functional change.
* Fix minor spelling and grammar mistakes in README.md.
* Remove `virtual` when using `override` per C++ core style guide.
* Update auniter.ini for compatibility with latest ESP32 and Sparkfun cores.
* 1.3.1 (2018-09-30)
* Fix botched release on GitHub. Same as v1.3.
* 1.3 (2018-09-30)
* Merge `AdjustableButtonConfig` into `ButtonConfig` and deprecated
`AdjustableButtonConfig`. See
[Issue #13](https://github.com/bxparks/AceButton/issues/13) for
benchmarks which show that the theoretical increase of static RAM
consumption does not often happen in practice because of compiler
optimization.
* Reduce default value of `getDebounceDelay()` from 50 ms to 20 ms
to improve perceived responsiveness of buttons when they are rapidly
pressed on and off. See
[Issue #14](https://github.com/bxparks/AceButton/issues/14)
for details.
* Update `tests/auniter.ini` and `Jenkinsfile` for compatibility with
AUniter v1.7. Add `CapacitiveSensor` to the exclude list for
`env:esp8266` and `env:esp32` because it doesn't compile under those
environments.
* Remove leading zero in `ACE_BUTTON_VERSION` because that I forgot that it
means an octal number.
* 1.2 (2018-08-14)
* Add `AceButton(ButtonConfig*)` constructor to support constructor
dependency injection. Recommended over `setButtonConfig()`.
Should be 100% backwards compatible.
* Add examples/CapacitiveSwitch program to demonstrate integration
with CapacitiveSensor library to support capacitive switches.
* Add continuous integration using AUniter/Jenkins.
* 1.1.1 (2018-06-21)
* Fix compiler warnings about unused parameters in eventHandler callback.
* Move AutoBenchmark results into AutoBenchmark/README.md.
* Update various links in AceButton/README.md.
* No functional or API change.
* 1.1.0 (2018-05-03)
* Change to MIT License.
* Add instrumentation of AceButton.check() using TimingStats to measure
performance. (Fixes #9)
* Add `examples/AutoBenchmark` sketch to auto-generate benchmarks for
various microcontrollers.
* Verify that library and examples compile, and the tests pass for ESP32.
* Add a third method for distinguishing Clicked from DoubleClicked using
both techniques described in 1.0.6.
* 1.0.6 (2018-03-25)
* Add `kFeatureSuppressClickBeforeDoubleClick` flag to suppress
Clicked event before a DoubleClicked event, at the cost of slower
response time of the Clicked event. Added 2 more examples to demonstrate 2
methods to distinguish between a Clicked and DoubleClicked.
* Publish [doxygen docs](https://bxparks.github.io/AceButton/html/)
on GitHub Pages.
* 1.0.5 (2018-03-17)
* Migrate unit tests to [AUnit](https://github.com/bxparks/AUnit).
* Fix various typos in README.md.
* 1.0.4 (2018-03-07)
* Support ESP8266.
* Split `loop()` in `Stopwatch.ino` into inner and outer loops, to
allow `loop()` to return periodically.
* Perform manual testing, since ArduinoUnit does not work on ESP8266.
* Optimize `check()` so that `checkOrphanedClick()` is called only when
needed.
* README.md: add benchmark numbers for ESP8266, fix typos.
* Fix various compiler warnings about unused variables.
* 1.0.3 (2018-02-13)
* Make library work on Teensy LC and 3.2.
* Fix `elapsedTime` expression that breaks on 32-bit processors
(whose `int` is 4 bytes instead of 2).
* 1.0.2 (2018-02-07)
* Add documentation and unit tests for `AdjustableButtonConfig`.
* Reduce `orphanClickDelay` to 1X `getDoubleClickDelay()` instead of 10X.
* 1.0.1 (2018-02-03)
* Fix typo in 'library.properties'.
* 1.0.0 (2018-02-03)
* Initial public release.

View File

@ -0,0 +1,85 @@
# How to Contribute
Thank you for your interest in this library. I do appreciate any constructive
comments or suggestions about this library. If you would like to contribute
code, please do the following for non-trivial changes:
1. Create an [issue](https://github.com/bxparks/AceButton/issues) or send me
an email so that I have some advance warning on what you would like to
change.
1. Please rebase your branch off the 'develop' branch, and preferably squash all
your changes into a single commit so that it's easier to review.
## Coding Style
I use the following style for this library. New code should follow the same
style for consistency and ease of diffing.
* formatting
* 80 column lines
* _rationale_: I often use vertically split, side-by-side editing on my
small laptop screen.
* 2 space indents, no tabs
* 4 space indents for continuation lines
* no trailing white spaces
* spacing
* consistent and generous spaces around operators and symbols
* e.g. `for (int i = 0; i < 10; i++) {`
* e.g. `a = (flag) ? 3 : -1;`
* _rationale_: Helps readability.
* space after language keywords: e.g. `for`, `while`, `if`, etc
* no space after function names
* pointer declaration `*` attached to the class, not the variable
* e.g. `AceButton* button`, not `AceButton *button`
* _rationale_: I know the latter could be argued to be technically more
correct under the C/C++ syntax, but I think the former is more intuitive for
many people. I've personally gone back and forth, and I decided to just pick
a style.
* only one variable declaration per line
* e.g. `int i, j;` not allowed, use 2 lines
* _rationale_: Helps readability, and avoids the confusion of
`AceButton* b1, *b2;` caused by the previous rule.
* open brace on the same line as the function name (Java style)
* naming conventions
* class names: CamelCase
* e.g. `MyClass`, `YourClass`
* methods: camelCase
* e.g. `doSomething()`, `isCondition()`, etc
* _rationale_: Seems like the Arduino convention. Helps readability.
* class static constants: 'k' followed by CamelCase
* e.g. `kSomeConstant`
* _rationale_: Prevents conflicts with `#define` macros which use the
`ALL_CAPS_MACRO` pattern. Since AceButton is a library, I cannot predict
which other libraries may be used by the end-user. If there is a macro
conflict, I have no way to fix the problem.
* in user-land codes, `ALL_CAPS` for constants would be ok because if
there's a conflict, you can change it
* member variables: 'm' followed by CamelCase
* e.g. `mSomeVariable`
* _rationale_: Many symbols beginning with a single or double underscore
`__` are reserved by the C language, C++ language, or their standard
libraries. So I avoid them completely. One alternative is to append an
underscore *after* the variable name. But this makes the `->` and the `.`
operators hard to read. The 'm' prefix seems consistent with the 'k'
prefix for constants, and it's easy on the eyes.
* global variables
* there ought to be no global variables in this library
* if there were any, the naming convention would be 'gCamelCase'
* [doxygen](http://www.doxygen.org) comments for all public and protected
methods and constants
* comments are recommended for private methods and variables as well, since
private methods sometimes become protected or public
## Unit Tests
Any non-trivial change should have a unit test. Even a seemingly
trivial change can often use a unit test to prevent typos.
Make sure that all the unit tests under the `tests` directory pass. I had to
split the unit tests into multiple `*.ino` files because they became too big to
fit into the 32KB flash memory space of an Arduino board.
## Authorship and License
I will assume that your code is licensed under the same MIT License as
the rest of the library.

21
lib/AceButton/LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2018 Brian T. Park
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

1028
lib/AceButton/README.md Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,4 @@
# Documentation
These [Doxygen docs](https://bxparks.github.io/AceButton/html/) are
viewable on GitHub Pages.

View File

@ -0,0 +1 @@
theme: jekyll-theme-minimal

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,79 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: /home/brian/dev/AceButton/src/AdjustableButtonConfig.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">AdjustableButtonConfig.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * This file has moved to &lt;ace_button/AdjustableButtonConfig.h&gt; and is</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * deprecated as of version 1.1. The &lt;AceButton.h&gt; header automatically includes</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * &lt;ace_button/AdjustableButtonConfig.h&gt;. You can remove the line in your code</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * that does:</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * #include &lt;AdjustableButtonConfig.h&gt;</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * You only need to do:</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * #include &lt;AceButton.h&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div></div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,79 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: /home/brian/dev/AceButton/src/ButtonConfig.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ButtonConfig.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * This file has moved to &lt;ace_button/ButtonConfig.h&gt; and is deprecated as</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * of version 1.1. The &lt;AceButton.h&gt; header automatically includes</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * &lt;ace_button/ButtonConfig.h&gt;. You can remove the line in your code that does:</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * #include &lt;ButtonConfig.h&gt;</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * You only need to do:</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * #include &lt;AceButton.h&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> */</span></div></div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,84 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: Class List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>ace_button</b></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classace__button_1_1AceButton.html" target="_self">AceButton</a></td><td class="desc">An Adjustable Compact Event-driven (ACE) Button library that debounces and dispatches button events to a user-defined event handler </td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classace__button_1_1AdjustableButtonConfig.html" target="_self">AdjustableButtonConfig</a></td><td class="desc">A subclass of <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> which allows the user to override the varous timing parameters of <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> at runtime </td></tr>
<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classace__button_1_1ButtonConfig.html" target="_self">ButtonConfig</a></td><td class="desc">Class that defines the timing parameters and event handler of an <a class="el" href="classace__button_1_1AceButton.html" title="An Adjustable Compact Event-driven (ACE) Button library that debounces and dispatches button events t...">AceButton</a> or a group of <a class="el" href="classace__button_1_1AceButton.html" title="An Adjustable Compact Event-driven (ACE) Button library that debounces and dispatches button events t...">AceButton</a> instances </td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classace__button_1_1TimingStats.html" target="_self">TimingStats</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

View File

@ -0,0 +1,102 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>ace_button</b></li><li class="navelem"><a class="el" href="classace__button_1_1AceButton.html">AceButton</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ace_button::AceButton Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#a3c480636223edc899a79c821c32c6982">AceButton</a>(uint8_t pin=0, uint8_t defaultReleasedState=HIGH, uint8_t id=0)</td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#ab2ec2d3b98e2e2228f85271385e07521">AceButton</a>(ButtonConfig *buttonConfig)</td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#af710048a654fa5d5e45405661282a7b1">check</a>()</td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#a5e4ea4aca852a5e0b1d426bccb131cfb">getButtonConfig</a>() ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#afa8013bb98f5fbd79654aebca613ba71">getDefaultReleasedState</a>()</td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#a4a693b836e3fed29d4e7203a5a97910b">getId</a>() ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#a3c49e9edf8cbb5e3800c5f4506d0beca">getLastButtonState</a>() ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#ac6b12ca62c7c055325bfebd036579ed6">getPin</a>() ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#a18c47304c694c6f084a343a7c83bef34">init</a>(uint8_t pin=0, uint8_t defaultReleasedState=HIGH, uint8_t id=0)</td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#af80a2bd19d929bff5dcce54a3db6fb0a">isPressedRaw</a>() ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#aa3cbb3fb16076cfe9255e0f70cc6aa72">isReleased</a>(uint8_t buttonState) ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#afe8e8e22146f510afa487e6ec98b6253">kButtonStateUnknown</a></td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#a21797e5e069da3f7bba42b40ab3a7305">kEventClicked</a></td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#a0c63f30106e4688425ba37d8f7a9546b">kEventDoubleClicked</a></td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#a769599d288f64dc0e55a69184596d804">kEventLongPressed</a></td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#ae723d826fe219a8415764b9fed5d8976">kEventPressed</a></td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#ada5bd7c31950e2acdb8a9464e795c13c">kEventReleased</a></td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#a9c4195cb128da40677ea223eb81743c9">kEventRepeatPressed</a></td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#abc9d705d1ca4341cf6f9434962b5b5e7">setButtonConfig</a>(ButtonConfig *buttonConfig) ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1AceButton.html#a42edbfeb4091c867d976a4d24622f19c">setEventHandler</a>(ButtonConfig::EventHandler eventHandler) ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1AceButton.html">ace_button::AceButton</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,723 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: ace_button::AceButton Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>ace_button</b></li><li class="navelem"><a class="el" href="classace__button_1_1AceButton.html">AceButton</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classace__button_1_1AceButton-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">ace_button::AceButton Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>An Adjustable Compact Event-driven (ACE) Button library that debounces and dispatches button events to a user-defined event handler.
<a href="classace__button_1_1AceButton.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3c480636223edc899a79c821c32c6982"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#a3c480636223edc899a79c821c32c6982">AceButton</a> (uint8_t pin=0, uint8_t defaultReleasedState=HIGH, uint8_t id=0)</td></tr>
<tr class="memdesc:a3c480636223edc899a79c821c32c6982"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor defines parameters of the button that changes from button to button. <a href="#a3c480636223edc899a79c821c32c6982">More...</a><br /></td></tr>
<tr class="separator:a3c480636223edc899a79c821c32c6982"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2ec2d3b98e2e2228f85271385e07521"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#ab2ec2d3b98e2e2228f85271385e07521">AceButton</a> (<a class="el" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a> *buttonConfig)</td></tr>
<tr class="memdesc:ab2ec2d3b98e2e2228f85271385e07521"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor that accepts a <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> as a dependency. <a href="#ab2ec2d3b98e2e2228f85271385e07521">More...</a><br /></td></tr>
<tr class="separator:ab2ec2d3b98e2e2228f85271385e07521"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18c47304c694c6f084a343a7c83bef34"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#a18c47304c694c6f084a343a7c83bef34">init</a> (uint8_t pin=0, uint8_t defaultReleasedState=HIGH, uint8_t id=0)</td></tr>
<tr class="memdesc:a18c47304c694c6f084a343a7c83bef34"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the button to the initial constructed state. <a href="#a18c47304c694c6f084a343a7c83bef34">More...</a><br /></td></tr>
<tr class="separator:a18c47304c694c6f084a343a7c83bef34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e4ea4aca852a5e0b1d426bccb131cfb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#a5e4ea4aca852a5e0b1d426bccb131cfb">getButtonConfig</a> () ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:a5e4ea4aca852a5e0b1d426bccb131cfb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> associated with this Button. <a href="#a5e4ea4aca852a5e0b1d426bccb131cfb">More...</a><br /></td></tr>
<tr class="separator:a5e4ea4aca852a5e0b1d426bccb131cfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc9d705d1ca4341cf6f9434962b5b5e7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#abc9d705d1ca4341cf6f9434962b5b5e7">setButtonConfig</a> (<a class="el" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a> *buttonConfig) ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:abc9d705d1ca4341cf6f9434962b5b5e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> associated with this Button. <a href="#abc9d705d1ca4341cf6f9434962b5b5e7">More...</a><br /></td></tr>
<tr class="separator:abc9d705d1ca4341cf6f9434962b5b5e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42edbfeb4091c867d976a4d24622f19c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#a42edbfeb4091c867d976a4d24622f19c">setEventHandler</a> (<a class="el" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">ButtonConfig::EventHandler</a> eventHandler) ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:a42edbfeb4091c867d976a4d24622f19c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience method to set the event handler. <a href="#a42edbfeb4091c867d976a4d24622f19c">More...</a><br /></td></tr>
<tr class="separator:a42edbfeb4091c867d976a4d24622f19c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6b12ca62c7c055325bfebd036579ed6"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#ac6b12ca62c7c055325bfebd036579ed6">getPin</a> () ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:ac6b12ca62c7c055325bfebd036579ed6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the button's pin number. <a href="#ac6b12ca62c7c055325bfebd036579ed6">More...</a><br /></td></tr>
<tr class="separator:ac6b12ca62c7c055325bfebd036579ed6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a693b836e3fed29d4e7203a5a97910b"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#a4a693b836e3fed29d4e7203a5a97910b">getId</a> () ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:a4a693b836e3fed29d4e7203a5a97910b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the custom identifier of the button. <a href="#a4a693b836e3fed29d4e7203a5a97910b">More...</a><br /></td></tr>
<tr class="separator:a4a693b836e3fed29d4e7203a5a97910b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa8013bb98f5fbd79654aebca613ba71"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#afa8013bb98f5fbd79654aebca613ba71">getDefaultReleasedState</a> ()</td></tr>
<tr class="memdesc:afa8013bb98f5fbd79654aebca613ba71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the initial released state of the button, HIGH or LOW. <a href="#afa8013bb98f5fbd79654aebca613ba71">More...</a><br /></td></tr>
<tr class="separator:afa8013bb98f5fbd79654aebca613ba71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c49e9edf8cbb5e3800c5f4506d0beca"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#a3c49e9edf8cbb5e3800c5f4506d0beca">getLastButtonState</a> () ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:a3c49e9edf8cbb5e3800c5f4506d0beca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the button state that was last valid. <a href="#a3c49e9edf8cbb5e3800c5f4506d0beca">More...</a><br /></td></tr>
<tr class="separator:a3c49e9edf8cbb5e3800c5f4506d0beca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af710048a654fa5d5e45405661282a7b1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#af710048a654fa5d5e45405661282a7b1">check</a> ()</td></tr>
<tr class="memdesc:af710048a654fa5d5e45405661282a7b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check state of button and trigger event processing. <a href="#af710048a654fa5d5e45405661282a7b1">More...</a><br /></td></tr>
<tr class="separator:af710048a654fa5d5e45405661282a7b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3cbb3fb16076cfe9255e0f70cc6aa72"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#aa3cbb3fb16076cfe9255e0f70cc6aa72">isReleased</a> (uint8_t buttonState) ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:aa3cbb3fb16076cfe9255e0f70cc6aa72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the given buttonState represents a 'Released' state for the button. <a href="#aa3cbb3fb16076cfe9255e0f70cc6aa72">More...</a><br /></td></tr>
<tr class="separator:aa3cbb3fb16076cfe9255e0f70cc6aa72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af80a2bd19d929bff5dcce54a3db6fb0a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#af80a2bd19d929bff5dcce54a3db6fb0a">isPressedRaw</a> () ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:af80a2bd19d929bff5dcce54a3db6fb0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read the button state directly using <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> and return true if the button is in the Pressed state. <a href="#af80a2bd19d929bff5dcce54a3db6fb0a">More...</a><br /></td></tr>
<tr class="separator:af80a2bd19d929bff5dcce54a3db6fb0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:ae723d826fe219a8415764b9fed5d8976"><td class="memItemLeft" align="right" valign="top">static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#ae723d826fe219a8415764b9fed5d8976">kEventPressed</a> = 0</td></tr>
<tr class="memdesc:ae723d826fe219a8415764b9fed5d8976"><td class="mdescLeft">&#160;</td><td class="mdescRight">Button was pressed. <a href="#ae723d826fe219a8415764b9fed5d8976">More...</a><br /></td></tr>
<tr class="separator:ae723d826fe219a8415764b9fed5d8976"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada5bd7c31950e2acdb8a9464e795c13c"><td class="memItemLeft" align="right" valign="top">static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#ada5bd7c31950e2acdb8a9464e795c13c">kEventReleased</a> = 1</td></tr>
<tr class="memdesc:ada5bd7c31950e2acdb8a9464e795c13c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Button was released. <a href="#ada5bd7c31950e2acdb8a9464e795c13c">More...</a><br /></td></tr>
<tr class="separator:ada5bd7c31950e2acdb8a9464e795c13c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21797e5e069da3f7bba42b40ab3a7305"><td class="memItemLeft" align="right" valign="top"><a id="a21797e5e069da3f7bba42b40ab3a7305"></a>
static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#a21797e5e069da3f7bba42b40ab3a7305">kEventClicked</a> = 2</td></tr>
<tr class="memdesc:a21797e5e069da3f7bba42b40ab3a7305"><td class="mdescLeft">&#160;</td><td class="mdescRight">Button was clicked (Pressed and Released within <a class="el" href="classace__button_1_1ButtonConfig.html#a19db203ce87dc2cafb2cab6ba124387a" title="Milliseconds to wait for a possible click. ">ButtonConfig::getClickDelay()</a>). <br /></td></tr>
<tr class="separator:a21797e5e069da3f7bba42b40ab3a7305"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c63f30106e4688425ba37d8f7a9546b"><td class="memItemLeft" align="right" valign="top">static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#a0c63f30106e4688425ba37d8f7a9546b">kEventDoubleClicked</a> = 3</td></tr>
<tr class="memdesc:a0c63f30106e4688425ba37d8f7a9546b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Button was double-clicked. <a href="#a0c63f30106e4688425ba37d8f7a9546b">More...</a><br /></td></tr>
<tr class="separator:a0c63f30106e4688425ba37d8f7a9546b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a769599d288f64dc0e55a69184596d804"><td class="memItemLeft" align="right" valign="top"><a id="a769599d288f64dc0e55a69184596d804"></a>
static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#a769599d288f64dc0e55a69184596d804">kEventLongPressed</a> = 4</td></tr>
<tr class="memdesc:a769599d288f64dc0e55a69184596d804"><td class="mdescLeft">&#160;</td><td class="mdescRight">Button was held down for longer than <a class="el" href="classace__button_1_1ButtonConfig.html#a46d4213a827a94bf82ba99a9c2e59531" title="Milliseconds for a long press event. ">ButtonConfig::getLongPressDelay()</a>). <br /></td></tr>
<tr class="separator:a769599d288f64dc0e55a69184596d804"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c4195cb128da40677ea223eb81743c9"><td class="memItemLeft" align="right" valign="top">static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#a9c4195cb128da40677ea223eb81743c9">kEventRepeatPressed</a> = 5</td></tr>
<tr class="memdesc:a9c4195cb128da40677ea223eb81743c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Button was held down and auto generated multiple presses. <a href="#a9c4195cb128da40677ea223eb81743c9">More...</a><br /></td></tr>
<tr class="separator:a9c4195cb128da40677ea223eb81743c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe8e8e22146f510afa487e6ec98b6253"><td class="memItemLeft" align="right" valign="top">static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1AceButton.html#afe8e8e22146f510afa487e6ec98b6253">kButtonStateUnknown</a> = 2</td></tr>
<tr class="memdesc:afe8e8e22146f510afa487e6ec98b6253"><td class="mdescLeft">&#160;</td><td class="mdescRight">Button state is unknown. <a href="#afe8e8e22146f510afa487e6ec98b6253">More...</a><br /></td></tr>
<tr class="separator:afe8e8e22146f510afa487e6ec98b6253"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>An Adjustable Compact Event-driven (ACE) Button library that debounces and dispatches button events to a user-defined event handler. </p>
<p>Supported events types are:</p>
<ul>
<li>kEventPressed</li>
<li>kEventReleased</li>
<li>kEventClicked</li>
<li>kEventDoubleClicked</li>
<li>kEventLongPressed</li>
<li>kEventRepeatPressed</li>
</ul>
<p>The <a class="el" href="classace__button_1_1AceButton.html#af710048a654fa5d5e45405661282a7b1" title="Check state of button and trigger event processing. ">check()</a> method should be called from the loop() at least 2-3 times during the debouncing time period. For 20 ms delay, the <a class="el" href="classace__button_1_1AceButton.html#af710048a654fa5d5e45405661282a7b1" title="Check state of button and trigger event processing. ">check()</a> method should be called at a minimum of every 5 ms. The execution time of <a class="el" href="classace__button_1_1AceButton.html#af710048a654fa5d5e45405661282a7b1" title="Check state of button and trigger event processing. ">check()</a> on a 16 MHz Arduino ATmega328P MCU seems to about about 12-14 microseconds. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00050">50</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a3c480636223edc899a79c821c32c6982"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c480636223edc899a79c821c32c6982">&#9670;&nbsp;</a></span>AceButton() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ace_button::AceButton::AceButton </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>pin</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>defaultReleasedState</em> = <code>HIGH</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>id</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor defines parameters of the button that changes from button to button. </p>
<p>These parameters don't change during the runtime of the program. Another way to initialize the object is to create an instance using an empty constructor, then use the <a class="el" href="classace__button_1_1AceButton.html#a18c47304c694c6f084a343a7c83bef34" title="Reset the button to the initial constructed state. ">init()</a> method to initialize the object with these parameters.</p>
<p>Using the constructor often reads better for simple situations where only a single button is used, and it doesn't need to be configured significantly. Using the <a class="el" href="classace__button_1_1AceButton.html#a18c47304c694c6f084a343a7c83bef34" title="Reset the button to the initial constructed state. ">init()</a> method can make the code be more readable when multiple buttons are used, and they need to be significantly customized. The <a class="el" href="classace__button_1_1AceButton.html#a18c47304c694c6f084a343a7c83bef34" title="Reset the button to the initial constructed state. ">init()</a> method allows the button configuration code to appear in close proximity to the pinMode() methods which sets up the hardware pins.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pin</td><td>The pin number of the button. Default 0. Normally the pin number should be given at construction time. However, the pin number the pin number can be omitted so that the pin number can be assigned at setup() time using the setPin() method.</td></tr>
<tr><td class="paramname">defaultReleasedState</td><td>The pin state when the button is in the initial released position. Default HIGH. When using a pullup resistor (either external or internal) and the button is connected to ground, this should be set to HIGH. When using an external pulldown resistor and the button is connected to Vcc (5V or 3.3V), this should be set to LOW. The defaultReleasedState can be assigned using the constructor or the <a class="el" href="classace__button_1_1AceButton.html#a18c47304c694c6f084a343a7c83bef34" title="Reset the button to the initial constructed state. ">init()</a> method.</td></tr>
<tr><td class="paramname">id</td><td>This is an optional user-defined identifier for the button. For example, this could be an index into an array of data that is associated with the button. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="AceButton_8cpp_source.html#l00039">39</a> of file <a class="el" href="AceButton_8cpp_source.html">AceButton.cpp</a>.</p>
</div>
</div>
<a id="ab2ec2d3b98e2e2228f85271385e07521"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2ec2d3b98e2e2228f85271385e07521">&#9670;&nbsp;</a></span>AceButton() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ace_button::AceButton::AceButton </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a> *&#160;</td>
<td class="paramname"><em>buttonConfig</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor that accepts a <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> as a dependency. </p>
<p>Dependency injection using this constructor is now recommended over using the <a class="el" href="classace__button_1_1AceButton.html#abc9d705d1ca4341cf6f9434962b5b5e7" title="Set the ButtonConfig associated with this Button. ">setButtonConfig()</a> method because it makes the dependency more clear. </p>
<p class="definition">Definition at line <a class="el" href="AceButton_8cpp_source.html#l00044">44</a> of file <a class="el" href="AceButton_8cpp_source.html">AceButton.cpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="af710048a654fa5d5e45405661282a7b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af710048a654fa5d5e45405661282a7b1">&#9670;&nbsp;</a></span>check()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ace_button::AceButton::check </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Check state of button and trigger event processing. </p>
<p>This method should be called from the loop() method in Arduino every 4-5 times during the getDebounceDelay() time (default 20 ms), so about every 5 ms. If this is called less often than that, the debouncing algorithm may not work correctly, which may cause other event detection algorithms to fail. </p>
<p class="definition">Definition at line <a class="el" href="AceButton_8cpp_source.html#l00073">73</a> of file <a class="el" href="AceButton_8cpp_source.html">AceButton.cpp</a>.</p>
</div>
</div>
<a id="a5e4ea4aca852a5e0b1d426bccb131cfb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5e4ea4aca852a5e0b1d426bccb131cfb">&#9670;&nbsp;</a></span>getButtonConfig()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a>* ace_button::AceButton::getButtonConfig </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> associated with this Button. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00143">143</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div>
</div>
<a id="afa8013bb98f5fbd79654aebca613ba71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa8013bb98f5fbd79654aebca613ba71">&#9670;&nbsp;</a></span>getDefaultReleasedState()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t ace_button::AceButton::getDefaultReleasedState </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the initial released state of the button, HIGH or LOW. </p>
<p class="definition">Definition at line <a class="el" href="AceButton_8cpp_source.html#l00067">67</a> of file <a class="el" href="AceButton_8cpp_source.html">AceButton.cpp</a>.</p>
</div>
</div>
<a id="a4a693b836e3fed29d4e7203a5a97910b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a693b836e3fed29d4e7203a5a97910b">&#9670;&nbsp;</a></span>getId()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint8_t ace_button::AceButton::getId </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the custom identifier of the button. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00174">174</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div>
</div>
<a id="a3c49e9edf8cbb5e3800c5f4506d0beca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c49e9edf8cbb5e3800c5f4506d0beca">&#9670;&nbsp;</a></span>getLastButtonState()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint8_t ace_button::AceButton::getLastButtonState </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the button state that was last valid. </p>
<p>This is a tri-state function. It may return HIGH, LOW or kButtonStateUnknown to indicate that the last state is not known. This method is <b>not</b> for public consumption, it is exposed only for testing purposes. Consider it to be a private method. Use the buttonState parameter provided to the EventHandler.</p>
<p>In a more general multi-threaded environment (which the Arduino is not, fortunately or unfortunately), the <a class="el" href="classace__button_1_1AceButton.html#a3c49e9edf8cbb5e3800c5f4506d0beca" title="Return the button state that was last valid. ">getLastButtonState()</a> may have changed from the value of buttonState provided to the event handler. In other words, there is a race-condition. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00192">192</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div>
</div>
<a id="ac6b12ca62c7c055325bfebd036579ed6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6b12ca62c7c055325bfebd036579ed6">&#9670;&nbsp;</a></span>getPin()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint8_t ace_button::AceButton::getPin </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the button's pin number. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00171">171</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div>
</div>
<a id="a18c47304c694c6f084a343a7c83bef34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18c47304c694c6f084a343a7c83bef34">&#9670;&nbsp;</a></span>init()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ace_button::AceButton::init </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>pin</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>defaultReleasedState</em> = <code>HIGH</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>id</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reset the button to the initial constructed state. </p>
<p>In particular, <a class="el" href="classace__button_1_1AceButton.html#a3c49e9edf8cbb5e3800c5f4506d0beca" title="Return the button state that was last valid. ">getLastButtonState()</a> returns kButtonStateUnknown. The parameters are identical as the parameters in the <a class="el" href="classace__button_1_1AceButton.html#a3c480636223edc899a79c821c32c6982" title="Constructor defines parameters of the button that changes from button to button. ">AceButton()</a> constructor. </p>
<p class="definition">Definition at line <a class="el" href="AceButton_8cpp_source.html#l00049">49</a> of file <a class="el" href="AceButton_8cpp_source.html">AceButton.cpp</a>.</p>
</div>
</div>
<a id="af80a2bd19d929bff5dcce54a3db6fb0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af80a2bd19d929bff5dcce54a3db6fb0a">&#9670;&nbsp;</a></span>isPressedRaw()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ace_button::AceButton::isPressedRaw </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Read the button state directly using <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> and return true if the button is in the Pressed state. </p>
<p>This method is intended to be used in the global setup() to determine if the button was pressed while the device was booted. This method does not use the <a class="el" href="classace__button_1_1AceButton.html#af710048a654fa5d5e45405661282a7b1" title="Check state of button and trigger event processing. ">check()</a> method, does not perform any debouncing, and does not dispatch events to the EventHandler. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00231">231</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div>
</div>
<a id="aa3cbb3fb16076cfe9255e0f70cc6aa72"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3cbb3fb16076cfe9255e0f70cc6aa72">&#9670;&nbsp;</a></span>isReleased()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ace_button::AceButton::isReleased </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>buttonState</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if the given buttonState represents a 'Released' state for the button. </p>
<p>Returns false if the buttonState is 'Pressed' or kButtonStateUnknown.</p>
<p>The HIGH or LOW logical value of buttonState represents different a button position depending on whether the button is wired with a pull-up or a pull-down resistor. This method translates the logical level to the physical position which allows the client code to be independent of the physical wiring.</p>
<p>Normally, the eventType given to the EventHandler should be sufficient because the value of the eventType already encodes this information. This method is provided just in case. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00220">220</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div>
</div>
<a id="abc9d705d1ca4341cf6f9434962b5b5e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc9d705d1ca4341cf6f9434962b5b5e7">&#9670;&nbsp;</a></span>setButtonConfig()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ace_button::AceButton::setButtonConfig </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a> *&#160;</td>
<td class="paramname"><em>buttonConfig</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> associated with this Button. </p>
<p>It is recommended that the <a class="el" href="classace__button_1_1AceButton.html#ab2ec2d3b98e2e2228f85271385e07521" title="Constructor that accepts a ButtonConfig as a dependency. ">AceButton(ButtonConfig*)</a> constructor is used instead to make the dependency to <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> more explicit. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00152">152</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div>
</div>
<a id="a42edbfeb4091c867d976a4d24622f19c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42edbfeb4091c867d976a4d24622f19c">&#9670;&nbsp;</a></span>setEventHandler()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ace_button::AceButton::setEventHandler </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">ButtonConfig::EventHandler</a>&#160;</td>
<td class="paramname"><em>eventHandler</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convenience method to set the event handler. </p>
<p>Event handlers are stored in the <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> object, not in the <a class="el" href="classace__button_1_1AceButton.html" title="An Adjustable Compact Event-driven (ACE) Button library that debounces and dispatches button events t...">AceButton</a> object, to save memory. (Multiple buttons are likely to share the same event handler.) So this method is just a pass-through to <a class="el" href="classace__button_1_1ButtonConfig.html#a5d228f08e9943fd4ab90caab39ef80be" title="Install the event handler. ">ButtonConfig::setEventHandler()</a>. If you are using multiple <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> objects, you should call the <a class="el" href="classace__button_1_1ButtonConfig.html#a5d228f08e9943fd4ab90caab39ef80be" title="Install the event handler. ">ButtonConfig::setEventHandler()</a> method on those objects directly, instead of using this method. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00165">165</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="afe8e8e22146f510afa487e6ec98b6253"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afe8e8e22146f510afa487e6ec98b6253">&#9670;&nbsp;</a></span>kButtonStateUnknown</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const uint8_t ace_button::AceButton::kButtonStateUnknown = 2</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Button state is unknown. </p>
<p>This is a third state (different from LOW or HIGH) used when the class is first initialized upon reboot. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00090">90</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div>
</div>
<a id="a0c63f30106e4688425ba37d8f7a9546b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c63f30106e4688425ba37d8f7a9546b">&#9670;&nbsp;</a></span>kEventDoubleClicked</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const uint8_t ace_button::AceButton::kEventDoubleClicked = 3</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Button was double-clicked. </p>
<p>(Two clicks within <a class="el" href="classace__button_1_1ButtonConfig.html#a5ba500367e03c36f39225a5858e110e6" title="Milliseconds between the first and second click to register as a double-click. ">ButtonConfig::getDoubleClickDelay()</a>). </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00070">70</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div>
</div>
<a id="ae723d826fe219a8415764b9fed5d8976"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae723d826fe219a8415764b9fed5d8976">&#9670;&nbsp;</a></span>kEventPressed</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const uint8_t ace_button::AceButton::kEventPressed = 0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Button was pressed. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00055">55</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div>
</div>
<a id="ada5bd7c31950e2acdb8a9464e795c13c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ada5bd7c31950e2acdb8a9464e795c13c">&#9670;&nbsp;</a></span>kEventReleased</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const uint8_t ace_button::AceButton::kEventReleased = 1</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Button was released. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00058">58</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div>
</div>
<a id="a9c4195cb128da40677ea223eb81743c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c4195cb128da40677ea223eb81743c9">&#9670;&nbsp;</a></span>kEventRepeatPressed</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const uint8_t ace_button::AceButton::kEventRepeatPressed = 5</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Button was held down and auto generated multiple presses. </p>
<p>The first event is triggered after <a class="el" href="classace__button_1_1ButtonConfig.html#ad85c75d2a2dd200552a181fb154d5fd2" title="Milliseconds that a button needs to be Pressed down before the start of the sequence of RepeatPressed...">ButtonConfig::getRepeatPressDelay()</a>, then the event fires repeatedly every <a class="el" href="classace__button_1_1ButtonConfig.html#aec4a97a1a1306b9ff12f1cdf44515c43" title="Milliseconds between two successive RepeatPressed events. ">ButtonConfig::getRepeatPressInterval()</a> until the button is released. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AceButton_8h_source.html#l00084">84</a> of file <a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>/home/brian/dev/AceButton/src/ace_button/<a class="el" href="ace__button_2AceButton_8h_source.html">AceButton.h</a></li>
<li>/home/brian/dev/AceButton/src/ace_button/<a class="el" href="AceButton_8cpp_source.html">AceButton.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,125 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>ace_button</b></li><li class="navelem"><a class="el" href="classace__button_1_1AdjustableButtonConfig.html">AdjustableButtonConfig</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ace_button::AdjustableButtonConfig Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classace__button_1_1AdjustableButtonConfig.html">ace_button::AdjustableButtonConfig</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a66924aac157a81cc54a9776fb975893a">ButtonConfig</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#ac782903e4a60924db3d17c00accc7f3b">clearFeature</a>(FeatureFlagType features) ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">EventHandler</a> typedef</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> typedef</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a19db203ce87dc2cafb2cab6ba124387a">getClickDelay</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a440271e22d5e7e161cdcb3b73f092111">getClock</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a8a74d1a1c082bfb0e4ddf55e67d3ac2d">getClockMicros</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#ad7be58d0fe0b242f78f15319d201a565">getDebounceDelay</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a5ba500367e03c36f39225a5858e110e6">getDoubleClickDelay</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a8fc32804ba102f61ba97bcc5f4fe8448">getEventHandler</a>() ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a46d4213a827a94bf82ba99a9c2e59531">getLongPressDelay</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#ad85c75d2a2dd200552a181fb154d5fd2">getRepeatPressDelay</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#aec4a97a1a1306b9ff12f1cdf44515c43">getRepeatPressInterval</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#ab780f081ef691b48deb5182d206a4b9d">getSystemButtonConfig</a>() ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#aff7101f2fe0f0c3bba67924b01e9d493">getTimingStats</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a86f8f6b62825258e477e0a41846e0223">init</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#aae51c7a2986eafd400784cdbe6bb1815">isFeature</a>(FeatureFlagType features) ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a5691e38564dae63592d22abf74fb15f3">kClickDelay</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a8fbe63588107a1375d05911d27df3ad8">kDebounceDelay</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#af0a0d503f3396acef6a84aca4390fd6a">kDoubleClickDelay</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#ac662555100416c4843c6ee5156699c56">kFeatureClick</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a638943c127dd60288a83e83260825d01">kFeatureDoubleClick</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a4d175560047a4ca245186fb26fa413f2">kFeatureLongPress</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#ac9b941ca87f0eeb899ed503481439c92">kFeatureRepeatPress</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a57327066d135bcc99c4a68b55fca162e">kFeatureSuppressAfterClick</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a7642e16b2cc8dd0136312054b1da8f9e">kFeatureSuppressAfterDoubleClick</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a15b8e90b1ffe01009a1d7dd18b5b6aae">kFeatureSuppressAfterLongPress</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a6b43b591ba53d360e787bf780af0abbc">kFeatureSuppressAfterRepeatPress</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#abfd736234ae852f22894c7aceb4e534e">kFeatureSuppressAll</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a80d621dbcf533c9bb91a111b8fec2c53">kFeatureSuppressClickBeforeDoubleClick</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a60bf588a2c067a561887eadf18cedccd">kLongPressDelay</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a3d20bc5800532085fd046fc64b80ae9f">kRepeatPressDelay</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a218c1aa09b45ea2fe6884e3af3a18310">kRepeatPressInterval</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a5dab877bf124bfdf5a5eb703ca123027">readButton</a>(uint8_t pin)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#aef65e12128997c46bc2754a988b98f14">setClickDelay</a>(uint16_t clickDelay)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a9860d2c8a6ab33d40ea126b02d168cab">setDebounceDelay</a>(uint16_t debounceDelay)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a367a809017e1d633a5cf6b117981d579">setDoubleClickDelay</a>(uint16_t doubleClickDelay)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a5d228f08e9943fd4ab90caab39ef80be">setEventHandler</a>(EventHandler eventHandler) ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#aac1c9029b1cf9aa793060d372fc09a1a">setFeature</a>(FeatureFlagType features) ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a7d90d39aeddacb5abc9d8741611d7c4a">setLongPressDelay</a>(uint16_t longPressDelay)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#af813c969eddd884e9fa83b334a59a0a5">setRepeatPressDelay</a>(uint16_t repeatPressDelay)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#aa1b1217e0042512fc8d9b6544536aed3">setRepeatPressInterval</a>(uint16_t repeatPressInterval)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a16d7dbbe1bb075018378e463cd8106de">setTimingStats</a>(TimingStats *timingStats)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,252 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: ace_button::AdjustableButtonConfig Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>ace_button</b></li><li class="navelem"><a class="el" href="classace__button_1_1AdjustableButtonConfig.html">AdjustableButtonConfig</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="classace__button_1_1AdjustableButtonConfig-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">ace_button::AdjustableButtonConfig Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>A subclass of <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> which allows the user to override the varous timing parameters of <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> at runtime.
<a href="classace__button_1_1AdjustableButtonConfig.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="ace__button_2AdjustableButtonConfig_8h_source.html">AdjustableButtonConfig.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ace_button::AdjustableButtonConfig:</div>
<div class="dyncontent">
<div class="center"><img src="classace__button_1_1AdjustableButtonConfig__inherit__graph.png" border="0" usemap="#ace__button_1_1AdjustableButtonConfig_inherit__map" alt="Inheritance graph"/></div>
<map name="ace__button_1_1AdjustableButtonConfig_inherit__map" id="ace__button_1_1AdjustableButtonConfig_inherit__map">
<area shape="rect" id="node2" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in..." alt="" coords="17,5,187,32"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for ace_button::AdjustableButtonConfig:</div>
<div class="dyncontent">
<div class="center"><img src="classace__button_1_1AdjustableButtonConfig__coll__graph.png" border="0" usemap="#ace__button_1_1AdjustableButtonConfig_coll__map" alt="Collaboration graph"/></div>
<map name="ace__button_1_1AdjustableButtonConfig_coll__map" id="ace__button_1_1AdjustableButtonConfig_coll__map">
<area shape="rect" id="node2" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in..." alt="" coords="17,5,187,32"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_types_classace__button_1_1ButtonConfig"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classace__button_1_1ButtonConfig')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td></tr>
<tr class="memitem:a1c7c7bfc42738278330243dfc43f23eb inherit pub_types_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">typedef uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a></td></tr>
<tr class="memdesc:a1c7c7bfc42738278330243dfc43f23eb inherit pub_types_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of the feature flag. <a href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">More...</a><br /></td></tr>
<tr class="separator:a1c7c7bfc42738278330243dfc43f23eb inherit pub_types_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d9db3c7b221b474c3cfd8fca5f4ba1e inherit pub_types_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">EventHandler</a>) (<a class="el" href="classace__button_1_1AceButton.html">AceButton</a> *button, uint8_t eventType, uint8_t buttonState)</td></tr>
<tr class="memdesc:a6d9db3c7b221b474c3cfd8fca5f4ba1e inherit pub_types_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">The event handler signature. <a href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">More...</a><br /></td></tr>
<tr class="separator:a6d9db3c7b221b474c3cfd8fca5f4ba1e inherit pub_types_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classace__button_1_1ButtonConfig"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classace__button_1_1ButtonConfig')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td></tr>
<tr class="memitem:a66924aac157a81cc54a9776fb975893a inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a66924aac157a81cc54a9776fb975893a">ButtonConfig</a> ()</td></tr>
<tr class="memdesc:a66924aac157a81cc54a9776fb975893a inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="classace__button_1_1ButtonConfig.html#a66924aac157a81cc54a9776fb975893a">More...</a><br /></td></tr>
<tr class="separator:a66924aac157a81cc54a9776fb975893a inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7be58d0fe0b242f78f15319d201a565 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#ad7be58d0fe0b242f78f15319d201a565">getDebounceDelay</a> ()</td></tr>
<tr class="memdesc:ad7be58d0fe0b242f78f15319d201a565 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Milliseconds to wait for debouncing. <a href="classace__button_1_1ButtonConfig.html#ad7be58d0fe0b242f78f15319d201a565">More...</a><br /></td></tr>
<tr class="separator:ad7be58d0fe0b242f78f15319d201a565 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19db203ce87dc2cafb2cab6ba124387a inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a19db203ce87dc2cafb2cab6ba124387a">getClickDelay</a> ()</td></tr>
<tr class="memdesc:a19db203ce87dc2cafb2cab6ba124387a inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Milliseconds to wait for a possible click. <a href="classace__button_1_1ButtonConfig.html#a19db203ce87dc2cafb2cab6ba124387a">More...</a><br /></td></tr>
<tr class="separator:a19db203ce87dc2cafb2cab6ba124387a inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ba500367e03c36f39225a5858e110e6 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top"><a id="a5ba500367e03c36f39225a5858e110e6"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a5ba500367e03c36f39225a5858e110e6">getDoubleClickDelay</a> ()</td></tr>
<tr class="memdesc:a5ba500367e03c36f39225a5858e110e6 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Milliseconds between the first and second click to register as a double-click. <br /></td></tr>
<tr class="separator:a5ba500367e03c36f39225a5858e110e6 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46d4213a827a94bf82ba99a9c2e59531 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a46d4213a827a94bf82ba99a9c2e59531">getLongPressDelay</a> ()</td></tr>
<tr class="memdesc:a46d4213a827a94bf82ba99a9c2e59531 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Milliseconds for a long press event. <a href="classace__button_1_1ButtonConfig.html#a46d4213a827a94bf82ba99a9c2e59531">More...</a><br /></td></tr>
<tr class="separator:a46d4213a827a94bf82ba99a9c2e59531 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad85c75d2a2dd200552a181fb154d5fd2 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#ad85c75d2a2dd200552a181fb154d5fd2">getRepeatPressDelay</a> ()</td></tr>
<tr class="memdesc:ad85c75d2a2dd200552a181fb154d5fd2 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Milliseconds that a button needs to be Pressed down before the start of the sequence of RepeatPressed events. <a href="classace__button_1_1ButtonConfig.html#ad85c75d2a2dd200552a181fb154d5fd2">More...</a><br /></td></tr>
<tr class="separator:ad85c75d2a2dd200552a181fb154d5fd2 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec4a97a1a1306b9ff12f1cdf44515c43 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top"><a id="aec4a97a1a1306b9ff12f1cdf44515c43"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#aec4a97a1a1306b9ff12f1cdf44515c43">getRepeatPressInterval</a> ()</td></tr>
<tr class="memdesc:aec4a97a1a1306b9ff12f1cdf44515c43 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Milliseconds between two successive RepeatPressed events. <br /></td></tr>
<tr class="separator:aec4a97a1a1306b9ff12f1cdf44515c43 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9860d2c8a6ab33d40ea126b02d168cab inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a9860d2c8a6ab33d40ea126b02d168cab">setDebounceDelay</a> (uint16_t debounceDelay)</td></tr>
<tr class="memdesc:a9860d2c8a6ab33d40ea126b02d168cab inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the debounceDelay. <a href="classace__button_1_1ButtonConfig.html#a9860d2c8a6ab33d40ea126b02d168cab">More...</a><br /></td></tr>
<tr class="separator:a9860d2c8a6ab33d40ea126b02d168cab inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef65e12128997c46bc2754a988b98f14 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#aef65e12128997c46bc2754a988b98f14">setClickDelay</a> (uint16_t clickDelay)</td></tr>
<tr class="memdesc:aef65e12128997c46bc2754a988b98f14 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the clickDelay. <a href="classace__button_1_1ButtonConfig.html#aef65e12128997c46bc2754a988b98f14">More...</a><br /></td></tr>
<tr class="separator:aef65e12128997c46bc2754a988b98f14 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a367a809017e1d633a5cf6b117981d579 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a367a809017e1d633a5cf6b117981d579">setDoubleClickDelay</a> (uint16_t doubleClickDelay)</td></tr>
<tr class="memdesc:a367a809017e1d633a5cf6b117981d579 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the doubleClickDelay. <a href="classace__button_1_1ButtonConfig.html#a367a809017e1d633a5cf6b117981d579">More...</a><br /></td></tr>
<tr class="separator:a367a809017e1d633a5cf6b117981d579 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d90d39aeddacb5abc9d8741611d7c4a inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a7d90d39aeddacb5abc9d8741611d7c4a">setLongPressDelay</a> (uint16_t longPressDelay)</td></tr>
<tr class="memdesc:a7d90d39aeddacb5abc9d8741611d7c4a inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the longPressDelay. <a href="classace__button_1_1ButtonConfig.html#a7d90d39aeddacb5abc9d8741611d7c4a">More...</a><br /></td></tr>
<tr class="separator:a7d90d39aeddacb5abc9d8741611d7c4a inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af813c969eddd884e9fa83b334a59a0a5 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#af813c969eddd884e9fa83b334a59a0a5">setRepeatPressDelay</a> (uint16_t repeatPressDelay)</td></tr>
<tr class="memdesc:af813c969eddd884e9fa83b334a59a0a5 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the repeatPressDelay. <a href="classace__button_1_1ButtonConfig.html#af813c969eddd884e9fa83b334a59a0a5">More...</a><br /></td></tr>
<tr class="separator:af813c969eddd884e9fa83b334a59a0a5 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1b1217e0042512fc8d9b6544536aed3 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#aa1b1217e0042512fc8d9b6544536aed3">setRepeatPressInterval</a> (uint16_t repeatPressInterval)</td></tr>
<tr class="memdesc:aa1b1217e0042512fc8d9b6544536aed3 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the repeatPressInterval. <a href="classace__button_1_1ButtonConfig.html#aa1b1217e0042512fc8d9b6544536aed3">More...</a><br /></td></tr>
<tr class="separator:aa1b1217e0042512fc8d9b6544536aed3 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a440271e22d5e7e161cdcb3b73f092111 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">virtual unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a440271e22d5e7e161cdcb3b73f092111">getClock</a> ()</td></tr>
<tr class="memdesc:a440271e22d5e7e161cdcb3b73f092111 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the milliseconds of the internal clock. <a href="classace__button_1_1ButtonConfig.html#a440271e22d5e7e161cdcb3b73f092111">More...</a><br /></td></tr>
<tr class="separator:a440271e22d5e7e161cdcb3b73f092111 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a74d1a1c082bfb0e4ddf55e67d3ac2d inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">virtual unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a8a74d1a1c082bfb0e4ddf55e67d3ac2d">getClockMicros</a> ()</td></tr>
<tr class="memdesc:a8a74d1a1c082bfb0e4ddf55e67d3ac2d inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the microseconds of the internal clock. <a href="classace__button_1_1ButtonConfig.html#a8a74d1a1c082bfb0e4ddf55e67d3ac2d">More...</a><br /></td></tr>
<tr class="separator:a8a74d1a1c082bfb0e4ddf55e67d3ac2d inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5dab877bf124bfdf5a5eb703ca123027 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a5dab877bf124bfdf5a5eb703ca123027">readButton</a> (uint8_t pin)</td></tr>
<tr class="memdesc:a5dab877bf124bfdf5a5eb703ca123027 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the HIGH or LOW state of the button. <a href="classace__button_1_1ButtonConfig.html#a5dab877bf124bfdf5a5eb703ca123027">More...</a><br /></td></tr>
<tr class="separator:a5dab877bf124bfdf5a5eb703ca123027 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae51c7a2986eafd400784cdbe6bb1815 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#aae51c7a2986eafd400784cdbe6bb1815">isFeature</a> (<a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> features) ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:aae51c7a2986eafd400784cdbe6bb1815 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the given features are enabled. <a href="classace__button_1_1ButtonConfig.html#aae51c7a2986eafd400784cdbe6bb1815">More...</a><br /></td></tr>
<tr class="separator:aae51c7a2986eafd400784cdbe6bb1815 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac1c9029b1cf9aa793060d372fc09a1a inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#aac1c9029b1cf9aa793060d372fc09a1a">setFeature</a> (<a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> features) ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:aac1c9029b1cf9aa793060d372fc09a1a inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable the given features. <a href="classace__button_1_1ButtonConfig.html#aac1c9029b1cf9aa793060d372fc09a1a">More...</a><br /></td></tr>
<tr class="separator:aac1c9029b1cf9aa793060d372fc09a1a inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac782903e4a60924db3d17c00accc7f3b inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#ac782903e4a60924db3d17c00accc7f3b">clearFeature</a> (<a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> features) ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:ac782903e4a60924db3d17c00accc7f3b inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disable the given features. <a href="classace__button_1_1ButtonConfig.html#ac782903e4a60924db3d17c00accc7f3b">More...</a><br /></td></tr>
<tr class="separator:ac782903e4a60924db3d17c00accc7f3b inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8fc32804ba102f61ba97bcc5f4fe8448 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">EventHandler</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a8fc32804ba102f61ba97bcc5f4fe8448">getEventHandler</a> () ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:a8fc32804ba102f61ba97bcc5f4fe8448 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the eventHandler. <a href="classace__button_1_1ButtonConfig.html#a8fc32804ba102f61ba97bcc5f4fe8448">More...</a><br /></td></tr>
<tr class="separator:a8fc32804ba102f61ba97bcc5f4fe8448 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d228f08e9943fd4ab90caab39ef80be inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a5d228f08e9943fd4ab90caab39ef80be">setEventHandler</a> (<a class="el" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">EventHandler</a> eventHandler) ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:a5d228f08e9943fd4ab90caab39ef80be inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Install the event handler. <a href="classace__button_1_1ButtonConfig.html#a5d228f08e9943fd4ab90caab39ef80be">More...</a><br /></td></tr>
<tr class="separator:a5d228f08e9943fd4ab90caab39ef80be inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16d7dbbe1bb075018378e463cd8106de inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a16d7dbbe1bb075018378e463cd8106de">setTimingStats</a> (<a class="el" href="classace__button_1_1TimingStats.html">TimingStats</a> *timingStats)</td></tr>
<tr class="memdesc:a16d7dbbe1bb075018378e463cd8106de inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the timing stats object. <a href="classace__button_1_1ButtonConfig.html#a16d7dbbe1bb075018378e463cd8106de">More...</a><br /></td></tr>
<tr class="separator:a16d7dbbe1bb075018378e463cd8106de inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff7101f2fe0f0c3bba67924b01e9d493 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classace__button_1_1TimingStats.html">TimingStats</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#aff7101f2fe0f0c3bba67924b01e9d493">getTimingStats</a> ()</td></tr>
<tr class="memdesc:aff7101f2fe0f0c3bba67924b01e9d493 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the timing stats. <a href="classace__button_1_1ButtonConfig.html#aff7101f2fe0f0c3bba67924b01e9d493">More...</a><br /></td></tr>
<tr class="separator:aff7101f2fe0f0c3bba67924b01e9d493 inherit pub_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_methods_classace__button_1_1ButtonConfig"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classace__button_1_1ButtonConfig')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td></tr>
<tr class="memitem:ab780f081ef691b48deb5182d206a4b9d inherit pub_static_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top"><a id="ab780f081ef691b48deb5182d206a4b9d"></a>
static <a class="el" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#ab780f081ef691b48deb5182d206a4b9d">getSystemButtonConfig</a> () ACE_BUTTON_INLINE</td></tr>
<tr class="memdesc:ab780f081ef691b48deb5182d206a4b9d inherit pub_static_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the singleton instance of the <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> which is attached to all <a class="el" href="classace__button_1_1AceButton.html" title="An Adjustable Compact Event-driven (ACE) Button library that debounces and dispatches button events t...">AceButton</a> instances by default. <br /></td></tr>
<tr class="separator:ab780f081ef691b48deb5182d206a4b9d inherit pub_static_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_attribs_classace__button_1_1ButtonConfig"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classace__button_1_1ButtonConfig')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td></tr>
<tr class="memitem:a8fbe63588107a1375d05911d27df3ad8 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a8fbe63588107a1375d05911d27df3ad8">kDebounceDelay</a> = 20</td></tr>
<tr class="memdesc:a8fbe63588107a1375d05911d27df3ad8 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default value returned by <a class="el" href="classace__button_1_1ButtonConfig.html#ad7be58d0fe0b242f78f15319d201a565" title="Milliseconds to wait for debouncing. ">getDebounceDelay()</a>. <a href="classace__button_1_1ButtonConfig.html#a8fbe63588107a1375d05911d27df3ad8">More...</a><br /></td></tr>
<tr class="separator:a8fbe63588107a1375d05911d27df3ad8 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5691e38564dae63592d22abf74fb15f3 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a5691e38564dae63592d22abf74fb15f3">kClickDelay</a> = 200</td></tr>
<tr class="memdesc:a5691e38564dae63592d22abf74fb15f3 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default value returned by <a class="el" href="classace__button_1_1ButtonConfig.html#a19db203ce87dc2cafb2cab6ba124387a" title="Milliseconds to wait for a possible click. ">getClickDelay()</a>. <a href="classace__button_1_1ButtonConfig.html#a5691e38564dae63592d22abf74fb15f3">More...</a><br /></td></tr>
<tr class="separator:a5691e38564dae63592d22abf74fb15f3 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0a0d503f3396acef6a84aca4390fd6a inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#af0a0d503f3396acef6a84aca4390fd6a">kDoubleClickDelay</a> = 400</td></tr>
<tr class="memdesc:af0a0d503f3396acef6a84aca4390fd6a inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default value returned by <a class="el" href="classace__button_1_1ButtonConfig.html#a5ba500367e03c36f39225a5858e110e6" title="Milliseconds between the first and second click to register as a double-click. ">getDoubleClickDelay()</a>. <a href="classace__button_1_1ButtonConfig.html#af0a0d503f3396acef6a84aca4390fd6a">More...</a><br /></td></tr>
<tr class="separator:af0a0d503f3396acef6a84aca4390fd6a inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60bf588a2c067a561887eadf18cedccd inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a60bf588a2c067a561887eadf18cedccd">kLongPressDelay</a> = 1000</td></tr>
<tr class="memdesc:a60bf588a2c067a561887eadf18cedccd inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default value returned by <a class="el" href="classace__button_1_1ButtonConfig.html#a46d4213a827a94bf82ba99a9c2e59531" title="Milliseconds for a long press event. ">getLongPressDelay()</a>. <a href="classace__button_1_1ButtonConfig.html#a60bf588a2c067a561887eadf18cedccd">More...</a><br /></td></tr>
<tr class="separator:a60bf588a2c067a561887eadf18cedccd inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d20bc5800532085fd046fc64b80ae9f inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a3d20bc5800532085fd046fc64b80ae9f">kRepeatPressDelay</a> = 1000</td></tr>
<tr class="memdesc:a3d20bc5800532085fd046fc64b80ae9f inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default value returned by <a class="el" href="classace__button_1_1ButtonConfig.html#ad85c75d2a2dd200552a181fb154d5fd2" title="Milliseconds that a button needs to be Pressed down before the start of the sequence of RepeatPressed...">getRepeatPressDelay()</a>. <a href="classace__button_1_1ButtonConfig.html#a3d20bc5800532085fd046fc64b80ae9f">More...</a><br /></td></tr>
<tr class="separator:a3d20bc5800532085fd046fc64b80ae9f inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a218c1aa09b45ea2fe6884e3af3a18310 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a218c1aa09b45ea2fe6884e3af3a18310">kRepeatPressInterval</a> = 200</td></tr>
<tr class="memdesc:a218c1aa09b45ea2fe6884e3af3a18310 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default value returned by <a class="el" href="classace__button_1_1ButtonConfig.html#aec4a97a1a1306b9ff12f1cdf44515c43" title="Milliseconds between two successive RepeatPressed events. ">getRepeatPressInterval()</a>. <a href="classace__button_1_1ButtonConfig.html#a218c1aa09b45ea2fe6884e3af3a18310">More...</a><br /></td></tr>
<tr class="separator:a218c1aa09b45ea2fe6884e3af3a18310 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac662555100416c4843c6ee5156699c56 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#ac662555100416c4843c6ee5156699c56">kFeatureClick</a> = 0x01</td></tr>
<tr class="memdesc:ac662555100416c4843c6ee5156699c56 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to activate the <a class="el" href="classace__button_1_1AceButton.html#a21797e5e069da3f7bba42b40ab3a7305" title="Button was clicked (Pressed and Released within ButtonConfig::getClickDelay()). ">AceButton::kEventClicked</a> event. <a href="classace__button_1_1ButtonConfig.html#ac662555100416c4843c6ee5156699c56">More...</a><br /></td></tr>
<tr class="separator:ac662555100416c4843c6ee5156699c56 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a638943c127dd60288a83e83260825d01 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a638943c127dd60288a83e83260825d01">kFeatureDoubleClick</a> = 0x02</td></tr>
<tr class="memdesc:a638943c127dd60288a83e83260825d01 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to activate the <a class="el" href="classace__button_1_1AceButton.html#a0c63f30106e4688425ba37d8f7a9546b" title="Button was double-clicked. ">AceButton::kEventDoubleClicked</a> event. <a href="classace__button_1_1ButtonConfig.html#a638943c127dd60288a83e83260825d01">More...</a><br /></td></tr>
<tr class="separator:a638943c127dd60288a83e83260825d01 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d175560047a4ca245186fb26fa413f2 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a4d175560047a4ca245186fb26fa413f2">kFeatureLongPress</a> = 0x04</td></tr>
<tr class="memdesc:a4d175560047a4ca245186fb26fa413f2 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to activate the AceButton::kEventLongPress event. <a href="classace__button_1_1ButtonConfig.html#a4d175560047a4ca245186fb26fa413f2">More...</a><br /></td></tr>
<tr class="separator:a4d175560047a4ca245186fb26fa413f2 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9b941ca87f0eeb899ed503481439c92 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#ac9b941ca87f0eeb899ed503481439c92">kFeatureRepeatPress</a> = 0x08</td></tr>
<tr class="memdesc:ac9b941ca87f0eeb899ed503481439c92 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to activate the <a class="el" href="classace__button_1_1AceButton.html#a9c4195cb128da40677ea223eb81743c9" title="Button was held down and auto generated multiple presses. ">AceButton::kEventRepeatPressed</a> event. <a href="classace__button_1_1ButtonConfig.html#ac9b941ca87f0eeb899ed503481439c92">More...</a><br /></td></tr>
<tr class="separator:ac9b941ca87f0eeb899ed503481439c92 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57327066d135bcc99c4a68b55fca162e inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a57327066d135bcc99c4a68b55fca162e">kFeatureSuppressAfterClick</a> = 0x10</td></tr>
<tr class="memdesc:a57327066d135bcc99c4a68b55fca162e inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to suppress kEventReleased after a kEventClicked. <a href="classace__button_1_1ButtonConfig.html#a57327066d135bcc99c4a68b55fca162e">More...</a><br /></td></tr>
<tr class="separator:a57327066d135bcc99c4a68b55fca162e inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7642e16b2cc8dd0136312054b1da8f9e inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a7642e16b2cc8dd0136312054b1da8f9e">kFeatureSuppressAfterDoubleClick</a> = 0x20</td></tr>
<tr class="memdesc:a7642e16b2cc8dd0136312054b1da8f9e inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to suppress kEventReleased after a kEventDoubleClicked. <a href="classace__button_1_1ButtonConfig.html#a7642e16b2cc8dd0136312054b1da8f9e">More...</a><br /></td></tr>
<tr class="separator:a7642e16b2cc8dd0136312054b1da8f9e inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15b8e90b1ffe01009a1d7dd18b5b6aae inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a15b8e90b1ffe01009a1d7dd18b5b6aae">kFeatureSuppressAfterLongPress</a> = 0x40</td></tr>
<tr class="memdesc:a15b8e90b1ffe01009a1d7dd18b5b6aae inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to suppress kEventReleased after a kEventLongPressed. <a href="classace__button_1_1ButtonConfig.html#a15b8e90b1ffe01009a1d7dd18b5b6aae">More...</a><br /></td></tr>
<tr class="separator:a15b8e90b1ffe01009a1d7dd18b5b6aae inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b43b591ba53d360e787bf780af0abbc inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a6b43b591ba53d360e787bf780af0abbc">kFeatureSuppressAfterRepeatPress</a> = 0x80</td></tr>
<tr class="memdesc:a6b43b591ba53d360e787bf780af0abbc inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to suppress kEventReleased after a kEventRepeatPressed. <a href="classace__button_1_1ButtonConfig.html#a6b43b591ba53d360e787bf780af0abbc">More...</a><br /></td></tr>
<tr class="separator:a6b43b591ba53d360e787bf780af0abbc inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80d621dbcf533c9bb91a111b8fec2c53 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a80d621dbcf533c9bb91a111b8fec2c53">kFeatureSuppressClickBeforeDoubleClick</a> = 0x100</td></tr>
<tr class="memdesc:a80d621dbcf533c9bb91a111b8fec2c53 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to suppress kEventClicked before a kEventDoubleClicked. <a href="classace__button_1_1ButtonConfig.html#a80d621dbcf533c9bb91a111b8fec2c53">More...</a><br /></td></tr>
<tr class="separator:a80d621dbcf533c9bb91a111b8fec2c53 inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfd736234ae852f22894c7aceb4e534e inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#abfd736234ae852f22894c7aceb4e534e">kFeatureSuppressAll</a></td></tr>
<tr class="memdesc:abfd736234ae852f22894c7aceb4e534e inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience flag to suppress all suppressions. <a href="classace__button_1_1ButtonConfig.html#abfd736234ae852f22894c7aceb4e534e">More...</a><br /></td></tr>
<tr class="separator:abfd736234ae852f22894c7aceb4e534e inherit pub_static_attribs_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classace__button_1_1ButtonConfig"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classace__button_1_1ButtonConfig')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td></tr>
<tr class="memitem:a86f8f6b62825258e477e0a41846e0223 inherit pro_methods_classace__button_1_1ButtonConfig"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1ButtonConfig.html#a86f8f6b62825258e477e0a41846e0223">init</a> ()</td></tr>
<tr class="memdesc:a86f8f6b62825258e477e0a41846e0223 inherit pro_methods_classace__button_1_1ButtonConfig"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize to its pristine state, except for the EventHandler which is unchanged. <a href="classace__button_1_1ButtonConfig.html#a86f8f6b62825258e477e0a41846e0223">More...</a><br /></td></tr>
<tr class="separator:a86f8f6b62825258e477e0a41846e0223 inherit pro_methods_classace__button_1_1ButtonConfig"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A subclass of <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> which allows the user to override the varous timing parameters of <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> at runtime. </p>
<p>Each timing parameter is stored in a member variable, so an instance of <a class="el" href="classace__button_1_1AdjustableButtonConfig.html" title="A subclass of ButtonConfig which allows the user to override the varous timing parameters of ButtonCo...">AdjustableButtonConfig</a> consumes far more static RAM than <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a>. In return, this class allows these parameters to be changed at runtime by the user.</p>
<p>Warning: This class is deprecated and replaced with its parent <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> class. You can just use <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> everywhere you previously used <a class="el" href="classace__button_1_1AdjustableButtonConfig.html" title="A subclass of ButtonConfig which allows the user to override the varous timing parameters of ButtonCo...">AdjustableButtonConfig</a>. </p>
<p class="definition">Definition at line <a class="el" href="ace__button_2AdjustableButtonConfig_8h_source.html#l00043">43</a> of file <a class="el" href="ace__button_2AdjustableButtonConfig_8h_source.html">AdjustableButtonConfig.h</a>.</p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>/home/brian/dev/AceButton/src/ace_button/<a class="el" href="ace__button_2AdjustableButtonConfig_8h_source.html">AdjustableButtonConfig.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,3 @@
<map id="ace_button::AdjustableButtonConfig" name="ace_button::AdjustableButtonConfig">
<area shape="rect" id="node2" href="$classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in..." alt="" coords="17,5,187,32"/>
</map>

View File

@ -0,0 +1 @@
24afbad6ac053e22de7b42f0fa06d3d1

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -0,0 +1,3 @@
<map id="ace_button::AdjustableButtonConfig" name="ace_button::AdjustableButtonConfig">
<area shape="rect" id="node2" href="$classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in..." alt="" coords="17,5,187,32"/>
</map>

View File

@ -0,0 +1 @@
1fa92ec2e1aa7d5f08e922e62e347ea6

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -0,0 +1,125 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>ace_button</b></li><li class="navelem"><a class="el" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ace_button::ButtonConfig Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a66924aac157a81cc54a9776fb975893a">ButtonConfig</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#ac782903e4a60924db3d17c00accc7f3b">clearFeature</a>(FeatureFlagType features) ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">EventHandler</a> typedef</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> typedef</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a19db203ce87dc2cafb2cab6ba124387a">getClickDelay</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a440271e22d5e7e161cdcb3b73f092111">getClock</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a8a74d1a1c082bfb0e4ddf55e67d3ac2d">getClockMicros</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#ad7be58d0fe0b242f78f15319d201a565">getDebounceDelay</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a5ba500367e03c36f39225a5858e110e6">getDoubleClickDelay</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a8fc32804ba102f61ba97bcc5f4fe8448">getEventHandler</a>() ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a46d4213a827a94bf82ba99a9c2e59531">getLongPressDelay</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#ad85c75d2a2dd200552a181fb154d5fd2">getRepeatPressDelay</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#aec4a97a1a1306b9ff12f1cdf44515c43">getRepeatPressInterval</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#ab780f081ef691b48deb5182d206a4b9d">getSystemButtonConfig</a>() ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#aff7101f2fe0f0c3bba67924b01e9d493">getTimingStats</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a86f8f6b62825258e477e0a41846e0223">init</a>()</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#aae51c7a2986eafd400784cdbe6bb1815">isFeature</a>(FeatureFlagType features) ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a5691e38564dae63592d22abf74fb15f3">kClickDelay</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a8fbe63588107a1375d05911d27df3ad8">kDebounceDelay</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#af0a0d503f3396acef6a84aca4390fd6a">kDoubleClickDelay</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#ac662555100416c4843c6ee5156699c56">kFeatureClick</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a638943c127dd60288a83e83260825d01">kFeatureDoubleClick</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a4d175560047a4ca245186fb26fa413f2">kFeatureLongPress</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#ac9b941ca87f0eeb899ed503481439c92">kFeatureRepeatPress</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a57327066d135bcc99c4a68b55fca162e">kFeatureSuppressAfterClick</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a7642e16b2cc8dd0136312054b1da8f9e">kFeatureSuppressAfterDoubleClick</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a15b8e90b1ffe01009a1d7dd18b5b6aae">kFeatureSuppressAfterLongPress</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a6b43b591ba53d360e787bf780af0abbc">kFeatureSuppressAfterRepeatPress</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#abfd736234ae852f22894c7aceb4e534e">kFeatureSuppressAll</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a80d621dbcf533c9bb91a111b8fec2c53">kFeatureSuppressClickBeforeDoubleClick</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a60bf588a2c067a561887eadf18cedccd">kLongPressDelay</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a3d20bc5800532085fd046fc64b80ae9f">kRepeatPressDelay</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a218c1aa09b45ea2fe6884e3af3a18310">kRepeatPressInterval</a></td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a5dab877bf124bfdf5a5eb703ca123027">readButton</a>(uint8_t pin)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#aef65e12128997c46bc2754a988b98f14">setClickDelay</a>(uint16_t clickDelay)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a9860d2c8a6ab33d40ea126b02d168cab">setDebounceDelay</a>(uint16_t debounceDelay)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a367a809017e1d633a5cf6b117981d579">setDoubleClickDelay</a>(uint16_t doubleClickDelay)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a5d228f08e9943fd4ab90caab39ef80be">setEventHandler</a>(EventHandler eventHandler) ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#aac1c9029b1cf9aa793060d372fc09a1a">setFeature</a>(FeatureFlagType features) ACE_BUTTON_INLINE</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a7d90d39aeddacb5abc9d8741611d7c4a">setLongPressDelay</a>(uint16_t longPressDelay)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#af813c969eddd884e9fa83b334a59a0a5">setRepeatPressDelay</a>(uint16_t repeatPressDelay)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#aa1b1217e0042512fc8d9b6544536aed3">setRepeatPressInterval</a>(uint16_t repeatPressInterval)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html#a16d7dbbe1bb075018378e463cd8106de">setTimingStats</a>(TimingStats *timingStats)</td><td class="entry"><a class="el" href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,3 @@
<map id="ace_button::ButtonConfig" name="ace_button::ButtonConfig">
<area shape="rect" id="node2" href="$classace__button_1_1AdjustableButtonConfig.html" title="A subclass of ButtonConfig which allows the user to override the varous timing parameters of ButtonCo..." alt="" coords="5,80,199,121"/>
</map>

View File

@ -0,0 +1 @@
884078a211be4f42b1d83fd9a9e04dc6

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -0,0 +1,91 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>ace_button</b></li><li class="navelem"><a class="el" href="classace__button_1_1TimingStats.html">TimingStats</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ace_button::TimingStats Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getAvg</b>() const (defined in <a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a>)</td><td class="entry"><a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1TimingStats.html#ad23641b3302acb7050317c8749febe3d">getCount</a>() const</td><td class="entry"><a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classace__button_1_1TimingStats.html#a3eab5a6a7a43e1a565d91faf14b148b2">getCounter</a>() const</td><td class="entry"><a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1TimingStats.html#a04c9dbea755eafeed3bb7872d7fb0d24">getExpDecayAvg</a>() const</td><td class="entry"><a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMax</b>() const (defined in <a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a>)</td><td class="entry"><a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>getMin</b>() const (defined in <a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a>)</td><td class="entry"><a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>() (defined in <a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a>)</td><td class="entry"><a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classace__button_1_1TimingStats.html#ad763ef53d333dd86964acd7b5458491b">TimingStats</a>()</td><td class="entry"><a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>update</b>(uint16_t duration) (defined in <a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a>)</td><td class="entry"><a class="el" href="classace__button_1_1TimingStats.html">ace_button::TimingStats</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,239 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: ace_button::TimingStats Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>ace_button</b></li><li class="navelem"><a class="el" href="classace__button_1_1TimingStats.html">TimingStats</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classace__button_1_1TimingStats-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">ace_button::TimingStats Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad763ef53d333dd86964acd7b5458491b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1TimingStats.html#ad763ef53d333dd86964acd7b5458491b">TimingStats</a> ()</td></tr>
<tr class="memdesc:ad763ef53d333dd86964acd7b5458491b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#ad763ef53d333dd86964acd7b5458491b">More...</a><br /></td></tr>
<tr class="separator:ad763ef53d333dd86964acd7b5458491b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e53cdacce4a86a2e3c466512cdc6661"><td class="memItemLeft" align="right" valign="top"><a id="a1e53cdacce4a86a2e3c466512cdc6661"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
<tr class="separator:a1e53cdacce4a86a2e3c466512cdc6661"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f1fbf56ed9dc9b87b1b709a91a397e9"><td class="memItemLeft" align="right" valign="top"><a id="a6f1fbf56ed9dc9b87b1b709a91a397e9"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>getMax</b> () const</td></tr>
<tr class="separator:a6f1fbf56ed9dc9b87b1b709a91a397e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6729f8db8e00f95637008fa26dd9be2c"><td class="memItemLeft" align="right" valign="top"><a id="a6729f8db8e00f95637008fa26dd9be2c"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>getMin</b> () const</td></tr>
<tr class="separator:a6729f8db8e00f95637008fa26dd9be2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ae11745d54cc603a9c66fd18aa631be"><td class="memItemLeft" align="right" valign="top"><a id="a3ae11745d54cc603a9c66fd18aa631be"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>getAvg</b> () const</td></tr>
<tr class="separator:a3ae11745d54cc603a9c66fd18aa631be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04c9dbea755eafeed3bb7872d7fb0d24"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1TimingStats.html#a04c9dbea755eafeed3bb7872d7fb0d24">getExpDecayAvg</a> () const</td></tr>
<tr class="memdesc:a04c9dbea755eafeed3bb7872d7fb0d24"><td class="mdescLeft">&#160;</td><td class="mdescRight">An exponential decay average. <a href="#a04c9dbea755eafeed3bb7872d7fb0d24">More...</a><br /></td></tr>
<tr class="separator:a04c9dbea755eafeed3bb7872d7fb0d24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad23641b3302acb7050317c8749febe3d"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1TimingStats.html#ad23641b3302acb7050317c8749febe3d">getCount</a> () const</td></tr>
<tr class="memdesc:ad23641b3302acb7050317c8749febe3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of times update() was called since last reset. <a href="#ad23641b3302acb7050317c8749febe3d">More...</a><br /></td></tr>
<tr class="separator:ad23641b3302acb7050317c8749febe3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3eab5a6a7a43e1a565d91faf14b148b2"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classace__button_1_1TimingStats.html#a3eab5a6a7a43e1a565d91faf14b148b2">getCounter</a> () const</td></tr>
<tr class="memdesc:a3eab5a6a7a43e1a565d91faf14b148b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of times update() was called from the beginning of time. <a href="#a3eab5a6a7a43e1a565d91faf14b148b2">More...</a><br /></td></tr>
<tr class="separator:a3eab5a6a7a43e1a565d91faf14b148b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10d5cf8bd11da5e1d07ddc256b97a2ce"><td class="memItemLeft" align="right" valign="top"><a id="a10d5cf8bd11da5e1d07ddc256b97a2ce"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>update</b> (uint16_t duration)</td></tr>
<tr class="separator:a10d5cf8bd11da5e1d07ddc256b97a2ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="TimingStats_8h_source.html#l00032">32</a> of file <a class="el" href="TimingStats_8h_source.html">TimingStats.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ad763ef53d333dd86964acd7b5458491b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad763ef53d333dd86964acd7b5458491b">&#9670;&nbsp;</a></span>TimingStats()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ace_button::TimingStats::TimingStats </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor. </p>
<p>Default copy-constructor and assignment operator ok. </p>
<p class="definition">Definition at line <a class="el" href="TimingStats_8h_source.html#l00035">35</a> of file <a class="el" href="TimingStats_8h_source.html">TimingStats.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ad23641b3302acb7050317c8749febe3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad23641b3302acb7050317c8749febe3d">&#9670;&nbsp;</a></span>getCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint16_t ace_button::TimingStats::getCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of times update() was called since last reset. </p>
<p class="definition">Definition at line <a class="el" href="TimingStats_8h_source.html#l00057">57</a> of file <a class="el" href="TimingStats_8h_source.html">TimingStats.h</a>.</p>
</div>
</div>
<a id="a3eab5a6a7a43e1a565d91faf14b148b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3eab5a6a7a43e1a565d91faf14b148b2">&#9670;&nbsp;</a></span>getCounter()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint16_t ace_button::TimingStats::getCounter </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of times update() was called from the beginning of time. </p>
<p>Never reset. This is useful to determining how many times update() was called since it was last checked from the client code. </p>
<p class="definition">Definition at line <a class="el" href="TimingStats_8h_source.html#l00064">64</a> of file <a class="el" href="TimingStats_8h_source.html">TimingStats.h</a>.</p>
</div>
</div>
<a id="a04c9dbea755eafeed3bb7872d7fb0d24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a04c9dbea755eafeed3bb7872d7fb0d24">&#9670;&nbsp;</a></span>getExpDecayAvg()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint16_t ace_button::TimingStats::getExpDecayAvg </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>An exponential decay average. </p>
<p class="definition">Definition at line <a class="el" href="TimingStats_8h_source.html#l00054">54</a> of file <a class="el" href="TimingStats_8h_source.html">TimingStats.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>/home/brian/dev/AceButton/src/ace_button/<a class="el" href="TimingStats_8h_source.html">TimingStats.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,87 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: Class Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_a">a</a>&#160;|&#160;<a class="qindex" href="#letter_b">b</a>&#160;|&#160;<a class="qindex" href="#letter_t">t</a></div>
<table class="classindex">
<tr><td rowspan="2" valign="bottom"><a name="letter_a"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;a&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="classace__button_1_1AdjustableButtonConfig.html">AdjustableButtonConfig</a> (ace_button)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_t"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;t&#160;&#160;</div></td></tr></table>
</td><td></td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_b"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;b&#160;&#160;</div></td></tr></table>
</td><td></td></tr>
<tr><td valign="top"><a class="el" href="classace__button_1_1AceButton.html">AceButton</a> (ace_button)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classace__button_1_1TimingStats.html">TimingStats</a> (ace_button)&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td valign="top"><a class="el" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a> (ace_button)&#160;&#160;&#160;</td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_a">a</a>&#160;|&#160;<a class="qindex" href="#letter_b">b</a>&#160;|&#160;<a class="qindex" href="#letter_t">t</a></div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

View File

@ -0,0 +1,83 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: /home/brian/dev/AceButton/src Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">src Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
Directories</h2></td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,79 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: /home/brian/dev/AceButton/src/ace_button Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_ebbe9b537c0e01d975153fa119b09658.html">ace_button</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ace_button Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -0,0 +1,104 @@
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function() {
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
// the clicked row
var currentRow = $('#row_'+id);
// all rows after the clicked row
var rows = currentRow.nextAll("tr");
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}
$(document).ready(function() {
$('.code,.codeRef').each(function() {
$(this).data('powertip',$('#'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html());
$(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true });
});
});

View File

@ -0,0 +1,90 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: File List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">File List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_self">src</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span id="img_0_0_" class="iconfopen" onclick="toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_ebbe9b537c0e01d975153fa119b09658.html" target="_self">ace_button</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="AceButton_8cpp_source.html"><span class="icondoc"></span></a><b>AceButton.cpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="ace__button_2AceButton_8h_source.html"><span class="icondoc"></span></a><b>AceButton.h</b></td><td class="desc"></td></tr>
<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="ace__button_2AdjustableButtonConfig_8h_source.html"><span class="icondoc"></span></a><b>AdjustableButtonConfig.h</b></td><td class="desc"></td></tr>
<tr id="row_0_0_3_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="ButtonConfig_8cpp_source.html"><span class="icondoc"></span></a><b>ButtonConfig.cpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="ace__button_2ButtonConfig_8h_source.html"><span class="icondoc"></span></a><b>ButtonConfig.h</b></td><td class="desc"></td></tr>
<tr id="row_0_0_5_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="TimingStats_8h_source.html"><span class="icondoc"></span></a><b>TimingStats.h</b></td><td class="desc"></td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="AceButton_8h_source.html"><span class="icondoc"></span></a><b>AceButton.h</b></td><td class="desc"></td></tr>
<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="AdjustableButtonConfig_8h_source.html"><span class="icondoc"></span></a><b>AdjustableButtonConfig.h</b></td><td class="desc"></td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="ButtonConfig_8h_source.html"><span class="icondoc"></span></a><b>ButtonConfig.h</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

View File

@ -0,0 +1,309 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div>
<h3><a id="index_a"></a>- a -</h3><ul>
<li>AceButton()
: <a class="el" href="classace__button_1_1AceButton.html#a3c480636223edc899a79c821c32c6982">ace_button::AceButton</a>
</li>
</ul>
<h3><a id="index_b"></a>- b -</h3><ul>
<li>ButtonConfig()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a66924aac157a81cc54a9776fb975893a">ace_button::ButtonConfig</a>
</li>
</ul>
<h3><a id="index_c"></a>- c -</h3><ul>
<li>check()
: <a class="el" href="classace__button_1_1AceButton.html#af710048a654fa5d5e45405661282a7b1">ace_button::AceButton</a>
</li>
<li>clearFeature()
: <a class="el" href="classace__button_1_1ButtonConfig.html#ac782903e4a60924db3d17c00accc7f3b">ace_button::ButtonConfig</a>
</li>
</ul>
<h3><a id="index_e"></a>- e -</h3><ul>
<li>EventHandler
: <a class="el" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">ace_button::ButtonConfig</a>
</li>
</ul>
<h3><a id="index_f"></a>- f -</h3><ul>
<li>FeatureFlagType
: <a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">ace_button::ButtonConfig</a>
</li>
</ul>
<h3><a id="index_g"></a>- g -</h3><ul>
<li>getButtonConfig()
: <a class="el" href="classace__button_1_1AceButton.html#a5e4ea4aca852a5e0b1d426bccb131cfb">ace_button::AceButton</a>
</li>
<li>getClickDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a19db203ce87dc2cafb2cab6ba124387a">ace_button::ButtonConfig</a>
</li>
<li>getClock()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a440271e22d5e7e161cdcb3b73f092111">ace_button::ButtonConfig</a>
</li>
<li>getClockMicros()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a8a74d1a1c082bfb0e4ddf55e67d3ac2d">ace_button::ButtonConfig</a>
</li>
<li>getCount()
: <a class="el" href="classace__button_1_1TimingStats.html#ad23641b3302acb7050317c8749febe3d">ace_button::TimingStats</a>
</li>
<li>getCounter()
: <a class="el" href="classace__button_1_1TimingStats.html#a3eab5a6a7a43e1a565d91faf14b148b2">ace_button::TimingStats</a>
</li>
<li>getDebounceDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#ad7be58d0fe0b242f78f15319d201a565">ace_button::ButtonConfig</a>
</li>
<li>getDefaultReleasedState()
: <a class="el" href="classace__button_1_1AceButton.html#afa8013bb98f5fbd79654aebca613ba71">ace_button::AceButton</a>
</li>
<li>getDoubleClickDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a5ba500367e03c36f39225a5858e110e6">ace_button::ButtonConfig</a>
</li>
<li>getEventHandler()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a8fc32804ba102f61ba97bcc5f4fe8448">ace_button::ButtonConfig</a>
</li>
<li>getExpDecayAvg()
: <a class="el" href="classace__button_1_1TimingStats.html#a04c9dbea755eafeed3bb7872d7fb0d24">ace_button::TimingStats</a>
</li>
<li>getId()
: <a class="el" href="classace__button_1_1AceButton.html#a4a693b836e3fed29d4e7203a5a97910b">ace_button::AceButton</a>
</li>
<li>getLastButtonState()
: <a class="el" href="classace__button_1_1AceButton.html#a3c49e9edf8cbb5e3800c5f4506d0beca">ace_button::AceButton</a>
</li>
<li>getLongPressDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a46d4213a827a94bf82ba99a9c2e59531">ace_button::ButtonConfig</a>
</li>
<li>getPin()
: <a class="el" href="classace__button_1_1AceButton.html#ac6b12ca62c7c055325bfebd036579ed6">ace_button::AceButton</a>
</li>
<li>getRepeatPressDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#ad85c75d2a2dd200552a181fb154d5fd2">ace_button::ButtonConfig</a>
</li>
<li>getRepeatPressInterval()
: <a class="el" href="classace__button_1_1ButtonConfig.html#aec4a97a1a1306b9ff12f1cdf44515c43">ace_button::ButtonConfig</a>
</li>
<li>getSystemButtonConfig()
: <a class="el" href="classace__button_1_1ButtonConfig.html#ab780f081ef691b48deb5182d206a4b9d">ace_button::ButtonConfig</a>
</li>
<li>getTimingStats()
: <a class="el" href="classace__button_1_1ButtonConfig.html#aff7101f2fe0f0c3bba67924b01e9d493">ace_button::ButtonConfig</a>
</li>
</ul>
<h3><a id="index_i"></a>- i -</h3><ul>
<li>init()
: <a class="el" href="classace__button_1_1AceButton.html#a18c47304c694c6f084a343a7c83bef34">ace_button::AceButton</a>
, <a class="el" href="classace__button_1_1ButtonConfig.html#a86f8f6b62825258e477e0a41846e0223">ace_button::ButtonConfig</a>
</li>
<li>isFeature()
: <a class="el" href="classace__button_1_1ButtonConfig.html#aae51c7a2986eafd400784cdbe6bb1815">ace_button::ButtonConfig</a>
</li>
<li>isPressedRaw()
: <a class="el" href="classace__button_1_1AceButton.html#af80a2bd19d929bff5dcce54a3db6fb0a">ace_button::AceButton</a>
</li>
<li>isReleased()
: <a class="el" href="classace__button_1_1AceButton.html#aa3cbb3fb16076cfe9255e0f70cc6aa72">ace_button::AceButton</a>
</li>
</ul>
<h3><a id="index_k"></a>- k -</h3><ul>
<li>kButtonStateUnknown
: <a class="el" href="classace__button_1_1AceButton.html#afe8e8e22146f510afa487e6ec98b6253">ace_button::AceButton</a>
</li>
<li>kClickDelay
: <a class="el" href="classace__button_1_1ButtonConfig.html#a5691e38564dae63592d22abf74fb15f3">ace_button::ButtonConfig</a>
</li>
<li>kDebounceDelay
: <a class="el" href="classace__button_1_1ButtonConfig.html#a8fbe63588107a1375d05911d27df3ad8">ace_button::ButtonConfig</a>
</li>
<li>kDoubleClickDelay
: <a class="el" href="classace__button_1_1ButtonConfig.html#af0a0d503f3396acef6a84aca4390fd6a">ace_button::ButtonConfig</a>
</li>
<li>kEventClicked
: <a class="el" href="classace__button_1_1AceButton.html#a21797e5e069da3f7bba42b40ab3a7305">ace_button::AceButton</a>
</li>
<li>kEventDoubleClicked
: <a class="el" href="classace__button_1_1AceButton.html#a0c63f30106e4688425ba37d8f7a9546b">ace_button::AceButton</a>
</li>
<li>kEventLongPressed
: <a class="el" href="classace__button_1_1AceButton.html#a769599d288f64dc0e55a69184596d804">ace_button::AceButton</a>
</li>
<li>kEventPressed
: <a class="el" href="classace__button_1_1AceButton.html#ae723d826fe219a8415764b9fed5d8976">ace_button::AceButton</a>
</li>
<li>kEventReleased
: <a class="el" href="classace__button_1_1AceButton.html#ada5bd7c31950e2acdb8a9464e795c13c">ace_button::AceButton</a>
</li>
<li>kEventRepeatPressed
: <a class="el" href="classace__button_1_1AceButton.html#a9c4195cb128da40677ea223eb81743c9">ace_button::AceButton</a>
</li>
<li>kFeatureClick
: <a class="el" href="classace__button_1_1ButtonConfig.html#ac662555100416c4843c6ee5156699c56">ace_button::ButtonConfig</a>
</li>
<li>kFeatureDoubleClick
: <a class="el" href="classace__button_1_1ButtonConfig.html#a638943c127dd60288a83e83260825d01">ace_button::ButtonConfig</a>
</li>
<li>kFeatureLongPress
: <a class="el" href="classace__button_1_1ButtonConfig.html#a4d175560047a4ca245186fb26fa413f2">ace_button::ButtonConfig</a>
</li>
<li>kFeatureRepeatPress
: <a class="el" href="classace__button_1_1ButtonConfig.html#ac9b941ca87f0eeb899ed503481439c92">ace_button::ButtonConfig</a>
</li>
<li>kFeatureSuppressAfterClick
: <a class="el" href="classace__button_1_1ButtonConfig.html#a57327066d135bcc99c4a68b55fca162e">ace_button::ButtonConfig</a>
</li>
<li>kFeatureSuppressAfterDoubleClick
: <a class="el" href="classace__button_1_1ButtonConfig.html#a7642e16b2cc8dd0136312054b1da8f9e">ace_button::ButtonConfig</a>
</li>
<li>kFeatureSuppressAfterLongPress
: <a class="el" href="classace__button_1_1ButtonConfig.html#a15b8e90b1ffe01009a1d7dd18b5b6aae">ace_button::ButtonConfig</a>
</li>
<li>kFeatureSuppressAfterRepeatPress
: <a class="el" href="classace__button_1_1ButtonConfig.html#a6b43b591ba53d360e787bf780af0abbc">ace_button::ButtonConfig</a>
</li>
<li>kFeatureSuppressAll
: <a class="el" href="classace__button_1_1ButtonConfig.html#abfd736234ae852f22894c7aceb4e534e">ace_button::ButtonConfig</a>
</li>
<li>kFeatureSuppressClickBeforeDoubleClick
: <a class="el" href="classace__button_1_1ButtonConfig.html#a80d621dbcf533c9bb91a111b8fec2c53">ace_button::ButtonConfig</a>
</li>
<li>kLongPressDelay
: <a class="el" href="classace__button_1_1ButtonConfig.html#a60bf588a2c067a561887eadf18cedccd">ace_button::ButtonConfig</a>
</li>
<li>kRepeatPressDelay
: <a class="el" href="classace__button_1_1ButtonConfig.html#a3d20bc5800532085fd046fc64b80ae9f">ace_button::ButtonConfig</a>
</li>
<li>kRepeatPressInterval
: <a class="el" href="classace__button_1_1ButtonConfig.html#a218c1aa09b45ea2fe6884e3af3a18310">ace_button::ButtonConfig</a>
</li>
</ul>
<h3><a id="index_r"></a>- r -</h3><ul>
<li>readButton()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a5dab877bf124bfdf5a5eb703ca123027">ace_button::ButtonConfig</a>
</li>
</ul>
<h3><a id="index_s"></a>- s -</h3><ul>
<li>setButtonConfig()
: <a class="el" href="classace__button_1_1AceButton.html#abc9d705d1ca4341cf6f9434962b5b5e7">ace_button::AceButton</a>
</li>
<li>setClickDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#aef65e12128997c46bc2754a988b98f14">ace_button::ButtonConfig</a>
</li>
<li>setDebounceDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a9860d2c8a6ab33d40ea126b02d168cab">ace_button::ButtonConfig</a>
</li>
<li>setDoubleClickDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a367a809017e1d633a5cf6b117981d579">ace_button::ButtonConfig</a>
</li>
<li>setEventHandler()
: <a class="el" href="classace__button_1_1AceButton.html#a42edbfeb4091c867d976a4d24622f19c">ace_button::AceButton</a>
, <a class="el" href="classace__button_1_1ButtonConfig.html#a5d228f08e9943fd4ab90caab39ef80be">ace_button::ButtonConfig</a>
</li>
<li>setFeature()
: <a class="el" href="classace__button_1_1ButtonConfig.html#aac1c9029b1cf9aa793060d372fc09a1a">ace_button::ButtonConfig</a>
</li>
<li>setLongPressDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a7d90d39aeddacb5abc9d8741611d7c4a">ace_button::ButtonConfig</a>
</li>
<li>setRepeatPressDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#af813c969eddd884e9fa83b334a59a0a5">ace_button::ButtonConfig</a>
</li>
<li>setRepeatPressInterval()
: <a class="el" href="classace__button_1_1ButtonConfig.html#aa1b1217e0042512fc8d9b6544536aed3">ace_button::ButtonConfig</a>
</li>
<li>setTimingStats()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a16d7dbbe1bb075018378e463cd8106de">ace_button::ButtonConfig</a>
</li>
</ul>
<h3><a id="index_t"></a>- t -</h3><ul>
<li>TimingStats()
: <a class="el" href="classace__button_1_1TimingStats.html#ad763ef53d333dd86964acd7b5458491b">ace_button::TimingStats</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,222 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: Class Members - Functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;
<h3><a id="index_a"></a>- a -</h3><ul>
<li>AceButton()
: <a class="el" href="classace__button_1_1AceButton.html#a3c480636223edc899a79c821c32c6982">ace_button::AceButton</a>
</li>
</ul>
<h3><a id="index_b"></a>- b -</h3><ul>
<li>ButtonConfig()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a66924aac157a81cc54a9776fb975893a">ace_button::ButtonConfig</a>
</li>
</ul>
<h3><a id="index_c"></a>- c -</h3><ul>
<li>check()
: <a class="el" href="classace__button_1_1AceButton.html#af710048a654fa5d5e45405661282a7b1">ace_button::AceButton</a>
</li>
<li>clearFeature()
: <a class="el" href="classace__button_1_1ButtonConfig.html#ac782903e4a60924db3d17c00accc7f3b">ace_button::ButtonConfig</a>
</li>
</ul>
<h3><a id="index_g"></a>- g -</h3><ul>
<li>getButtonConfig()
: <a class="el" href="classace__button_1_1AceButton.html#a5e4ea4aca852a5e0b1d426bccb131cfb">ace_button::AceButton</a>
</li>
<li>getClickDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a19db203ce87dc2cafb2cab6ba124387a">ace_button::ButtonConfig</a>
</li>
<li>getClock()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a440271e22d5e7e161cdcb3b73f092111">ace_button::ButtonConfig</a>
</li>
<li>getClockMicros()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a8a74d1a1c082bfb0e4ddf55e67d3ac2d">ace_button::ButtonConfig</a>
</li>
<li>getCount()
: <a class="el" href="classace__button_1_1TimingStats.html#ad23641b3302acb7050317c8749febe3d">ace_button::TimingStats</a>
</li>
<li>getCounter()
: <a class="el" href="classace__button_1_1TimingStats.html#a3eab5a6a7a43e1a565d91faf14b148b2">ace_button::TimingStats</a>
</li>
<li>getDebounceDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#ad7be58d0fe0b242f78f15319d201a565">ace_button::ButtonConfig</a>
</li>
<li>getDefaultReleasedState()
: <a class="el" href="classace__button_1_1AceButton.html#afa8013bb98f5fbd79654aebca613ba71">ace_button::AceButton</a>
</li>
<li>getDoubleClickDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a5ba500367e03c36f39225a5858e110e6">ace_button::ButtonConfig</a>
</li>
<li>getEventHandler()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a8fc32804ba102f61ba97bcc5f4fe8448">ace_button::ButtonConfig</a>
</li>
<li>getExpDecayAvg()
: <a class="el" href="classace__button_1_1TimingStats.html#a04c9dbea755eafeed3bb7872d7fb0d24">ace_button::TimingStats</a>
</li>
<li>getId()
: <a class="el" href="classace__button_1_1AceButton.html#a4a693b836e3fed29d4e7203a5a97910b">ace_button::AceButton</a>
</li>
<li>getLastButtonState()
: <a class="el" href="classace__button_1_1AceButton.html#a3c49e9edf8cbb5e3800c5f4506d0beca">ace_button::AceButton</a>
</li>
<li>getLongPressDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a46d4213a827a94bf82ba99a9c2e59531">ace_button::ButtonConfig</a>
</li>
<li>getPin()
: <a class="el" href="classace__button_1_1AceButton.html#ac6b12ca62c7c055325bfebd036579ed6">ace_button::AceButton</a>
</li>
<li>getRepeatPressDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#ad85c75d2a2dd200552a181fb154d5fd2">ace_button::ButtonConfig</a>
</li>
<li>getRepeatPressInterval()
: <a class="el" href="classace__button_1_1ButtonConfig.html#aec4a97a1a1306b9ff12f1cdf44515c43">ace_button::ButtonConfig</a>
</li>
<li>getSystemButtonConfig()
: <a class="el" href="classace__button_1_1ButtonConfig.html#ab780f081ef691b48deb5182d206a4b9d">ace_button::ButtonConfig</a>
</li>
<li>getTimingStats()
: <a class="el" href="classace__button_1_1ButtonConfig.html#aff7101f2fe0f0c3bba67924b01e9d493">ace_button::ButtonConfig</a>
</li>
</ul>
<h3><a id="index_i"></a>- i -</h3><ul>
<li>init()
: <a class="el" href="classace__button_1_1AceButton.html#a18c47304c694c6f084a343a7c83bef34">ace_button::AceButton</a>
, <a class="el" href="classace__button_1_1ButtonConfig.html#a86f8f6b62825258e477e0a41846e0223">ace_button::ButtonConfig</a>
</li>
<li>isFeature()
: <a class="el" href="classace__button_1_1ButtonConfig.html#aae51c7a2986eafd400784cdbe6bb1815">ace_button::ButtonConfig</a>
</li>
<li>isPressedRaw()
: <a class="el" href="classace__button_1_1AceButton.html#af80a2bd19d929bff5dcce54a3db6fb0a">ace_button::AceButton</a>
</li>
<li>isReleased()
: <a class="el" href="classace__button_1_1AceButton.html#aa3cbb3fb16076cfe9255e0f70cc6aa72">ace_button::AceButton</a>
</li>
</ul>
<h3><a id="index_r"></a>- r -</h3><ul>
<li>readButton()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a5dab877bf124bfdf5a5eb703ca123027">ace_button::ButtonConfig</a>
</li>
</ul>
<h3><a id="index_s"></a>- s -</h3><ul>
<li>setButtonConfig()
: <a class="el" href="classace__button_1_1AceButton.html#abc9d705d1ca4341cf6f9434962b5b5e7">ace_button::AceButton</a>
</li>
<li>setClickDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#aef65e12128997c46bc2754a988b98f14">ace_button::ButtonConfig</a>
</li>
<li>setDebounceDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a9860d2c8a6ab33d40ea126b02d168cab">ace_button::ButtonConfig</a>
</li>
<li>setDoubleClickDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a367a809017e1d633a5cf6b117981d579">ace_button::ButtonConfig</a>
</li>
<li>setEventHandler()
: <a class="el" href="classace__button_1_1AceButton.html#a42edbfeb4091c867d976a4d24622f19c">ace_button::AceButton</a>
, <a class="el" href="classace__button_1_1ButtonConfig.html#a5d228f08e9943fd4ab90caab39ef80be">ace_button::ButtonConfig</a>
</li>
<li>setFeature()
: <a class="el" href="classace__button_1_1ButtonConfig.html#aac1c9029b1cf9aa793060d372fc09a1a">ace_button::ButtonConfig</a>
</li>
<li>setLongPressDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a7d90d39aeddacb5abc9d8741611d7c4a">ace_button::ButtonConfig</a>
</li>
<li>setRepeatPressDelay()
: <a class="el" href="classace__button_1_1ButtonConfig.html#af813c969eddd884e9fa83b334a59a0a5">ace_button::ButtonConfig</a>
</li>
<li>setRepeatPressInterval()
: <a class="el" href="classace__button_1_1ButtonConfig.html#aa1b1217e0042512fc8d9b6544536aed3">ace_button::ButtonConfig</a>
</li>
<li>setTimingStats()
: <a class="el" href="classace__button_1_1ButtonConfig.html#a16d7dbbe1bb075018378e463cd8106de">ace_button::ButtonConfig</a>
</li>
</ul>
<h3><a id="index_t"></a>- t -</h3><ul>
<li>TimingStats()
: <a class="el" href="classace__button_1_1TimingStats.html#ad763ef53d333dd86964acd7b5458491b">ace_button::TimingStats</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,79 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: Class Members - Typedefs</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>EventHandler
: <a class="el" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">ace_button::ButtonConfig</a>
</li>
<li>FeatureFlagType
: <a class="el" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">ace_button::ButtonConfig</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,142 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: Class Members - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>kButtonStateUnknown
: <a class="el" href="classace__button_1_1AceButton.html#afe8e8e22146f510afa487e6ec98b6253">ace_button::AceButton</a>
</li>
<li>kClickDelay
: <a class="el" href="classace__button_1_1ButtonConfig.html#a5691e38564dae63592d22abf74fb15f3">ace_button::ButtonConfig</a>
</li>
<li>kDebounceDelay
: <a class="el" href="classace__button_1_1ButtonConfig.html#a8fbe63588107a1375d05911d27df3ad8">ace_button::ButtonConfig</a>
</li>
<li>kDoubleClickDelay
: <a class="el" href="classace__button_1_1ButtonConfig.html#af0a0d503f3396acef6a84aca4390fd6a">ace_button::ButtonConfig</a>
</li>
<li>kEventClicked
: <a class="el" href="classace__button_1_1AceButton.html#a21797e5e069da3f7bba42b40ab3a7305">ace_button::AceButton</a>
</li>
<li>kEventDoubleClicked
: <a class="el" href="classace__button_1_1AceButton.html#a0c63f30106e4688425ba37d8f7a9546b">ace_button::AceButton</a>
</li>
<li>kEventLongPressed
: <a class="el" href="classace__button_1_1AceButton.html#a769599d288f64dc0e55a69184596d804">ace_button::AceButton</a>
</li>
<li>kEventPressed
: <a class="el" href="classace__button_1_1AceButton.html#ae723d826fe219a8415764b9fed5d8976">ace_button::AceButton</a>
</li>
<li>kEventReleased
: <a class="el" href="classace__button_1_1AceButton.html#ada5bd7c31950e2acdb8a9464e795c13c">ace_button::AceButton</a>
</li>
<li>kEventRepeatPressed
: <a class="el" href="classace__button_1_1AceButton.html#a9c4195cb128da40677ea223eb81743c9">ace_button::AceButton</a>
</li>
<li>kFeatureClick
: <a class="el" href="classace__button_1_1ButtonConfig.html#ac662555100416c4843c6ee5156699c56">ace_button::ButtonConfig</a>
</li>
<li>kFeatureDoubleClick
: <a class="el" href="classace__button_1_1ButtonConfig.html#a638943c127dd60288a83e83260825d01">ace_button::ButtonConfig</a>
</li>
<li>kFeatureLongPress
: <a class="el" href="classace__button_1_1ButtonConfig.html#a4d175560047a4ca245186fb26fa413f2">ace_button::ButtonConfig</a>
</li>
<li>kFeatureRepeatPress
: <a class="el" href="classace__button_1_1ButtonConfig.html#ac9b941ca87f0eeb899ed503481439c92">ace_button::ButtonConfig</a>
</li>
<li>kFeatureSuppressAfterClick
: <a class="el" href="classace__button_1_1ButtonConfig.html#a57327066d135bcc99c4a68b55fca162e">ace_button::ButtonConfig</a>
</li>
<li>kFeatureSuppressAfterDoubleClick
: <a class="el" href="classace__button_1_1ButtonConfig.html#a7642e16b2cc8dd0136312054b1da8f9e">ace_button::ButtonConfig</a>
</li>
<li>kFeatureSuppressAfterLongPress
: <a class="el" href="classace__button_1_1ButtonConfig.html#a15b8e90b1ffe01009a1d7dd18b5b6aae">ace_button::ButtonConfig</a>
</li>
<li>kFeatureSuppressAfterRepeatPress
: <a class="el" href="classace__button_1_1ButtonConfig.html#a6b43b591ba53d360e787bf780af0abbc">ace_button::ButtonConfig</a>
</li>
<li>kFeatureSuppressAll
: <a class="el" href="classace__button_1_1ButtonConfig.html#abfd736234ae852f22894c7aceb4e534e">ace_button::ButtonConfig</a>
</li>
<li>kFeatureSuppressClickBeforeDoubleClick
: <a class="el" href="classace__button_1_1ButtonConfig.html#a80d621dbcf533c9bb91a111b8fec2c53">ace_button::ButtonConfig</a>
</li>
<li>kLongPressDelay
: <a class="el" href="classace__button_1_1ButtonConfig.html#a60bf588a2c067a561887eadf18cedccd">ace_button::ButtonConfig</a>
</li>
<li>kRepeatPressDelay
: <a class="el" href="classace__button_1_1ButtonConfig.html#a3d20bc5800532085fd046fc64b80ae9f">ace_button::ButtonConfig</a>
</li>
<li>kRepeatPressInterval
: <a class="el" href="classace__button_1_1ButtonConfig.html#a218c1aa09b45ea2fe6884e3af3a18310">ace_button::ButtonConfig</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,104 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: Graph Legend</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Graph Legend</div> </div>
</div><!--header-->
<div class="contents">
<p>This page explains how to interpret the graphs that are generated by doxygen.</p>
<p>Consider the following example: </p><div class="fragment"><div class="line">/*! Invisible class because of truncation */</div><div class="line">class Invisible { };</div><div class="line"></div><div class="line">/*! Truncated class, inheritance relation is hidden */</div><div class="line">class Truncated : public Invisible { };</div><div class="line"></div><div class="line">/* Class not documented with doxygen comments */</div><div class="line">class Undocumented { };</div><div class="line"></div><div class="line">/*! Class that is inherited using public inheritance */</div><div class="line">class PublicBase : public Truncated { };</div><div class="line"></div><div class="line">/*! A template class */</div><div class="line">template&lt;class T&gt; class Templ { };</div><div class="line"></div><div class="line">/*! Class that is inherited using protected inheritance */</div><div class="line">class ProtectedBase { };</div><div class="line"></div><div class="line">/*! Class that is inherited using private inheritance */</div><div class="line">class PrivateBase { };</div><div class="line"></div><div class="line">/*! Class that is used by the Inherited class */</div><div class="line">class Used { };</div><div class="line"></div><div class="line">/*! Super class that inherits a number of other classes */</div><div class="line">class Inherited : public PublicBase,</div><div class="line"> protected ProtectedBase,</div><div class="line"> private PrivateBase,</div><div class="line"> public Undocumented,</div><div class="line"> public Templ&lt;int&gt;</div><div class="line">{</div><div class="line"> private:</div><div class="line"> Used *m_usedClass;</div><div class="line">};</div></div><!-- fragment --><p> This will result in the following graph:</p>
<center><div class="image">
<img src="graph_legend.png"/>
</div>
</center><p>The boxes in the above graph have the following meaning: </p>
<ul>
<li>
A filled gray box represents the struct or class for which the graph is generated. </li>
<li>
A box with a black border denotes a documented struct or class. </li>
<li>
A box with a gray border denotes an undocumented struct or class. </li>
<li>
A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
</ul>
<p>The arrows have the following meaning: </p>
<ul>
<li>
A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
<li>
A dark green arrow is used for protected inheritance. </li>
<li>
A dark red arrow is used for private inheritance. </li>
<li>
A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible. </li>
<li>
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance. </li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1 @@
387ff8eb65306fa251338d3c9bd7bfff

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,85 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: Class Hierarchy</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class Hierarchy</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">
<p><a href="inherits.html">Go to the graphical class hierarchy</a></p>
This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classace__button_1_1AceButton.html" target="_self">ace_button::AceButton</a></td><td class="desc">An Adjustable Compact Event-driven (ACE) Button library that debounces and dispatches button events to a user-defined event handler </td></tr>
<tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classace__button_1_1ButtonConfig.html" target="_self">ace_button::ButtonConfig</a></td><td class="desc">Class that defines the timing parameters and event handler of an <a class="el" href="classace__button_1_1AceButton.html" title="An Adjustable Compact Event-driven (ACE) Button library that debounces and dispatches button events t...">AceButton</a> or a group of <a class="el" href="classace__button_1_1AceButton.html" title="An Adjustable Compact Event-driven (ACE) Button library that debounces and dispatches button events t...">AceButton</a> instances </td></tr>
<tr id="row_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classace__button_1_1AdjustableButtonConfig.html" target="_self">ace_button::AdjustableButtonConfig</a></td><td class="desc">A subclass of <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> which allows the user to override the varous timing parameters of <a class="el" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...">ButtonConfig</a> at runtime </td></tr>
<tr id="row_2_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classace__button_1_1TimingStats.html" target="_self">ace_button::TimingStats</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,76 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: AceButton Library</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">AceButton Library </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>This is the Doxygen documentation for the <a href="https://github.com/bxparks/AceButton">AceButton Library</a>. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,3 @@
<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
<area shape="rect" id="node1" href="$classace__button_1_1AceButton.html" title="An Adjustable Compact Event&#45;driven (ACE) Button library that debounces and dispatches button events t..." alt="" coords="5,5,160,32"/>
</map>

View File

@ -0,0 +1 @@
dad31da764b8cff706d719d7063f1b47

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,4 @@
<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
<area shape="rect" id="node1" href="$classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in..." alt="" coords="5,13,176,39"/>
<area shape="rect" id="node2" href="$classace__button_1_1AdjustableButtonConfig.html" title="A subclass of ButtonConfig which allows the user to override the varous timing parameters of ButtonCo..." alt="" coords="224,5,417,47"/>
</map>

View File

@ -0,0 +1 @@
09997e8367e05f6ea244b70b35066d89

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,3 @@
<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
<area shape="rect" id="node1" href="$classace__button_1_1TimingStats.html" title="ace_button::TimingStats" alt="" coords="5,5,169,32"/>
</map>

View File

@ -0,0 +1 @@
02a1a77f69fe7514878970f689bdc6a7

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,95 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: Class Hierarchy</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AceButton
&#160;<span id="projectnumber">1.3.3</span>
</div>
<div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class Hierarchy</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">
<p><a href="hierarchy.html">Go to the textual class hierarchy</a></p>
</div><table border="0" cellspacing="10" cellpadding="0">
<tr><td><img src="inherit_graph_0.png" border="0" alt="" usemap="#ace__button_1_1AceButton"/>
<map name="ace__button_1_1AceButton" id="ace__button_1_1AceButton">
<area shape="rect" id="node1" href="classace__button_1_1AceButton.html" title="An Adjustable Compact Event&#45;driven (ACE) Button library that debounces and dispatches button events t..." alt="" coords="5,5,160,32"/>
</map>
</td></tr>
<tr><td><img src="inherit_graph_1.png" border="0" alt="" usemap="#ace__button_1_1ButtonConfig"/>
<map name="ace__button_1_1ButtonConfig" id="ace__button_1_1ButtonConfig">
<area shape="rect" id="node1" href="classace__button_1_1ButtonConfig.html" title="Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in..." alt="" coords="5,13,176,39"/>
<area shape="rect" id="node2" href="classace__button_1_1AdjustableButtonConfig.html" title="A subclass of ButtonConfig which allows the user to override the varous timing parameters of ButtonCo..." alt="" coords="224,5,417,47"/>
</map>
</td></tr>
<tr><td><img src="inherit_graph_2.png" border="0" alt="" usemap="#ace__button_1_1TimingStats"/>
<map name="ace__button_1_1TimingStats" id="ace__button_1_1TimingStats">
<area shape="rect" id="node1" href="classace__button_1_1TimingStats.html" title="ace_button::TimingStats" alt="" coords="5,5,169,32"/>
</map>
</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

87
lib/AceButton/docs/html/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,26 @@
function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
function makeTree(data,relPath) {
var result='';
if ('children' in data) {
result+='<ul>';
for (var i in data.children) {
result+='<li><a href="'+relPath+data.children[i].url+'">'+
data.children[i].text+'</a>'+
makeTree(data.children[i],relPath)+'</li>';
}
result+='</ul>';
}
return result;
}
$('#main-nav').append(makeTree(menudata,relPath));
$('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
if (searchEnabled) {
if (serverSide) {
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><div class="left"><form id="FSearchBox" action="'+searchPage+'" method="get"><img id="MSearchSelect" src="'+relPath+'search/mag.png" alt=""/><input type="text" id="MSearchField" name="query" value="'+search+'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"></form></div><div class="right"></div></div></li>');
} else {
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><span class="left"><img id="MSearchSelect" src="'+relPath+'search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/><input type="text" id="MSearchField" value="'+search+'" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/></span><span class="right"><a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="'+relPath+'search/close.png" alt=""/></a></span></div></li>');
}
}
$('#main-menu').smartmenus();
}

View File

@ -0,0 +1,32 @@
var menudata={children:[
{text:"Main Page",url:"index.html"},
{text:"Classes",url:"annotated.html",children:[
{text:"Class List",url:"annotated.html"},
{text:"Class Index",url:"classes.html"},
{text:"Class Hierarchy",url:"inherits.html"},
{text:"Class Members",url:"functions.html",children:[
{text:"All",url:"functions.html",children:[
{text:"a",url:"functions.html#index_a"},
{text:"b",url:"functions.html#index_b"},
{text:"c",url:"functions.html#index_c"},
{text:"e",url:"functions.html#index_e"},
{text:"f",url:"functions.html#index_f"},
{text:"g",url:"functions.html#index_g"},
{text:"i",url:"functions.html#index_i"},
{text:"k",url:"functions.html#index_k"},
{text:"r",url:"functions.html#index_r"},
{text:"s",url:"functions.html#index_s"},
{text:"t",url:"functions.html#index_t"}]},
{text:"Functions",url:"functions_func.html",children:[
{text:"a",url:"functions_func.html#index_a"},
{text:"b",url:"functions_func.html#index_b"},
{text:"c",url:"functions_func.html#index_c"},
{text:"g",url:"functions_func.html#index_g"},
{text:"i",url:"functions_func.html#index_i"},
{text:"r",url:"functions_func.html#index_r"},
{text:"s",url:"functions_func.html#index_s"},
{text:"t",url:"functions_func.html#index_t"}]},
{text:"Variables",url:"functions_vars.html"},
{text:"Typedefs",url:"functions_type.html"}]}]},
{text:"Files",url:"files.html",children:[
{text:"File List",url:"files.html"}]}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@ -0,0 +1,6 @@
var searchData=
[
['acebutton',['AceButton',['../classace__button_1_1AceButton.html',1,'ace_button::AceButton'],['../classace__button_1_1AceButton.html#a3c480636223edc899a79c821c32c6982',1,'ace_button::AceButton::AceButton(uint8_t pin=0, uint8_t defaultReleasedState=HIGH, uint8_t id=0)'],['../classace__button_1_1AceButton.html#ab2ec2d3b98e2e2228f85271385e07521',1,'ace_button::AceButton::AceButton(ButtonConfig *buttonConfig)']]],
['adjustablebuttonconfig',['AdjustableButtonConfig',['../classace__button_1_1AdjustableButtonConfig.html',1,'ace_button']]],
['acebutton_20library',['AceButton Library',['../index.html',1,'']]]
];

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@ -0,0 +1,4 @@
var searchData=
[
['buttonconfig',['ButtonConfig',['../classace__button_1_1ButtonConfig.html',1,'ace_button::ButtonConfig'],['../classace__button_1_1ButtonConfig.html#a66924aac157a81cc54a9776fb975893a',1,'ace_button::ButtonConfig::ButtonConfig()']]]
];

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@ -0,0 +1,5 @@
var searchData=
[
['check',['check',['../classace__button_1_1AceButton.html#af710048a654fa5d5e45405661282a7b1',1,'ace_button::AceButton']]],
['clearfeature',['clearFeature',['../classace__button_1_1ButtonConfig.html#ac782903e4a60924db3d17c00accc7f3b',1,'ace_button::ButtonConfig']]]
];

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_3.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@ -0,0 +1,4 @@
var searchData=
[
['eventhandler',['EventHandler',['../classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e',1,'ace_button::ButtonConfig']]]
];

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_4.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@ -0,0 +1,4 @@
var searchData=
[
['featureflagtype',['FeatureFlagType',['../classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb',1,'ace_button::ButtonConfig']]]
];

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_5.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@ -0,0 +1,22 @@
var searchData=
[
['getbuttonconfig',['getButtonConfig',['../classace__button_1_1AceButton.html#a5e4ea4aca852a5e0b1d426bccb131cfb',1,'ace_button::AceButton']]],
['getclickdelay',['getClickDelay',['../classace__button_1_1ButtonConfig.html#a19db203ce87dc2cafb2cab6ba124387a',1,'ace_button::ButtonConfig']]],
['getclock',['getClock',['../classace__button_1_1ButtonConfig.html#a440271e22d5e7e161cdcb3b73f092111',1,'ace_button::ButtonConfig']]],
['getclockmicros',['getClockMicros',['../classace__button_1_1ButtonConfig.html#a8a74d1a1c082bfb0e4ddf55e67d3ac2d',1,'ace_button::ButtonConfig']]],
['getcount',['getCount',['../classace__button_1_1TimingStats.html#ad23641b3302acb7050317c8749febe3d',1,'ace_button::TimingStats']]],
['getcounter',['getCounter',['../classace__button_1_1TimingStats.html#a3eab5a6a7a43e1a565d91faf14b148b2',1,'ace_button::TimingStats']]],
['getdebouncedelay',['getDebounceDelay',['../classace__button_1_1ButtonConfig.html#ad7be58d0fe0b242f78f15319d201a565',1,'ace_button::ButtonConfig']]],
['getdefaultreleasedstate',['getDefaultReleasedState',['../classace__button_1_1AceButton.html#afa8013bb98f5fbd79654aebca613ba71',1,'ace_button::AceButton']]],
['getdoubleclickdelay',['getDoubleClickDelay',['../classace__button_1_1ButtonConfig.html#a5ba500367e03c36f39225a5858e110e6',1,'ace_button::ButtonConfig']]],
['geteventhandler',['getEventHandler',['../classace__button_1_1ButtonConfig.html#a8fc32804ba102f61ba97bcc5f4fe8448',1,'ace_button::ButtonConfig']]],
['getexpdecayavg',['getExpDecayAvg',['../classace__button_1_1TimingStats.html#a04c9dbea755eafeed3bb7872d7fb0d24',1,'ace_button::TimingStats']]],
['getid',['getId',['../classace__button_1_1AceButton.html#a4a693b836e3fed29d4e7203a5a97910b',1,'ace_button::AceButton']]],
['getlastbuttonstate',['getLastButtonState',['../classace__button_1_1AceButton.html#a3c49e9edf8cbb5e3800c5f4506d0beca',1,'ace_button::AceButton']]],
['getlongpressdelay',['getLongPressDelay',['../classace__button_1_1ButtonConfig.html#a46d4213a827a94bf82ba99a9c2e59531',1,'ace_button::ButtonConfig']]],
['getpin',['getPin',['../classace__button_1_1AceButton.html#ac6b12ca62c7c055325bfebd036579ed6',1,'ace_button::AceButton']]],
['getrepeatpressdelay',['getRepeatPressDelay',['../classace__button_1_1ButtonConfig.html#ad85c75d2a2dd200552a181fb154d5fd2',1,'ace_button::ButtonConfig']]],
['getrepeatpressinterval',['getRepeatPressInterval',['../classace__button_1_1ButtonConfig.html#aec4a97a1a1306b9ff12f1cdf44515c43',1,'ace_button::ButtonConfig']]],
['getsystembuttonconfig',['getSystemButtonConfig',['../classace__button_1_1ButtonConfig.html#ab780f081ef691b48deb5182d206a4b9d',1,'ace_button::ButtonConfig']]],
['gettimingstats',['getTimingStats',['../classace__button_1_1ButtonConfig.html#aff7101f2fe0f0c3bba67924b01e9d493',1,'ace_button::ButtonConfig']]]
];

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_6.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More