/
serial.pde
53 lines (43 loc) · 1.24 KB
/
serial.pde
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
/* serial.pde
* ~~~~~~~~~~
* Please do not remove the following notices.
* License: GPLv3. http://geekscape.org/static/arduino_license.html
* ----------------------------------------------------------------------------
*
* Description
* ~~~~~~~~~~~
* Provides a serial communications input handler that translates specific
* received characters into navigation events.
*
* To Do
* ~~~~~
* - None, yet.
*/
struct keyEventType {
byte key;
void (*eventHandler)(void);
};
const struct keyEventType keyEventMap[] = {
'y', buttonEventSelect,
'n', buttonEventCancel,
'h', buttonEventLeft,
'j', buttonEventDown,
'k', buttonEventUp,
'l', buttonEventRight
};
const byte KEY_EVENT_COUNT = sizeof(keyEventMap) / sizeof(keyEventType);
byte serialInitialized = false;
void serialInitialize(void) {
Serial.begin(DEFAULT_BAUD_RATE);
serialInitialized = true;
}
void serialInputHandler(void) {
if (! serialInitialized) serialInitialize();
if (Serial.available() > 0) {
byte key = Serial.read();
for (byte index = 0; index < KEY_EVENT_COUNT; index ++) {
if (keyEventMap[index].key == key) (* keyEventMap[index].eventHandler)();
}
}
}
/* ------------------------------------------------------------------------- */