/** * @file key_scan.h * @author Alvin Young (impressionyang@outlook.com) * @brief * @version 0.1 * @date 2025-03-23 * * _ _ * (_)_ _ ___ _______ ___ ___ (_)__ ___ __ _____ ____ ___ _ * / / ' \/ _ \/ __/ -_|_-<(_- * Date Version Author Description * 2025-03-23 v1.0 Alvin Young 首次创建 * * */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __KEY_SCAN_H__ #define __KEY_SCAN_H__ #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include /* define --------------------------------------------------------------------*/ /* typedef -------------------------------------------------------------------*/ typedef enum __key_scan_key_result_e__ { EM_KEY_SCAN_RESULT_IDLE = 0x00, EM_KEY_SCAN_RESULT_ONSHOT, EM_KEY_SCAN_RESULT_DOUBLE, EM_KEY_SCAN_RESULT_LONG, } key_scan_key_result_e; typedef enum __key_scan_key_stm_e__ { EM_KEY_SCAN_KEY_STM_IDLE = 0x00, EM_KEY_SCAN_KEY_STM_DEBOUNCE, EM_KEY_SCAN_KEY_STM_PRESS, EM_KEY_SCAN_KEY_STM_RELEASE, EM_KEY_SCAN_KEY_STM_SEND_KEY, } key_scan_key_stm_e; typedef struct __key_scan_key_state_t__ { key_scan_key_stm_e state; key_scan_key_stm_e last_state; uint16_t press_cnt; uint16_t release_cnt; uint8_t debounce_ret; } key_scan_key_state_t; /* variables -----------------------------------------------------------------*/ /* Private function(only *.c) -----------------------------------------------*/ /* Exported functions --------------------------------------------------------*/ uint8_t key_scan_init(); #ifdef __cplusplus } #endif #endif //__KEY_SCAN_H__ /* * EOF */