-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathButtonManager.h
55 lines (45 loc) · 2.04 KB
/
ButtonManager.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
Copyright (C) 2021 Roeland Kluit - v1.0 January 2021
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
The Software is provided to you by the Licensor under the License,
as defined, subject to the following condition.
Without limiting other conditions in the License, the grant of rights
under the License will not include, and the License does not grant to
you, the right to Sell the Software.
For purposes of the foregoing, "Sell" means practicing any or all of
the rights granted to you under the License to provide to third
parties, for a fee or other consideration (including without
limitation fees for hosting or consulting/ support services related
to the Software), a product or service whose value derives, entirely
or substantially, from the functionality of the Software.
Any license notice or attribution required by the License must also
include this Commons Clause License Condition notice.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ButtonManager_h
#define ButtonManager_h
#include "Arduino.h"
class ButtonManager
{
private:
void(*__SD_CALLBACK_BUTTONPRESS)(bool LongButtonPress) = NULL;
uint8_t buttonID = 0;
unsigned long previousMillis = 0;
void NotifyPress(bool LongButtonPress);
bool bLongPressHasBeenNotified = false;
public:
ButtonManager(uint8_t button, bool PullUp);
bool CheckIsButtonPressed();
bool defaultStateIsHigh = false; //default value (not pressed is high, pressed is low
void process();
void OnButtonPressEvent(void(*callback)(bool LongButtonPress)) { __SD_CALLBACK_BUTTONPRESS = callback; }
};
#endif