/* * Copyright 2016, yichip Semiconductor(shenzhen office) * All Rights Reserved. * * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Yichip Semiconductor; * the contents of this file may not be disclosed to third parties, copied * or duplicated in any form, in whole or in part, without the prior * written permission of Yichip Semiconductor. */ /** *@file keypad.h *@brief keypad support for application */ #ifndef DRIVERS_KEYSCAN_YC_KEYPAD_H_ #define DRIVERS_KEYSCAN_YC_KEYPAD_H_ #include #include "yc_timer.h" #define KEYPAD_COMBO_KEY_MAX 4 /** *@brief GPIO number. */ typedef enum { GPIO_0 = 0, GPIO_1, GPIO_2, GPIO_3, GPIO_4, GPIO_5, GPIO_6, GPIO_7, GPIO_8, GPIO_9, GPIO_10, GPIO_11, GPIO_12, GPIO_13, GPIO_14, GPIO_15, GPIO_16, GPIO_17, GPIO_18, GPIO_19, GPIO_20, GPIO_21, GPIO_22, GPIO_23, GPIO_24, GPIO_25, GPIO_26, GPIO_27, GPIO_28, GPIO_29, GPIO_30, GPIO_31, GPIO_MAX_NUM, }GPIO_NUM; /** *@brief Key index. */ typedef enum { KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_10, KEY_11, KEY_12, KEY_13, KEY_14, KEY_15, KEY_MAX_NUM, /*!< don't change this value */ COMB_KEY1, COMB_KEY2, COMB_KEY3, COMB_KEY4, }KEY_INDEX; /** *@brief Key index mask. */ typedef enum { KEY_0_MASK = 0x0001, KEY_1_MASK = 0x0002, KEY_2_MASK = 0x0004, KEY_3_MASK = 0x0008, KEY_4_MASK = 0x0010, KEY_5_MASK = 0x0020, KEY_6_MASK = 0x0040, KEY_7_MASK = 0x0080, KEY_8_MASK = 0x0100, KEY_9_MASK = 0x0200, KEY_10_MASK = 0x0400, KEY_11_MASK = 0x0800, KEY_12_MASK = 0x1000, KEY_13_MASK = 0x2000, KEY_14_MASK = 0x4000, KEY_15_MASK = 0x8000, KEY_INVALID_MASK = 0x0000, }KEY_INDEX_MASK; /** *@brief Event type. */ typedef enum { KEYPAD_NON, KEYPAD_TAP, KEYPAD_DOUBLE, KEYPAD_TRIPLE, KEYPAD_DOWN, KEYPAD_UP, KEYPAD_PRESS, KEYPAD_PRESS_RELEASE, KEYPAD_LONG_PRESS, KEYPAD_LONG_RELEASE, KEYPAD_LONGLONG_PRESS, KEYPAD_LONGLONG_RELEASE, }KEYPAD_EVT_TYPE; /** *@brief Press type. */ typedef enum { KEYPAD_PRESS_NONE, KEYPAD_PRESS_MULTI, KEYPAD_PRESS_PRESS, KEYPAD_PRESS_LONG_PRESS, KEYPAD_PRESS_LONGLONG_PRESS, KEYPAD_PRESS_EXTREME_LONG_PESS, }KEYPAD_PRESS_TYPE; /** *@brief Key timer. */ typedef struct { uint32_t multi_timer; uint32_t press_timer; /*!< unit 10ms */ uint32_t long_press_timer; /*!< unit 10ms */ uint32_t longlong_press_timer; /*!