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