Dev-Tools/HIB.h
Mathieu Maret 0159f516c7 Add external callback
And better members/methods protection
2016-11-13 23:41:12 +01:00

34 lines
965 B
C++

#pragma once
#include "Arduino.h"
extern "C" {
#include "osapi.h"
}
// Human Interface Button
class HIB {
private:
ETSTimer timer;
unsigned long previousMillis;
unsigned long longPressMsec;
unsigned long shortPressMsec;
void onInternalButtonPressed();
void onInternalButtonReleased();
void onInternalLongButtonPressed();
void invertState();
void (* onButtonPressed)(uint8_t pin);
void (* onButtonReleased)(uint8_t pin);
void (* onLongButtonPressed)(uint8_t pin);
friend void __timerCallback(void *data);
public:
uint8_t pin;
uint8_t initialState;
uint8_t state;
uint8_t debouncing;
HIB(uint8_t pin, uint8_t initialState,
void (* onButtonPressed)(uint8_t pin) = NULL,
void (* onButtonReleased)(uint8_t pin) = NULL,
void (* onLongButtonPressed)(uint8_t pin) = NULL,
unsigned long longPressMsec = 5000, unsigned long shortPressMsec = 50);
void IRQ_handler();
};