Raname libdeps to lib

This commit is contained in:
lewishe 2022-12-09 15:34:10 +08:00
commit ae981346e1
678 changed files with 496329 additions and 0 deletions

View file

@ -0,0 +1 @@
{"type": "library", "name": "AXP202X_Library", "version": "1.1.2", "spec": {"owner": "lewisxhe", "id": 6657, "name": "AXP202X_Library", "requirements": null, "url": null}}

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 lewis he
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,21 @@
AXP202X_Library
=====================================
- axp192 partial support, the function is not fully tested, please refer to the manual
- The `setPowerOutPut` function has forced DCDC3 to be turned on and cannot be controlled because T-Watch uses DCDC3 as the esp32 to power the main chip. If it is turned off, the hardware cannot be programmed.
TTGO invests time and resources to provide this open source code, please support TTGO and open source hardware by purchasing products from TTGO!
Written by Lewis He for TTGO. MIT license, all text above must be included in any redistribution
## Chip resource table
| CHIP | AXP173 | AXP192 | AXP202 |
| -------- | ---------------- | ---------------- | ---------------- |
| DC1 | 0v7~3v5 /1200mA | 0v7~3v5 /1200mA | X |
| DC2 | 0v7~2v275/1600mA | 0v7~2v275/1600mA | 0v7~2v275/1600mA |
| DC3 | X | 0v7~3v5 /700mA | 0v7~3v5 /1200mA |
| LDO1 | 3v3 /30mA | 3v3 /30mA | 3v3 /30mA |
| LDO2 | 1v8~3v3 /200mA | 1v8~3v3 /200mA | 1v8~3v3 /200mA |
| LDO3 | 1v8~3v3 /200mA | 1v8~3v3 /200mA | 0v7~3v3 /200mA |
| LDO4 | 0v7~3v5 /500mA | X | 1v8~3v3 /200mA |
| LDO5/IO0 | X | 1v8~3v3 /50mA | 1v8~3v3 /50mA |

View file

@ -0,0 +1,66 @@
/*
MIT License
Copyright (c) 2019 lewis he
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 <Wire.h>
#include <axp20x.h>
AXP20X_Class axp;
const uint8_t i2c_sda = 21;
const uint8_t i2c_scl = 22;
void setup()
{
Serial.begin(115200);
Wire.begin(i2c_sda, i2c_scl);
int ret = axp.begin(Wire);
if (ret == AXP_FAIL) {
Serial.println("AXP Power begin failed");
while (1);
}
//! AXP202 GPIO has no internal pull-up or pull-down.
//! For stability, external pull-up or pull-down resistors are required.
ret = axp.setGPIOMode(AXP_GPIO_0, AXP_IO_INPUT_MODE);
Serial.printf("AXP_GPIO_0 %d\n", ret);
ret = axp.setGPIOMode(AXP_GPIO_1, AXP_IO_INPUT_MODE);
Serial.printf("AXP_GPIO_1 %d\n", ret);
ret = axp.setGPIOMode(AXP_GPIO_2, AXP_IO_INPUT_MODE);
Serial.printf("AXP_GPIO_2 %d\n", ret);
ret = axp.setGPIOMode(AXP_GPIO_3, AXP_IO_INPUT_MODE);
Serial.printf("AXP_GPIO_3 %d\n", ret);
}
void loop()
{
Serial.printf("GPIO: [0]:%d [1]:%d [2]:%d [3]:%d\n",
axp.gpioRead(AXP_GPIO_0),
axp.gpioRead(AXP_GPIO_1),
axp.gpioRead(AXP_GPIO_2),
axp.gpioRead(AXP_GPIO_3)
);
delay(1000);
}

View file

@ -0,0 +1,63 @@
/*
MIT License
Copyright (c) 2019 lewis he
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 <Wire.h>
#include <axp20x.h>
AXP20X_Class axp;
const uint8_t i2c_sda = 21;
const uint8_t i2c_scl = 22;
void setup()
{
Serial.begin(115200);
Wire.begin(i2c_sda, i2c_scl);
int ret = axp.begin(Wire);
if (ret == AXP_FAIL) {
Serial.println("AXP Power begin failed");
while (1);
}
axp.setGPIOMode(AXP_GPIO_0, AXP_IO_OUTPUT_HIGH_MODE);
axp.setGPIOMode(AXP_GPIO_1, AXP_IO_OUTPUT_HIGH_MODE);
//! GPIO2, GPIO3 is only allowed to be configured to output low
axp.gpioWrite(AXP_GPIO_2, LOW);
axp.gpioWrite(AXP_GPIO_3, LOW);
}
void loop()
{
//! GPIO0, GPIO1 allows output high and low
axp.gpioWrite(AXP_GPIO_0, HIGH);
axp.gpioWrite(AXP_GPIO_1, HIGH);
delay(1000);
axp.gpioWrite(AXP_GPIO_0, LOW);
axp.gpioWrite(AXP_GPIO_1, LOW);
delay(1000);
}

View file

@ -0,0 +1,87 @@
/*
MIT License
Copyright (c) 2019 lewis he
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 <Wire.h>
#include <axp20x.h>
AXP20X_Class axp;
bool axpIrq = 0;
uint8_t second = 0;
uint32_t timer = 0;
const uint8_t i2c_sda = 21;
const uint8_t i2c_scl = 22;
const uint8_t axp_irq_pin = 35;
void setup()
{
Serial.begin(115200);
Wire.begin(i2c_sda, i2c_scl);
int ret = axp.begin(Wire);
if (ret == AXP_FAIL) {
Serial.println("AXP Power begin failed");
while (1);
}
//! enable timer irq and pek key press irq channel
axp.enableIRQ(AXP202_TIMER_TIMEOUT_IRQ | AXP202_PEK_SHORTPRESS_IRQ, true);
//! attachInterrupt to gpio 35
pinMode(axp_irq_pin, INPUT);
attachInterrupt(axp_irq_pin, [] {
axpIrq = 1;
}, FALLING);
axp.clearIRQ();
axp.setTimer(1);
}
void loop()
{
if (millis() - timer > 1000) {
second++;
Serial.printf("%u second\n", second);
timer = millis();
}
if (axpIrq) {
axpIrq = 0;
axp.readIRQ();
if (axp.isPEKShortPressIRQ()) {
Serial.printf("AXP202 PEK key Click\n");
}
if (axp.isTimerTimeoutIRQ()) {
Serial.printf("AXP202 timer timeout\n");
axp.clearTimerStatus();
while (1) {
delay(100);
}
}
axp.clearIRQ();
}
}

View file

@ -0,0 +1,44 @@
#include <Wire.h>
#include <axp20x.h>
AXP20X_Class axp;
const uint8_t i2c_sda = 21;
const uint8_t i2c_scl = 22;
void setup()
{
Serial.begin(115200);
delay(3000);
Wire.begin(i2c_sda, i2c_scl);
int ret = axp.begin(Wire);
if (ret == AXP_FAIL) {
Serial.println("AXP Power begin failed");
while (1);
}
int cur = axp.getChargeControlCur();
Serial.printf("Current charge control current = %d mA \n", cur);
//axp202 allows maximum charging current of 1800mA, minimum 300mA
axp.setChargeControlCur(500);
Serial.printf("Set charge control current 500 mA \n");
//When the chip is axp192 / 173, the allowed values are 0 ~ 15,
//corresponding to the axp1xx_charge_current_t enumeration
// axp.setChargeControlCur(AXP1XX_CHARGE_CUR_550MA);
// Serial.printf("Set charge control current 550 mA \n");
cur = axp.getChargeControlCur();
Serial.printf("Current charge control current = %d mA \n", cur);
}
void loop()
{
}

View file

@ -0,0 +1,115 @@
#include <Wire.h>
#include <axp20x.h>
AXP20X_Class axp;
const uint8_t i2c_sda = 21;
const uint8_t i2c_scl = 22;
const uint8_t irq_pin = 35;
bool pmu_irq = false;
void sleepPMU()
{
int ret;
// PEK or GPIO edge wake-up function enable setting in Sleep mode
do {
// In order to ensure that it is set correctly,
// the loop waits for it to return the correct return value
Serial.println("Set PMU in sleep mode");
ret = axp.setSleep();
delay(500);
} while (ret != AXP_PASS) ;
// Turn off all power channels, only use PEK or AXP GPIO to wake up
// After setting AXP202/AXP192 to sleep,
// it will start to record the status of the power channel that was turned off after setting,
// it will restore the previously set state after PEK button or GPIO wake up
// Turn off all AXP192 power channels
ret = axp.setPowerOutPut(AXP192_LDO2, AXP202_OFF);
Serial.printf("Set Power AXP192_LDO2:%s\n", ret == AXP_PASS ? "OK" : "FAIL");
ret = axp.setPowerOutPut(AXP192_LDO3, AXP202_OFF);
Serial.printf("Set Power AXP192_LDO3:%s\n", ret == AXP_PASS ? "OK" : "FAIL");
ret = axp.setPowerOutPut(AXP192_DCDC1, AXP202_OFF);
Serial.printf("Set Power AXP192_DCDC1:%s\n", ret == AXP_PASS ? "OK" : "FAIL");
ret = axp.setPowerOutPut(AXP192_DCDC2, AXP202_OFF);
Serial.printf("Set Power AXP192_DCDC2:%s\n", ret == AXP_PASS ? "OK" : "FAIL");
ret = axp.setPowerOutPut(AXP192_EXTEN, AXP202_OFF);
Serial.printf("Set Power AXP192_EXTEN:%s\n", ret == AXP_PASS ? "OK" : "FAIL");
Serial.flush();
delay(1000);
// Tbeam v1.0 uses DC3 as the MCU power channel, turning it off as the last
ret = axp.setPowerOutPut(AXP192_DCDC3, AXP202_OFF);
Serial.printf("Set Power AXP192_DCDC3:%s\n", ret == AXP_PASS ? "OK" : "FAIL");
// Turn off all AXP202 power channels
// axp.setPowerOutPut(AXP202_LDO2, AXP202_OFF);
// axp.setPowerOutPut(AXP202_LDO3, AXP202_OFF);
// axp.setPowerOutPut(AXP202_LDO4, AXP202_OFF);
// axp.setPowerOutPut(AXP202_DCDC2, AXP202_OFF);
// axp.setPowerOutPut(AXP202_DCDC3, AXP202_OFF);
// axp.setPowerOutPut(AXP202_EXTEN, AXP202_OFF);
// If you set the power supply to sleep mode and you turn off the power supply of the MCU,
// you will not be able to use the wake-up mode provided by the MCU.
// If you do not turn off the power of the MCU, you can continue to use it
}
void setup()
{
Serial.begin(115200);
delay(3000);
Wire.begin(i2c_sda, i2c_scl);
// Test with AXP192 ,TBeam v1.0 board
int ret = axp.begin(Wire, AXP192_SLAVE_ADDRESS);
if (ret == AXP_FAIL) {
Serial.println("AXP Power begin failed");
while (1);
}
// Register the PMU interrupt pin, it will be triggered on the falling edge
pinMode(irq_pin, INPUT);
attachInterrupt(irq_pin, [] {
pmu_irq = true;
}, FALLING);
// Before using IRQ, remember to clear the IRQ status register
axp.clearIRQ();
// Turn on the key to press the interrupt function
axp.enableIRQ(AXP202_PEK_SHORTPRESS_IRQ, true);
Serial.println("Wait for the PEK button to be pressed");
}
void loop()
{
if ( pmu_irq) {
pmu_irq = false;
axp.readIRQ();
// When the PEK button is pressed briefly, the PMU is set to sleep
if (axp.isPEKShortPressIRQ()) {
// Clear all interrupt status before going to sleep
axp.clearIRQ();
// Set PMU to sleep
sleepPMU();
}
}
}

View file

@ -0,0 +1,139 @@
/*
MIT License
Copyright (c) 2019 lewis he
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 <Wire.h>
#include <axp20x.h>
AXP20X_Class axp;
bool axpIrq = 0;
const uint8_t i2c_sda = 21;
const uint8_t i2c_scl = 22;
const uint8_t axp_irq_pin = 35;
uint8_t readBytes(uint8_t addr, uint8_t reg, uint8_t *data, uint8_t len)
{
uint8_t ret = 0;
Wire.beginTransmission(addr);
Wire.write(reg);
Wire.endTransmission(false);
uint8_t cnt = Wire.requestFrom(addr, (uint8_t)len, (uint8_t)1);
if (!cnt) {
ret = 0xFF;
}
uint16_t index = 0;
while (Wire.available()) {
if (index > len)return 0xFF;
data[index++] = Wire.read();
}
return ret;
}
uint8_t writeBytes(uint8_t addr, uint8_t reg, uint8_t *data, uint8_t len)
{
uint8_t ret = 0;
Wire.beginTransmission(addr);
Wire.write(reg);
for (uint16_t i = 0; i < len; i++) {
Wire.write(data[i]);
}
ret = Wire.endTransmission();
return ret ? ret : 0xFF;
}
void setup()
{
Serial.begin(115200);
Wire.begin(i2c_sda, i2c_scl);
//! Use the Wire port
// int ret = axp.begin(Wire);
//! Use custom I2C to return processing
int ret = axp.begin(readBytes, writeBytes);
if (ret == AXP_FAIL) {
Serial.println("AXP Power begin failed");
while (1);
}
//! enable all irq channel
axp.enableIRQ(0xFFFFFFFF, true);
//! attachInterrupt to gpio 35
pinMode(axp_irq_pin, INPUT_PULLUP);
attachInterrupt(axp_irq_pin, [] {
axpIrq = 1;
}, FALLING);
axp.clearIRQ();
axp.setPowerOutPut(AXP202_DCDC3, AXP202_ON);
axp.setPowerOutPut(AXP202_EXTEN, AXP202_ON);
axp.setPowerOutPut(AXP202_LDO2, AXP202_ON);
axp.setPowerOutPut(AXP202_LDO4, AXP202_ON);
axp.setPowerOutPut(AXP202_DCDC2, AXP202_ON);
axp.setLDO4Voltage(AXP202_LDO4_1800MV);
axp.setLDO3Voltage(3500);
axp.setPowerOutPut(AXP202_LDO3, AXP202_ON);
Serial.print("DC2:");
Serial.print(axp.isDCDC2Enable() ? String(axp.getDCDC2Voltage()) + " mv" : "DISABLE");
Serial.print(" ");
Serial.print("DC3:");
Serial.print(axp.isDCDC3Enable() ? String(axp.getDCDC3Voltage()) + " mv" : "DISABLE");
Serial.print(" ");
Serial.print("LDO2:");
Serial.print(axp.isLDO2Enable() ? String(axp.getLDO2Voltage()) + " mv" : "DISABLE");
Serial.print(" ");
Serial.print("LDO3:");
Serial.print(axp.isLDO3Enable() ? String(axp.getLDO3Voltage()) + " mv" : "DISABLE");
Serial.print(" ");
Serial.print("LDO4:");
Serial.print(axp.isLDO4Enable() ? "ENABLE" : "DISABLE");
Serial.print(" ");
Serial.print("Exten:");
Serial.print(axp.isExtenEnable() ? "ENABLE" : "DISABLE");
Serial.print("\r\n");
}
void loop()
{
if (axpIrq) {
axpIrq = 0;
axp.readIRQ();
if (axp.isPEKShortPressIRQ()) {
Serial.printf("AXP202 PEK key Click\n");
}
axp.clearIRQ();
}
}

View file

@ -0,0 +1,176 @@
#######################################
# Syntax Coloring Map For X-Power AXP20X Library By lewis He
# github:https://github.com/lewisxhe
#######################################
#######################################
# Datatypes (KEYWORD1)
#######################################
AXP20X_Class KEYWORD1
#######################################
# Methods and Functions (KEYWORD2)
#######################################
begin KEYWORD2
isChargeing KEYWORD2
isLDO2Enable KEYWORD2
isLDO3Enable KEYWORD2
isLDO4Enable KEYWORD2
isDCDC3Enable KEYWORD2
isDCDC2Enable KEYWORD2
isChargeingEnable KEYWORD2
isAcinOverVoltageIRQ KEYWORD2
isAcinPlugInIRQ KEYWORD2
isAcinRemoveIRQ KEYWORD2
isVbusOverVoltageIRQ KEYWORD2
isVbusPlugInIRQ KEYWORD2
isVbusRemoveIRQ KEYWORD2
isVbusLowVHOLDIRQ KEYWORD2
isBattPlugInIRQ KEYWORD2
isBattRemoveIRQ KEYWORD2
isBattEnterActivateIRQ KEYWORD2
isBattExitActivateIRQ KEYWORD2
isChargingIRQ KEYWORD2
isChargingDoneIRQ KEYWORD2
isBattTempLowIRQ KEYWORD2
isBattTempHighIRQ KEYWORD2
isPEKShortPressIRQ KEYWORD2
isPEKLongtPressIRQ KEYWORD2
getAcinVoltage KEYWORD2
getAcinCurrent KEYWORD2
getVbusVoltage KEYWORD2
getVbusCurrent KEYWORD2
getTemp KEYWORD2
getTSTemp KEYWORD2
getGPIO0Voltage KEYWORD2
getGPIO1Voltage KEYWORD2
getBattInpower KEYWORD2
getBattVoltage KEYWORD2
getBattChargeCurrent KEYWORD2
getBattDischargeCurrent KEYWORD2
getSysIPSOUTVoltage KEYWORD2
getBattChargeCoulomb KEYWORD2
getBattDischargeCoulomb KEYWORD2
getSettingChargeCurrent KEYWORD2
setChargingTargetVoltage KEYWORD2
enableChargeing KEYWORD2
adc1Enable KEYWORD2
adc2Enable KEYWORD2
setStartupTime KEYWORD2
setlongPressTime KEYWORD2
setShutdownTime KEYWORD2
setTimeOutShutdown KEYWORD2
enableIRQ KEYWORD2
readIRQ KEYWORD2
clearIRQ KEYWORD2
setDCDC2Voltage KEYWORD2
setDCDC3Voltage KEYWORD2
setLDO2Voltage KEYWORD2
setLDO3Voltage KEYWORD2
setLDO4Voltage KEYWORD2
getBattPercentage KEYWORD2
setTScurrent KEYWORD2
setTSfunction KEYWORD2
setTSmode KEYWORD2
#######################################
# Instances (KEYWORD2)
#######################################
#######################################
# Constants (LITERAL1)
#######################################
AXP202_LDO4_1250MV LITERAL1
AXP202_LDO4_1300MV LITERAL1
AXP202_LDO4_1400MV LITERAL1
AXP202_LDO4_1500MV LITERAL1
AXP202_LDO4_1600MV LITERAL1
AXP202_LDO4_1700MV LITERAL1
AXP202_LDO4_1800MV LITERAL1
AXP202_LDO4_1900MV LITERAL1
AXP202_LDO4_2000MV LITERAL1
AXP202_LDO4_2500MV LITERAL1
AXP202_LDO4_2700MV LITERAL1
AXP202_LDO4_2800MV LITERAL1
AXP202_LDO4_3000MV LITERAL1
AXP202_LDO4_3100MV LITERAL1
AXP202_LDO4_3200MV LITERAL1
AXP202_LDO4_3300MV LITERAL1
AXP202_VBUS_VHOLD_LOW_IRQ LITERAL1
AXP202_VBUS_REMOVED_IRQ LITERAL1
AXP202_VBUS_CONNECT_IRQ LITERAL1
AXP202_VBUS_OVER_VOL_IRQ LITERAL1
AXP202_ACIN_REMOVED_IRQ LITERAL1
AXP202_ACIN_CONNECT_IRQ LITERAL1
AXP202_ACIN_OVER_VOL_IRQ LITERAL1
AXP202_BATT_LOW_TEMP_IRQ LITERAL1
AXP202_BATT_OVER_TEMP_IRQ LITERAL1
AXP202_CHARGING_FINISHED_IRQ LITERAL1
AXP202_CHARGING_IRQ LITERAL1
AXP202_BATT_EXIT_ACTIVATE_IRQ LITERAL1
AXP202_BATT_ACTIVATE_IRQ LITERAL1
AXP202_BATT_REMOVED_IRQ LITERAL1
AXP202_BATT_CONNECT_IRQ LITERAL1
AXP202_PEK_LONGPRESS_IRQ LITERAL1
AXP202_PEL_SHORTPRESS_IRQ LITERAL1
AXP202_LDO3_LOW_VOL_IRQ LITERAL1
AXP202_DC3_LOW_VOL_IRQ LITERAL1
AXP202_DC2_LOW_VOL_IRQ LITERAL1
AXP202_CHARGE_LOW_CUR_IRQ LITERAL1
AXP202_CHIP_TEMP_HIGH_IRQ LITERAL1
AXP202_APS_LOW_VOL_LEVEL2_IRQ LITERAL1
APX202_APS_LOW_VOL_LEVEL1_IRQ LITERAL1
AXP202_VBUS_SESSION_END_IRQ LITERAL1
AXP202_VBUS_SESSION_AB_IRQ LITERAL1
AXP202_VBUS_INVALID_IRQ LITERAL1
AXP202_VBUS_VAILD_IRQ LITERAL1
AXP202_NOE_OFF_IRQ LITERAL1
AXP202_NOE_ON_IRQ LITERAL1
AXP202_TEMP_MONITORING_ADC2 LITERAL1
AXP202_GPIO1_FUNC_ADC2 LITERAL1
AXP202_GPIO0_FUNC_ADC2 LITERAL1
AXP202_BATT_VOL_ADC1 LITERAL1
AXP202_BATT_CUR_ADC1 LITERAL1
AXP202_ACIN_VOL_ADC1 LITERAL1
AXP202_ACIN_CUR_ADC1 LITERAL1
AXP202_VBUS_VOL_ADC1 LITERAL1
AXP202_VBUS_CUR_ADC1 LITERAL1
AXP202_APS_VOL_ADC1 LITERAL1
AXP202_TS_PIN_ADC1 LITERAL1
AXP202_TARGET_VOL_4_1V LITERAL1
AXP202_TARGET_VOL_4_15V LITERAL1
AXP202_TARGET_VOL_4_2V LITERAL1
AXP202_TARGET_VOL_4_36V LITERAL1
AXP202_STARTUP_TIME_128MS LITERAL1
AXP202_STARTUP_TIME_3S LITERAL1
AXP202_STARTUP_TIME_1S LITERAL1
AXP202_STARTUP_TIME_2S LITERAL1
AXP202_STARTUP_TIME LITERAL1
AXP202_LONGPRESS_TIME LITERAL1
AXP202_SHUTDOWN_EXCEEDS_TIME LITERAL1
AXP202_PWROK_SIGNAL_DELAY LITERAL1
AXP202_SHUTDOWN_TIME LITERAL1
AXP_TS_PIN_CURRENT_20UA LITERAL1
AXP_TS_PIN_CURRENT_40UA LITERAL1
AXP_TS_PIN_CURRENT_60UA LITERAL1
AXP_TS_PIN_CURRENT_80UA LITERAL1
AXP_TS_PIN_FUNCTION_BATT LITERAL1
AXP_TS_PIN_FUNCTION_ADC LITERAL1
AXP_TS_PIN_MODE_DISABLE LITERAL1
AXP_TS_PIN_MODE_CHARGING LITERAL1
AXP_TS_PIN_MODE_SAMPLING LITERAL1
AXP_TS_PIN_MODE_ENABLE LITERAL1
AXP202_EXTEN LITERAL1
AXP202_DCDC3 LITERAL1
AXP202_LDO2 LITERAL1
AXP202_LDO4 LITERAL1
AXP202_DCDC2 LITERAL1
AXP202_LDO3 LITERAL1

View file

@ -0,0 +1,9 @@
name=AXP202X_Library
version=1.1.2
author=Lewis He
maintainer=Lewis He <lewishe@outlook.com>
sentence=Arduino library for X-Power AXP202 chip
paragraph=Arduino library for X-Power AXP202 chip. Tested with ESP32
category=Communication
url=https://github.com/lewisxhe/AXP202X_Library
architectures=esp32

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,830 @@
/////////////////////////////////////////////////////////////////
/*
MIT License
Copyright (c) 2019 lewis he
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.
axp20x.h - Arduino library for X-Power AXP202 chip.
Created by Lewis he on April 1, 2019.
github:https://github.com/lewisxhe/AXP202X_Libraries
*/
/////////////////////////////////////////////////////////////////
#pragma once
#include <Arduino.h>
#include <Wire.h>
// #define AXP_DEBUG_PORT Serial
#ifdef AXP_DEBUG_PORT
#define AXP_DEBUG(fmt, ...) AXP_DEBUG_PORT.printf_P((PGM_P)PSTR(fmt), ##__VA_ARGS__)
#else
#define AXP_DEBUG(...)
#endif
#ifndef RISING
#define RISING 0x01
#endif
#ifndef FALLING
#define FALLING 0x02
#endif
#ifdef _BV
#undef _BV
#endif
#define _BV(b) (1ULL << (b))
//! Error Code
#define AXP_PASS (0)
#define AXP_FAIL (-1)
#define AXP_INVALID (-2)
#define AXP_NOT_INIT (-3)
#define AXP_NOT_SUPPORT (-4)
#define AXP_ARG_INVALID (-5)
//! Chip Address
#define AXP202_SLAVE_ADDRESS (0x35)
#define AXP192_SLAVE_ADDRESS (0x34)
#define AXP173_SLAVE_ADDRESS (0x34)
//! Chip ID
#define AXP202_CHIP_ID 0x41
#define AXP192_CHIP_ID 0x03
#define AXP173_CHIP_ID 0xAD //!Axp173 does not have a chip ID, given a custom ID
//! Logic states
#define AXP202_ON 1
#define AXP202_OFF 0
//! REG MAP
#define AXP202_STATUS (0x00)
#define AXP202_MODE_CHGSTATUS (0x01)
#define AXP202_OTG_STATUS (0x02)
#define AXP202_IC_TYPE (0x03)
#define AXP202_DATA_BUFFER1 (0x04)
#define AXP202_DATA_BUFFER2 (0x05)
#define AXP202_DATA_BUFFER3 (0x06)
#define AXP202_DATA_BUFFER4 (0x07)
#define AXP202_DATA_BUFFER5 (0x08)
#define AXP202_DATA_BUFFER6 (0x09)
#define AXP202_DATA_BUFFER7 (0x0A)
#define AXP202_DATA_BUFFER8 (0x0B)
#define AXP202_DATA_BUFFER9 (0x0C)
#define AXP202_DATA_BUFFERA (0x0D)
#define AXP202_DATA_BUFFERB (0x0E)
#define AXP202_DATA_BUFFERC (0x0F)
#define AXP202_LDO234_DC23_CTL (0x12)
#define AXP202_DC2OUT_VOL (0x23)
#define AXP202_LDO3_DC2_DVM (0x25)
#define AXP202_DC3OUT_VOL (0x27)
#define AXP202_LDO24OUT_VOL (0x28)
#define AXP202_LDO3OUT_VOL (0x29)
#define AXP202_IPS_SET (0x30)
#define AXP202_VOFF_SET (0x31)
#define AXP202_OFF_CTL (0x32)
#define AXP202_CHARGE1 (0x33)
#define AXP202_CHARGE2 (0x34)
#define AXP202_BACKUP_CHG (0x35)
#define AXP202_POK_SET (0x36)
#define AXP202_DCDC_FREQSET (0x37)
#define AXP202_VLTF_CHGSET (0x38)
#define AXP202_VHTF_CHGSET (0x39)
#define AXP202_APS_WARNING1 (0x3A)
#define AXP202_APS_WARNING2 (0x3B)
#define AXP202_TLTF_DISCHGSET (0x3C)
#define AXP202_THTF_DISCHGSET (0x3D)
#define AXP202_DCDC_MODESET (0x80)
#define AXP202_ADC_EN1 (0x82)
#define AXP202_ADC_EN2 (0x83)
#define AXP202_ADC_SPEED (0x84)
#define AXP202_ADC_INPUTRANGE (0x85)
#define AXP202_ADC_IRQ_RETFSET (0x86)
#define AXP202_ADC_IRQ_FETFSET (0x87)
#define AXP202_TIMER_CTL (0x8A)
#define AXP202_VBUS_DET_SRP (0x8B)
#define AXP202_HOTOVER_CTL (0x8F)
#define AXP202_GPIO0_CTL (0x90)
#define AXP202_GPIO0_VOL (0x91)
#define AXP202_GPIO1_CTL (0x92)
#define AXP202_GPIO2_CTL (0x93)
#define AXP202_GPIO012_SIGNAL (0x94)
#define AXP202_GPIO3_CTL (0x95)
#define AXP202_INTEN1 (0x40)
#define AXP202_INTEN2 (0x41)
#define AXP202_INTEN3 (0x42)
#define AXP202_INTEN4 (0x43)
#define AXP202_INTEN5 (0x44)
#define AXP202_INTSTS1 (0x48)
#define AXP202_INTSTS2 (0x49)
#define AXP202_INTSTS3 (0x4A)
#define AXP202_INTSTS4 (0x4B)
#define AXP202_INTSTS5 (0x4C)
//Irq control register
#define AXP192_INTEN1 (0x40)
#define AXP192_INTEN2 (0x41)
#define AXP192_INTEN3 (0x42)
#define AXP192_INTEN4 (0x43)
#define AXP192_INTEN5 (0x4A)
//Irq status register
#define AXP192_INTSTS1 (0x44)
#define AXP192_INTSTS2 (0x45)
#define AXP192_INTSTS3 (0x46)
#define AXP192_INTSTS4 (0x47)
#define AXP192_INTSTS5 (0x4D)
#define AXP192_DC1_VLOTAGE (0x26)
#define AXP192_LDO23OUT_VOL (0x28)
#define AXP192_GPIO0_CTL (0x90)
#define AXP192_GPIO0_VOL (0x91)
#define AXP192_GPIO1_CTL (0X92)
#define AXP192_GPIO2_CTL (0x93)
#define AXP192_GPIO012_SIGNAL (0x94)
#define AXP192_GPIO34_CTL (0x95)
/* axp 192/202 adc data register */
#define AXP202_BAT_AVERVOL_H8 (0x78)
#define AXP202_BAT_AVERVOL_L4 (0x79)
#define AXP202_BAT_AVERCHGCUR_H8 (0x7A)
#define AXP202_BAT_AVERCHGCUR_L4 (0x7B)
#define AXP202_BAT_AVERCHGCUR_L5 (0x7B)
#define AXP202_ACIN_VOL_H8 (0x56)
#define AXP202_ACIN_VOL_L4 (0x57)
#define AXP202_ACIN_CUR_H8 (0x58)
#define AXP202_ACIN_CUR_L4 (0x59)
#define AXP202_VBUS_VOL_H8 (0x5A)
#define AXP202_VBUS_VOL_L4 (0x5B)
#define AXP202_VBUS_CUR_H8 (0x5C)
#define AXP202_VBUS_CUR_L4 (0x5D)
#define AXP202_INTERNAL_TEMP_H8 (0x5E)
#define AXP202_INTERNAL_TEMP_L4 (0x5F)
#define AXP202_TS_IN_H8 (0x62)
#define AXP202_TS_IN_L4 (0x63)
#define AXP202_GPIO0_VOL_ADC_H8 (0x64)
#define AXP202_GPIO0_VOL_ADC_L4 (0x65)
#define AXP202_GPIO1_VOL_ADC_H8 (0x66)
#define AXP202_GPIO1_VOL_ADC_L4 (0x67)
#define AXP202_BAT_AVERDISCHGCUR_H8 (0x7C)
#define AXP202_BAT_AVERDISCHGCUR_L5 (0x7D)
#define AXP202_APS_AVERVOL_H8 (0x7E)
#define AXP202_APS_AVERVOL_L4 (0x7F)
#define AXP202_INT_BAT_CHGCUR_H8 (0xA0)
#define AXP202_INT_BAT_CHGCUR_L4 (0xA1)
#define AXP202_EXT_BAT_CHGCUR_H8 (0xA2)
#define AXP202_EXT_BAT_CHGCUR_L4 (0xA3)
#define AXP202_INT_BAT_DISCHGCUR_H8 (0xA4)
#define AXP202_INT_BAT_DISCHGCUR_L4 (0xA5)
#define AXP202_EXT_BAT_DISCHGCUR_H8 (0xA6)
#define AXP202_EXT_BAT_DISCHGCUR_L4 (0xA7)
#define AXP202_BAT_CHGCOULOMB3 (0xB0)
#define AXP202_BAT_CHGCOULOMB2 (0xB1)
#define AXP202_BAT_CHGCOULOMB1 (0xB2)
#define AXP202_BAT_CHGCOULOMB0 (0xB3)
#define AXP202_BAT_DISCHGCOULOMB3 (0xB4)
#define AXP202_BAT_DISCHGCOULOMB2 (0xB5)
#define AXP202_BAT_DISCHGCOULOMB1 (0xB6)
#define AXP202_BAT_DISCHGCOULOMB0 (0xB7)
#define AXP202_COULOMB_CTL (0xB8)
#define AXP202_BAT_POWERH8 (0x70)
#define AXP202_BAT_POWERM8 (0x71)
#define AXP202_BAT_POWERL8 (0x72)
#define AXP202_VREF_TEM_CTRL (0xF3)
#define AXP202_BATT_PERCENTAGE (0xB9)
/* bit definitions for AXP events, irq event */
/* AXP202 */
#define AXP202_IRQ_USBLO (1)
#define AXP202_IRQ_USBRE (2)
#define AXP202_IRQ_USBIN (3)
#define AXP202_IRQ_USBOV (4)
#define AXP202_IRQ_ACRE (5)
#define AXP202_IRQ_ACIN (6)
#define AXP202_IRQ_ACOV (7)
#define AXP202_IRQ_TEMLO (8)
#define AXP202_IRQ_TEMOV (9)
#define AXP202_IRQ_CHAOV (10)
#define AXP202_IRQ_CHAST (11)
#define AXP202_IRQ_BATATOU (12)
#define AXP202_IRQ_BATATIN (13)
#define AXP202_IRQ_BATRE (14)
#define AXP202_IRQ_BATIN (15)
#define AXP202_IRQ_POKLO (16)
#define AXP202_IRQ_POKSH (17)
#define AXP202_IRQ_LDO3LO (18)
#define AXP202_IRQ_DCDC3LO (19)
#define AXP202_IRQ_DCDC2LO (20)
#define AXP202_IRQ_CHACURLO (22)
#define AXP202_IRQ_ICTEMOV (23)
#define AXP202_IRQ_EXTLOWARN2 (24)
#define AXP202_IRQ_EXTLOWARN1 (25)
#define AXP202_IRQ_SESSION_END (26)
#define AXP202_IRQ_SESS_AB_VALID (27)
#define AXP202_IRQ_VBUS_UN_VALID (28)
#define AXP202_IRQ_VBUS_VALID (29)
#define AXP202_IRQ_PDOWN_BY_NOE (30)
#define AXP202_IRQ_PUP_BY_NOE (31)
#define AXP202_IRQ_GPIO0TG (32)
#define AXP202_IRQ_GPIO1TG (33)
#define AXP202_IRQ_GPIO2TG (34)
#define AXP202_IRQ_GPIO3TG (35)
#define AXP202_IRQ_PEKFE (37)
#define AXP202_IRQ_PEKRE (38)
#define AXP202_IRQ_TIMER (39)
//Signal Capture
#define AXP202_BATT_VOLTAGE_STEP (1.1F)
#define AXP202_BATT_DISCHARGE_CUR_STEP (0.5F)
#define AXP202_BATT_CHARGE_CUR_STEP (0.5F)
#define AXP202_ACIN_VOLTAGE_STEP (1.7F)
#define AXP202_ACIN_CUR_STEP (0.625F)
#define AXP202_VBUS_VOLTAGE_STEP (1.7F)
#define AXP202_VBUS_CUR_STEP (0.375F)
#define AXP202_INTERNAL_TEMP_STEP (0.1F)
#define AXP202_APS_VOLTAGE_STEP (1.4F)
#define AXP202_TS_PIN_OUT_STEP (0.8F)
#define AXP202_GPIO0_STEP (0.5F)
#define AXP202_GPIO1_STEP (0.5F)
// AXP192 only
#define AXP202_GPIO2_STEP (0.5F)
#define AXP202_GPIO3_STEP (0.5F)
// AXP173
#define AXP173_EXTEN_DC2_CTL (0x10)
#define AXP173_CTL_DC2_BIT (0)
#define AXP173_CTL_EXTEN_BIT (2)
#define AXP173_DC1_VLOTAGE (0x26)
#define AXP173_LDO4_VLOTAGE (0x27)
#define FORCED_OPEN_DCDC3(x) (x |= (AXP202_ON << AXP202_DCDC3))
#define BIT_MASK(x) (1 << x)
#define IS_OPEN(reg, channel) (bool)(reg & BIT_MASK(channel))
enum {
AXP202_EXTEN = 0,
AXP202_DCDC3 = 1,
AXP202_LDO2 = 2,
AXP202_LDO4 = 3,
AXP202_DCDC2 = 4,
AXP202_LDO3 = 6,
AXP202_OUTPUT_MAX,
};
enum {
AXP192_DCDC1 = 0,
AXP192_DCDC3 = 1,
AXP192_LDO2 = 2,
AXP192_LDO3 = 3,
AXP192_DCDC2 = 4,
AXP192_EXTEN = 6,
AXP192_OUTPUT_MAX,
};
enum {
AXP173_DCDC1 = 0,
AXP173_LDO4 = 1,
AXP173_LDO2 = 2,
AXP173_LDO3 = 3,
AXP173_DCDC2 = 4,
AXP173_EXTEN = 6,
AXP173_OUTPUT_MAX,
};
typedef enum {
AXP202_STARTUP_TIME_128MS,
AXP202_STARTUP_TIME_3S,
AXP202_STARTUP_TIME_1S,
AXP202_STARTUP_TIME_2S,
} axp202_startup_time_t;
typedef enum {
AXP192_STARTUP_TIME_128MS,
AXP192_STARTUP_TIME_512MS,
AXP192_STARTUP_TIME_1S,
AXP192_STARTUP_TIME_2S,
} axp192_startup_time_t;
typedef enum {
AXP_LONGPRESS_TIME_1S,
AXP_LONGPRESS_TIME_1S5,
AXP_LONGPRESS_TIME_2S,
AXP_LONGPRESS_TIME_2S5,
} axp_loonPress_time_t;
typedef enum {
AXP_POWER_OFF_TIME_4S,
AXP_POWER_OFF_TIME_65,
AXP_POWER_OFF_TIME_8S,
AXP_POWER_OFF_TIME_16S,
} axp_poweroff_time_t;
//REG 33H: Charging control 1 Charging target-voltage setting
typedef enum {
AXP202_TARGET_VOL_4_1V,
AXP202_TARGET_VOL_4_15V,
AXP202_TARGET_VOL_4_2V,
AXP202_TARGET_VOL_4_36V
} axp_chargeing_vol_t;
//REG 82H: ADC Enable 1 register Parameter
typedef enum {
AXP202_BATT_VOL_ADC1 = 1 << 7,
AXP202_BATT_CUR_ADC1 = 1 << 6,
AXP202_ACIN_VOL_ADC1 = 1 << 5,
AXP202_ACIN_CUR_ADC1 = 1 << 4,
AXP202_VBUS_VOL_ADC1 = 1 << 3,
AXP202_VBUS_CUR_ADC1 = 1 << 2,
AXP202_APS_VOL_ADC1 = 1 << 1,
AXP202_TS_PIN_ADC1 = 1 << 0
} axp_adc1_func_t;
// REG 83H: ADC Enable 2 register Parameter
typedef enum {
AXP202_TEMP_MONITORING_ADC2 = 1 << 7,
AXP202_GPIO1_FUNC_ADC2 = 1 << 3,
AXP202_GPIO0_FUNC_ADC2 = 1 << 2
} axp_adc2_func_t;
typedef enum {
AXP202_LDO3_MODE_LDO,
AXP202_LDO3_MODE_DCIN
} axp202_ldo3_mode_t;
typedef enum {
//! IRQ1 REG 40H
AXP202_VBUS_VHOLD_LOW_IRQ = _BV(1), //VBUS is available, but lower than V HOLD, IRQ enable
AXP202_VBUS_REMOVED_IRQ = _BV(2), //VBUS removed, IRQ enable
AXP202_VBUS_CONNECT_IRQ = _BV(3), //VBUS connected, IRQ enable
AXP202_VBUS_OVER_VOL_IRQ = _BV(4), //VBUS over-voltage, IRQ enable
AXP202_ACIN_REMOVED_IRQ = _BV(5), //ACIN removed, IRQ enable
AXP202_ACIN_CONNECT_IRQ = _BV(6), //ACIN connected, IRQ enable
AXP202_ACIN_OVER_VOL_IRQ = _BV(7), //ACIN over-voltage, IRQ enable
//! IRQ2 REG 41H
AXP202_BATT_LOW_TEMP_IRQ = _BV(8), //Battery low-temperature, IRQ enable
AXP202_BATT_OVER_TEMP_IRQ = _BV(9), //Battery over-temperature, IRQ enable
AXP202_CHARGING_FINISHED_IRQ = _BV(10), //Charge finished, IRQ enable
AXP202_CHARGING_IRQ = _BV(11), //Be charging, IRQ enable
AXP202_BATT_EXIT_ACTIVATE_IRQ = _BV(12), //Exit battery activate mode, IRQ enable
AXP202_BATT_ACTIVATE_IRQ = _BV(13), //Battery activate mode, IRQ enable
AXP202_BATT_REMOVED_IRQ = _BV(14), //Battery removed, IRQ enable
AXP202_BATT_CONNECT_IRQ = _BV(15), //Battery connected, IRQ enable
//! IRQ3 REG 42H
AXP202_PEK_LONGPRESS_IRQ = _BV(16), //PEK long press, IRQ enable
AXP202_PEK_SHORTPRESS_IRQ = _BV(17), //PEK short press, IRQ enable
AXP202_LDO3_LOW_VOL_IRQ = _BV(18), //LDO3output voltage is lower than the set value, IRQ enable
AXP202_DC3_LOW_VOL_IRQ = _BV(19), //DC-DC3output voltage is lower than the set value, IRQ enable
AXP202_DC2_LOW_VOL_IRQ = _BV(20), //DC-DC2 output voltage is lower than the set value, IRQ enable
//**Reserved and unchangeable BIT 5
AXP202_CHARGE_LOW_CUR_IRQ = _BV(22), //Charge current is lower than the set current, IRQ enable
AXP202_CHIP_TEMP_HIGH_IRQ = _BV(23), //AXP202 internal over-temperature, IRQ enable
//! IRQ4 REG 43H
AXP202_APS_LOW_VOL_LEVEL2_IRQ = _BV(24), //APS low-voltage, IRQ enableLEVEL2
APX202_APS_LOW_VOL_LEVEL1_IRQ = _BV(25), //APS low-voltage, IRQ enableLEVEL1
AXP202_VBUS_SESSION_END_IRQ = _BV(26), //VBUS Session End IRQ enable
AXP202_VBUS_SESSION_AB_IRQ = _BV(27), //VBUS Session A/B IRQ enable
AXP202_VBUS_INVALID_IRQ = _BV(28), //VBUS invalid, IRQ enable
AXP202_VBUS_VAILD_IRQ = _BV(29), //VBUS valid, IRQ enable
AXP202_NOE_OFF_IRQ = _BV(30), //N_OE shutdown, IRQ enable
AXP202_NOE_ON_IRQ = _BV(31), //N_OE startup, IRQ enable
//! IRQ5 REG 44H
AXP202_GPIO0_EDGE_TRIGGER_IRQ = _BV(32), //GPIO0 input edge trigger, IRQ enable
AXP202_GPIO1_EDGE_TRIGGER_IRQ = _BV(33), //GPIO1input edge trigger or ADC input, IRQ enable
AXP202_GPIO2_EDGE_TRIGGER_IRQ = _BV(34), //GPIO2input edge trigger, IRQ enable
AXP202_GPIO3_EDGE_TRIGGER_IRQ = _BV(35), //GPIO3 input edge trigger, IRQ enable
//**Reserved and unchangeable BIT 4
AXP202_PEK_FALLING_EDGE_IRQ = _BV(37), //PEK press falling edge, IRQ enable
AXP202_PEK_RISING_EDGE_IRQ = _BV(38), //PEK press rising edge, IRQ enable
AXP202_TIMER_TIMEOUT_IRQ = _BV(39), //Timer timeout, IRQ enable
AXP202_ALL_IRQ = (0xFFFFFFFFFFULL)
} axp_irq_t;
typedef enum {
AXP202_LDO4_1250MV,
AXP202_LDO4_1300MV,
AXP202_LDO4_1400MV,
AXP202_LDO4_1500MV,
AXP202_LDO4_1600MV,
AXP202_LDO4_1700MV,
AXP202_LDO4_1800MV,
AXP202_LDO4_1900MV,
AXP202_LDO4_2000MV,
AXP202_LDO4_2500MV,
AXP202_LDO4_2700MV,
AXP202_LDO4_2800MV,
AXP202_LDO4_3000MV,
AXP202_LDO4_3100MV,
AXP202_LDO4_3200MV,
AXP202_LDO4_3300MV,
AXP202_LDO4_MAX,
} axp_ldo4_table_t;
typedef enum {
AXP202_LDO5_1800MV,
AXP202_LDO5_2500MV,
AXP202_LDO5_2800MV,
AXP202_LDO5_3000MV,
AXP202_LDO5_3100MV,
AXP202_LDO5_3300MV,
AXP202_LDO5_3400MV,
AXP202_LDO5_3500MV,
} axp_ldo5_table_t;
typedef enum {
AXP20X_LED_OFF,
AXP20X_LED_BLINK_1HZ,
AXP20X_LED_BLINK_4HZ,
AXP20X_LED_LOW_LEVEL,
} axp_chgled_mode_t;
typedef enum {
AXP_ADC_SAMPLING_RATE_25HZ = 0,
AXP_ADC_SAMPLING_RATE_50HZ = 1,
AXP_ADC_SAMPLING_RATE_100HZ = 2,
AXP_ADC_SAMPLING_RATE_200HZ = 3,
} axp_adc_sampling_rate_t;
typedef enum {
AXP_TS_PIN_CURRENT_20UA = 0,
AXP_TS_PIN_CURRENT_40UA = 1,
AXP_TS_PIN_CURRENT_60UA = 2,
AXP_TS_PIN_CURRENT_80UA = 3,
} axp_ts_pin_current_t;
typedef enum {
AXP_TS_PIN_FUNCTION_BATT = 0,
AXP_TS_PIN_FUNCTION_ADC = 1,
} axp_ts_pin_function_t;
typedef enum {
AXP_TS_PIN_MODE_DISABLE = 0,
AXP_TS_PIN_MODE_CHARGING = 1,
AXP_TS_PIN_MODE_SAMPLING = 2,
AXP_TS_PIN_MODE_ENABLE = 3,
} axp_ts_pin_mode_t;
//! Only AXP192 and AXP202 have gpio function
typedef enum {
AXP_GPIO_0,
AXP_GPIO_1,
AXP_GPIO_2,
AXP_GPIO_3,
AXP_GPIO_4,
} axp_gpio_t;
typedef enum {
AXP_IO_OUTPUT_LOW_MODE,
AXP_IO_OUTPUT_HIGH_MODE,
AXP_IO_INPUT_MODE,
AXP_IO_LDO_MODE,
AXP_IO_ADC_MODE,
AXP_IO_FLOATING_MODE,
AXP_IO_OPEN_DRAIN_OUTPUT_MODE,
AXP_IO_PWM_OUTPUT_MODE,
AXP_IO_EXTERN_CHARGING_CTRL_MODE,
} axp_gpio_mode_t;
typedef enum {
AXP_IRQ_NONE,
AXP_IRQ_RISING,
AXP_IRQ_FALLING,
AXP_IRQ_DOUBLE_EDGE,
} axp_gpio_irq_t;
typedef enum {
AXP192_GPIO_1V8,
AXP192_GPIO_1V9,
AXP192_GPIO_2V0,
AXP192_GPIO_2V1,
AXP192_GPIO_2V2,
AXP192_GPIO_2V3,
AXP192_GPIO_2V4,
AXP192_GPIO_2V5,
AXP192_GPIO_2V6,
AXP192_GPIO_2V7,
AXP192_GPIO_2V8,
AXP192_GPIO_2V9,
AXP192_GPIO_3V0,
AXP192_GPIO_3V1,
AXP192_GPIO_3V2,
AXP192_GPIO_3V3,
} axp192_gpio_voltage_t;
typedef enum {
AXP1XX_CHARGE_CUR_100MA,
AXP1XX_CHARGE_CUR_190MA,
AXP1XX_CHARGE_CUR_280MA,
AXP1XX_CHARGE_CUR_360MA,
AXP1XX_CHARGE_CUR_450MA,
AXP1XX_CHARGE_CUR_550MA,
AXP1XX_CHARGE_CUR_630MA,
AXP1XX_CHARGE_CUR_700MA,
AXP1XX_CHARGE_CUR_780MA,
AXP1XX_CHARGE_CUR_880MA,
AXP1XX_CHARGE_CUR_960MA,
AXP1XX_CHARGE_CUR_1000MA,
AXP1XX_CHARGE_CUR_1080MA,
AXP1XX_CHARGE_CUR_1160MA,
AXP1XX_CHARGE_CUR_1240MA,
AXP1XX_CHARGE_CUR_1320MA,
} axp1xx_charge_current_t;
typedef uint8_t (*axp_com_fptr_t)(uint8_t dev_addr, uint8_t reg_addr, uint8_t *data, uint8_t len);
class AXP20X_Class
{
public:
int begin(TwoWire &port = Wire, uint8_t addr = AXP202_SLAVE_ADDRESS, bool isAxp173 = false);
int begin(axp_com_fptr_t read_cb, axp_com_fptr_t write_cb, uint8_t addr = AXP202_SLAVE_ADDRESS, bool isAxp173 = false);
// Power Output Control
int setPowerOutPut(uint8_t ch, bool en);
bool isBatteryConnect();
bool isChargeing();
bool isLDO2Enable();
bool isLDO3Enable();
bool isLDO4Enable();
bool isDCDC3Enable();
bool isDCDC2Enable();
bool isChargeingEnable();
bool isVBUSPlug();
bool isExtenEnable();
//Only axp192 chip
bool isDCDC1Enable();
//IRQ Status
bool isAcinOverVoltageIRQ();
bool isAcinPlugInIRQ();
bool isAcinRemoveIRQ();
bool isVbusOverVoltageIRQ();
bool isVbusPlugInIRQ();
bool isVbusRemoveIRQ();
bool isVbusLowVHOLDIRQ();
bool isBattPlugInIRQ();
bool isBattRemoveIRQ();
bool isBattEnterActivateIRQ();
bool isBattExitActivateIRQ();
bool isChargingIRQ();
bool isChargingDoneIRQ();
bool isBattTempLowIRQ();
bool isBattTempHighIRQ();
bool isPEKShortPressIRQ();
bool isPEKLongtPressIRQ();
bool isTimerTimeoutIRQ();
//! Group4 ADC data
float getAcinVoltage();
float getAcinCurrent();
float getVbusVoltage();
float getVbusCurrent();
float getTemp();
float getTSTemp();
float getGPIO0Voltage();
float getGPIO1Voltage();
float getBattInpower();
float getBattVoltage();
float getBattChargeCurrent();
float getBattDischargeCurrent();
float getSysIPSOUTVoltage();
uint32_t getBattChargeCoulomb();
uint32_t getBattDischargeCoulomb();
float getSettingChargeCurrent();
int setChargingTargetVoltage(axp_chargeing_vol_t param);
int enableChargeing(bool en);
int adc1Enable(uint16_t params, bool en);
int adc2Enable(uint16_t params, bool en);
int setTScurrent(axp_ts_pin_current_t current);
int setTSfunction(axp_ts_pin_function_t func);
int setTSmode(axp_ts_pin_mode_t mode);
int setTimer(uint8_t minutes);
int offTimer();
int clearTimerStatus();
/**
* param: axp202_startup_time_t or axp192_startup_time_t
*/
int setStartupTime(uint8_t param);
/**
* param: axp_loonPress_time_t
*/
int setlongPressTime(uint8_t param);
/**
* @param param: axp_poweroff_time_t
*/
int setShutdownTime(uint8_t param);
int setTimeOutShutdown(bool en);
int shutdown();
/**
* params: axp_irq_t
*/
int enableIRQ(uint64_t params, bool en);
int readIRQ();
void clearIRQ();
int setDCDC1Voltage(uint16_t mv); //! Only AXP192 support and AXP173
// return mv
uint16_t getDCDC1Voltage(); //! Only AXP192 support and AXP173
// -----------------
/*
!! Chip resource table
| CHIP | AXP173 | AXP192 | AXP202 |
| -------- | ---------------- | ---------------- | ---------------- |
| DC1 | 0v7~3v5 /1200mA | 0v7~3v5 /1200mA | X |
| DC2 | 0v7~2v275/1600mA | 0v7~2v275/1600mA | 0v7~2v275/1600mA |
| DC3 | X | 0v7~3v5 /700mA | 0v7~3v5 /1200mA |
| LDO1 | 3v3 /30mA | 3v3 /30mA | 3v3 /30mA |
| LDO2 | 1v8~3v3 /200mA | 1v8~3v3 /200mA | 1v8~3v3 /200mA |
| LDO3 | 1v8~3v3 /200mA | 1v8~3v3 /200mA | 0v7~3v3 /200mA |
| LDO4 | 0v7~3v5 /500mA | X | 1v8~3v3 /200mA |
| LDO5/IO0 | X | 1v8~3v3 /50mA | 1v8~3v3 /50mA |
*/
int setDCDC2Voltage(uint16_t mv);
uint16_t getDCDC2Voltage();
int setDCDC3Voltage(uint16_t mv);
uint16_t getDCDC3Voltage();
int setLDO2Voltage(uint16_t mv);
uint16_t getLDO2Voltage();
int setLDO3Voltage(uint16_t mv);
uint16_t getLDO3Voltage();
int setLDO4Voltage(axp_ldo4_table_t param); //! Only axp202 support
int setLDO4Voltage(uint16_t mv); //! Only axp173 support
// return mv
uint16_t getLDO4Voltage(); //! Only axp173/axp202 support
/**
* @param mode: axp_chgled_mode_t
*/
int setChgLEDMode(axp_chgled_mode_t mode);
/**
* @param mode: axp202_ldo3_mode_t
*/
int setLDO3Mode(uint8_t mode); //! Only AXP202 support
int getBattPercentage();
int debugCharging();
int debugStatus();
int limitingOff();
int setAdcSamplingRate(axp_adc_sampling_rate_t rate);
uint8_t getAdcSamplingRate();
float getCoulombData();
uint8_t getCoulombRegister();
int setCoulombRegister(uint8_t val);
int EnableCoulombcounter(void);
int DisableCoulombcounter(void);
int StopCoulombcounter(void);
int ClearCoulombcounter(void);
int setGPIOMode(axp_gpio_t gpio, axp_gpio_mode_t mode);
int setGPIOIrq(axp_gpio_t gpio, axp_gpio_irq_t irq);
int setLDO5Voltage(axp_ldo5_table_t vol);
int gpioWrite(axp_gpio_t gpio, uint8_t vol);
int gpioRead(axp_gpio_t gpio);
// When the chip is axp192 / 173, the allowed values are 0 ~ 15, corresponding to the axp1xx_charge_current_t enumeration
// When the chip is axp202 allows maximum charging current of 1800mA, minimum 300mA
int getChargeControlCur();
int setChargeControlCur(uint16_t mA);
int setSleep();
private:
uint16_t _getRegistH8L5(uint8_t regh8, uint8_t regl5)
{
uint8_t hv, lv;
_readByte(regh8, 1, &hv);
_readByte(regl5, 1, &lv);
return (hv << 5) | (lv & 0x1F);
}
uint16_t _getRegistResult(uint8_t regh8, uint8_t regl4)
{
uint8_t hv, lv;
_readByte(regh8, 1, &hv);
_readByte(regl4, 1, &lv);
return (hv << 4) | (lv & 0x0F);
}
int _readByte(uint8_t reg, uint8_t nbytes, uint8_t *data)
{
if (_read_cb != nullptr) {
return _read_cb(_address, reg, data, nbytes);
}
if (nbytes == 0 || !data)
return -1;
_i2cPort->beginTransmission(_address);
_i2cPort->write(reg);
_i2cPort->endTransmission();
_i2cPort->requestFrom(_address, nbytes);
uint8_t index = 0;
while (_i2cPort->available())
data[index++] = _i2cPort->read();
return 0;
}
int _writeByte(uint8_t reg, uint8_t nbytes, uint8_t *data)
{
if (_write_cb != nullptr) {
return _write_cb(_address, reg, data, nbytes);
}
if (nbytes == 0 || !data)
return -1;
_i2cPort->beginTransmission(_address);
_i2cPort->write(reg);
for (uint8_t i = 0; i < nbytes; i++) {
_i2cPort->write(data[i]);
}
_i2cPort->endTransmission();
return 0;
}
int _setGpioInterrupt(uint8_t *val, int mode, bool en);
int _axp_probe();
int _axp_irq_mask(axp_gpio_irq_t irq);
int _axp192_gpio_set(axp_gpio_t gpio, axp_gpio_mode_t mode);
int _axp192_gpio_0_select( axp_gpio_mode_t mode);
int _axp192_gpio_1_select( axp_gpio_mode_t mode);
int _axp192_gpio_3_select( axp_gpio_mode_t mode);
int _axp192_gpio_4_select( axp_gpio_mode_t mode);
int _axp202_gpio_set(axp_gpio_t gpio, axp_gpio_mode_t mode);
int _axp202_gpio_0_select( axp_gpio_mode_t mode);
int _axp202_gpio_1_select( axp_gpio_mode_t mode);
int _axp202_gpio_2_select( axp_gpio_mode_t mode);
int _axp202_gpio_3_select( axp_gpio_mode_t mode);
int _axp202_gpio_irq_set(axp_gpio_t gpio, axp_gpio_irq_t irq);
int _axp202_gpio_write(axp_gpio_t gpio, uint8_t val);
int _axp202_gpio_read(axp_gpio_t gpio);
static const uint8_t startupParams[], longPressParams[], shutdownParams[], targetVolParams[];
static uint8_t _outputReg;
uint8_t _address, _irq[5], _chip_id, _gpio[4];
bool _init = false;
axp_com_fptr_t _read_cb = nullptr;
axp_com_fptr_t _write_cb = nullptr;
TwoWire *_i2cPort;
bool _isAxp173;
};

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>

View file

@ -0,0 +1,7 @@
var searchData=
[
['init',['init',['../classace__button_1_1AceButton.html#a18c47304c694c6f084a343a7c83bef34',1,'ace_button::AceButton::init()'],['../classace__button_1_1ButtonConfig.html#a86f8f6b62825258e477e0a41846e0223',1,'ace_button::ButtonConfig::init()']]],
['isfeature',['isFeature',['../classace__button_1_1ButtonConfig.html#aae51c7a2986eafd400784cdbe6bb1815',1,'ace_button::ButtonConfig']]],
['ispressedraw',['isPressedRaw',['../classace__button_1_1AceButton.html#af80a2bd19d929bff5dcce54a3db6fb0a',1,'ace_button::AceButton']]],
['isreleased',['isReleased',['../classace__button_1_1AceButton.html#aa3cbb3fb16076cfe9255e0f70cc6aa72',1,'ace_button::AceButton']]]
];

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