-
Notifications
You must be signed in to change notification settings - Fork 0
/
keypad_service.h
61 lines (48 loc) · 1.74 KB
/
keypad_service.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
56
57
58
59
60
61
#include <ArduinoSTL.h>
#include <Keypad.h>
#include "constants.h"
#ifndef KEYPAD_SERVICE_H
#define KEYPAD_SERVICE_H
using namespace std;
const byte numRows = 4; //number of rows on the keypad
const byte numCols = 4; //number of columns on the keypad
class KeypadService {
public:
static int EnterKey;
static int EscapeKey;
static int ArrowUpKey;
static int ArrowDownKey;
static char EnterKeyChar;
static char EscapeKeyChar;
static KeypadService & getInstance();
static void keypadInterrupt();
int waitForSelection();
int getKeyPressed();
void listenForEscape();
void waitForActivity(unsigned long milliseconds);
int getKeyCode(char keyPressed);
bool waitForConfirmation();
ConfirmationResponse waitForConfirmation(unsigned long timeout);
bool isEscapeKeyPressed();
void resetEscapeKey();
void queryNumericInput(char * input, int length);
private:
bool waitForKey = false;
bool escKeyPressed = false;
static byte rowPins[numRows];
static byte colPins[numRows];
static char keymap[numRows][numCols];
KeypadService() :
keypad(Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols))
{}
bool validateDigit(char key);
// C++ 03
// ========
// Don't forget to declare these two. You want to make sure they
// are unacceptable otherwise you may accidentally get copies of
// your singleton appearing.
// DisplayService(DisplayService const&); // Don't Implement
void operator = (KeypadService const&); // Don't implement
Keypad keypad;
};
#endif