19#ifndef SRC_SUPLA_CONTROL_SIMPLE_BUTTON_H_
20#define SRC_SUPLA_CONTROL_SIMPLE_BUTTON_H_
25#include "../element.h"
27#include "../local_action.h"
32enum StateResults { PRESSED, RELEASED, TO_PRESSED, TO_RELEASED };
37 ButtonState(
Supla::Io::Base *io,
int pin,
bool pullUp,
bool invertLogic);
38 ButtonState(
int pin,
bool pullUp,
bool invertLogic);
39 enum StateResults update();
40 enum StateResults getLastState()
const;
41 void init(
int buttonNumber);
43 void setSwNoiseFilterDelay(
unsigned int newDelayMs);
44 void setDebounceDelay(
unsigned int newDelayMs);
50 int valueOnPress()
const;
54 uint16_t debounceDelayMs = 50;
55 uint16_t swNoiseFilterDelayMs = 20;
56 uint32_t debounceTimestampMs = 0;
57 uint32_t filterTimestampMs = 0;
58 int8_t newStatusCandidate = 0;
59 int8_t prevState = -1;
62class SimpleButton :
public Element,
public LocalAction {
68 bool invertLogic =
false);
69 explicit SimpleButton(
int pin,
bool pullUp =
false,
bool invertLogic =
false);
73 void setSwNoiseFilterDelay(
unsigned int newDelayMs);
74 void setDebounceDelay(
unsigned int newDelayMs);
76 enum StateResults getLastState()
const;
83 virtual int8_t getButtonNumber()
const;