1 /* 2 * Copyright (C) 2015-2020 Alibaba Group Holding Limited 3 */ 4 #ifndef __HAL_KEY_H__ 5 #define __HAL_KEY_H__ 6 7 #include "hal_gpio.h" 8 #include "hal_gpadc.h" 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 enum HAL_KEY_CODE_T { 15 HAL_KEY_CODE_NONE = 0, 16 HAL_KEY_CODE_PWR = (1 << 0), 17 HAL_KEY_CODE_FN1 = (1 << 1), 18 HAL_KEY_CODE_FN2 = (1 << 2), 19 HAL_KEY_CODE_FN3 = (1 << 3), 20 HAL_KEY_CODE_FN4 = (1 << 4), 21 HAL_KEY_CODE_FN5 = (1 << 5), 22 HAL_KEY_CODE_FN6 = (1 << 6), 23 HAL_KEY_CODE_FN7 = (1 << 7), 24 HAL_KEY_CODE_FN8 = (1 << 8), 25 HAL_KEY_CODE_FN9 = (1 << 9), 26 HAL_KEY_CODE_FN10 = (1 << 10), 27 HAL_KEY_CODE_FN11 = (1 << 11), 28 HAL_KEY_CODE_FN12 = (1 << 12), 29 HAL_KEY_CODE_FN13 = (1 << 13), 30 HAL_KEY_CODE_FN14 = (1 << 14), 31 HAL_KEY_CODE_FN15 = (1 << 15), 32 }; 33 34 enum HAL_KEY_EVENT_T { 35 HAL_KEY_EVENT_NONE = 0, 36 HAL_KEY_EVENT_DOWN, 37 HAL_KEY_EVENT_FIRST_DOWN, 38 HAL_KEY_EVENT_CONTINUED_DOWN, 39 HAL_KEY_EVENT_UP, 40 HAL_KEY_EVENT_UP_AFTER_LONGPRESS, 41 HAL_KEY_EVENT_LONGPRESS, 42 HAL_KEY_EVENT_LONGLONGPRESS, 43 HAL_KEY_EVENT_CLICK, 44 HAL_KEY_EVENT_DOUBLECLICK, 45 HAL_KEY_EVENT_TRIPLECLICK, 46 HAL_KEY_EVENT_ULTRACLICK, 47 HAL_KEY_EVENT_RAMPAGECLICK, 48 HAL_KEY_EVENT_REPEAT, 49 HAL_KEY_EVENT_GROUPKEY_DOWN, 50 HAL_KEY_EVENT_GROUPKEY_REPEAT, 51 HAL_KEY_EVENT_INITDOWN, 52 HAL_KEY_EVENT_INITUP, 53 HAL_KEY_EVENT_INITLONGPRESS, 54 HAL_KEY_EVENT_INITLONGLONGPRESS, 55 HAL_KEY_EVENT_INITFINISHED, 56 57 HAL_KEY_EVENT_NUM, 58 }; 59 60 #define KEY_EVENT_SET(a) (1 << HAL_KEY_EVENT_ ## a) 61 #define KEY_EVENT_SET2(a, b) (KEY_EVENT_SET(a) | KEY_EVENT_SET(b)) 62 #define KEY_EVENT_SET3(a, b, c) (KEY_EVENT_SET2(a, b) | KEY_EVENT_SET(c)) 63 #define KEY_EVENT_SET4(a, b, c, d) (KEY_EVENT_SET3(a, b, c) | KEY_EVENT_SET(d)) 64 65 enum HAL_KEY_GPIOKEY_VAL_T { 66 HAL_KEY_GPIOKEY_VAL_LOW = 0, 67 HAL_KEY_GPIOKEY_VAL_HIGH, 68 }; 69 70 struct HAL_KEY_GPIOKEY_CFG_T { 71 enum HAL_KEY_CODE_T key_code; 72 struct HAL_IOMUX_PIN_FUNCTION_MAP key_config; 73 enum HAL_KEY_GPIOKEY_VAL_T key_down; 74 }; 75 76 int hal_key_open(int checkPwrKey, int (* cb)(uint32_t, uint8_t)); 77 78 enum HAL_KEY_EVENT_T hal_key_read_status(enum HAL_KEY_CODE_T code); 79 80 int hal_key_close(void); 81 82 int get_recovery_mode(void); 83 #ifdef __cplusplus 84 } 85 #endif 86 87 #endif//__FMDEC_H__ 88