sw_keypad.h
2.2 KB
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#ifndef _SW_KEYPAD_H
#define _SW_KEYPAD_H
#include "kal_general_types.h"
#include "drv_features.h"
#include "keypad.h"
#include "keypad_hw.h"
#if defined(__TOPWELL_HW_EXTEND_NOT_ROW34__)
#define RowNum 3//5
#elif defined(__TOPWELL_HW_EXTEND_NOT_ROW4__)
#define RowNum 4//5
#else
#define RowNum 5
#endif
#define ColNum 5
#if defined(SW_KBD_COL_PUPD_1_2M)
#define SW_KBD_ROW_SCAN_TIME 160
#define SW_KBD_ROW_INTERVAL_TIME 160
#define SW_KBD_COL_SCAN_TIME 15
#define SW_KBD_COL_INTERVAL_TIME 15
#else
#define SW_KBD_ROW_SCAN_TIME 15
#define SW_KBD_ROW_INTERVAL_TIME 15
#define SW_KBD_COL_SCAN_TIME 15
#define SW_KBD_COL_INTERVAL_TIME 15
#endif
#if defined(__THREE_KEY_DETECTION_SWITCHABLE__)
#define Sw_kbd_polling_time 5
#elif defined(__TWO_KEY_DETECTION_SWITCHABLE__)
#define Sw_kbd_polling_time 5
#else
#define Sw_kbd_polling_time 10
#endif
typedef struct KeyStatus
{
kal_uint32 reg1;
kal_uint32 reg2;
kal_uint32 reg3;
} KEY_STATUS;
typedef void (*SW_KBD_TIMER_CB)(void* parameter) ;
void sw_kbd_init(void);
void sw_kbd_get_key_status_s(KEY_STATUS* key_status);
void sw_kbd_get_key_status_d(KEY_STATUS* key_status);
void sw_kbd_get_key_status_t(KEY_STATUS* key_status);
/*triple keypad*/
#if defined(DRV_KBD_TRIPLE_KEYPAD)
#define ROWS_DETECT_STAGE1 1
#define ROWS_DETECT_STAGE2 2
#define SW_KBD_GET_KEY_STATUS(a) sw_kbd_get_key_status_t((a))
/*double keypad*/
#elif defined(__COLUMN_EXTEND_KEYPAD__)
#define SW_KBD_GET_KEY_STATUS(a) sw_kbd_get_key_status_d((a))
/*single keypad*/
#else
#define SW_KBD_GET_KEY_STATUS(a) sw_kbd_get_key_status_s((a))
#endif
void sw_kbd_idle_stage(void);
void sw_kbd_paremeter_init(void);
const extern char gpio_keypad_row0_pin;
const extern char gpio_keypad_row1_pin;
const extern char gpio_keypad_row2_pin;
const extern char gpio_keypad_row3_pin;
const extern char gpio_keypad_row4_pin;
const extern char gpio_keypad_col0_pin;
const extern char gpio_keypad_col1_pin;
const extern char gpio_keypad_col2_pin;
const extern char gpio_keypad_col3_pin;
const extern char gpio_keypad_col4_pin;
extern const unsigned char KEYPAD_WAKEUP_EINT_NO;
#define SW_KBD_EINT_NO KEYPAD_WAKEUP_EINT_NO
#define KEYPAD_ENBALE_REG KP_EN
#endif