• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 Bestechnic (Shanghai) Co., Ltd. All rights reserved.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef __HAL_KEY_H__
16 #define __HAL_KEY_H__
17 
18 #include "hal_gpio.h"
19 #include "hal_gpadc.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 enum HAL_KEY_CODE_T {
26     HAL_KEY_CODE_NONE = 0,
27     HAL_KEY_CODE_PWR = (1 << 0),
28     HAL_KEY_CODE_FN1 = (1 << 1),
29     HAL_KEY_CODE_FN2 = (1 << 2),
30     HAL_KEY_CODE_FN3 = (1 << 3),
31     HAL_KEY_CODE_FN4 = (1 << 4),
32     HAL_KEY_CODE_FN5 = (1 << 5),
33     HAL_KEY_CODE_FN6 = (1 << 6),
34     HAL_KEY_CODE_FN7 = (1 << 7),
35     HAL_KEY_CODE_FN8 = (1 << 8),
36     HAL_KEY_CODE_FN9 = (1 << 9),
37     HAL_KEY_CODE_FN10 = (1 << 10),
38     HAL_KEY_CODE_FN11 = (1 << 11),
39     HAL_KEY_CODE_FN12 = (1 << 12),
40 	HAL_KEY_CODE_FN13 = (1 << 13),
41 	HAL_KEY_CODE_FN14 = (1 << 14),
42 	HAL_KEY_CODE_FN15 = (1 << 15),
43 };
44 
45 enum HAL_KEY_EVENT_T {
46     HAL_KEY_EVENT_NONE = 0,
47     HAL_KEY_EVENT_DOWN,
48     HAL_KEY_EVENT_FIRST_DOWN,
49     HAL_KEY_EVENT_CONTINUED_DOWN,
50     HAL_KEY_EVENT_UP,
51     HAL_KEY_EVENT_UP_AFTER_LONGPRESS,
52     HAL_KEY_EVENT_LONGPRESS,
53     HAL_KEY_EVENT_LONGLONGPRESS,
54     HAL_KEY_EVENT_CLICK,
55     HAL_KEY_EVENT_DOUBLECLICK,
56     HAL_KEY_EVENT_TRIPLECLICK,
57     HAL_KEY_EVENT_ULTRACLICK,
58     HAL_KEY_EVENT_RAMPAGECLICK,
59     HAL_KEY_EVENT_REPEAT,
60     HAL_KEY_EVENT_GROUPKEY_DOWN,
61     HAL_KEY_EVENT_GROUPKEY_REPEAT,
62     HAL_KEY_EVENT_INITDOWN,
63     HAL_KEY_EVENT_INITUP,
64     HAL_KEY_EVENT_INITLONGPRESS,
65     HAL_KEY_EVENT_INITLONGLONGPRESS,
66     HAL_KEY_EVENT_INITFINISHED,
67 
68     HAL_KEY_EVENT_NUM,
69 };
70 
71 #define KEY_EVENT_SET(a)                (1 << HAL_KEY_EVENT_ ## a)
72 #define KEY_EVENT_SET2(a, b)            (KEY_EVENT_SET(a) | KEY_EVENT_SET(b))
73 #define KEY_EVENT_SET3(a, b, c)         (KEY_EVENT_SET2(a, b) | KEY_EVENT_SET(c))
74 #define KEY_EVENT_SET4(a, b, c, d)      (KEY_EVENT_SET3(a, b, c) | KEY_EVENT_SET(d))
75 
76 enum HAL_KEY_GPIOKEY_VAL_T {
77     HAL_KEY_GPIOKEY_VAL_LOW = 0,
78     HAL_KEY_GPIOKEY_VAL_HIGH,
79 };
80 
81 struct HAL_KEY_GPIOKEY_CFG_T {
82     enum HAL_KEY_CODE_T key_code;
83     struct HAL_IOMUX_PIN_FUNCTION_MAP key_config;
84     enum HAL_KEY_GPIOKEY_VAL_T key_down;
85 };
86 
87 int hal_key_open(int checkPwrKey, int (* cb)(uint32_t, uint8_t));
88 
89 enum HAL_KEY_EVENT_T hal_key_read_status(enum HAL_KEY_CODE_T code);
90 
91 int hal_key_close(void);
92 
93 #ifdef __cplusplus
94     }
95 #endif
96 
97 #endif//__FMDEC_H__
98