summaryrefslogtreecommitdiffstats
path: root/src/target/firmware/include/keypad.h
blob: 9e9acfe9e967934a6753a8bc5790a15ca278d388 (plain)
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
#ifndef _KEYPAD_H
#define _KEYPAD_H

enum key_codes {
	KEY_0	= 0,
	KEY_1,
	KEY_2,
	KEY_3,
	KEY_4,
	KEY_5,
	KEY_6,
	KEY_7,
	KEY_8,
	KEY_9,
	KEY_STAR,	//*
	KEY_HASH,	//#
	KEY_MENU,	//center of directional keys
	KEY_LEFT_SB,	//softbutton
	KEY_RIGHT_SB,	//softbutton
	KEY_UP,
	KEY_DOWN,
	KEY_LEFT,
	KEY_RIGHT,
	KEY_OK,		//green off-hook
	KEY_POWER,	//red on-hook
	KEY_MINUS,
	KEY_PLUS,
	KEY_INV = 0xFF
};

#define BUTTON_CNT	23

enum key_states {
	PRESSED,
	RELEASED,
};

void keypad_init(const uint8_t *keymap, uint8_t interrupts);

void keypad_poll();

typedef void (*key_handler_t)(enum key_codes code, enum key_states state);

void keypad_set_handler(key_handler_t handler);

#endif /* KEYPAD_H */