35 #ifndef __HAL_KEYPAD_H__ 36 #define __HAL_KEYPAD_H__ 38 #include "hal_platform.h" 41 #ifdef HAL_KEYPAD_MODULE_ENABLED 42 #include "hal_keypad_table.h" 74 #ifdef HAL_KEYPAD_FEATURE_POWERKEY 146 #ifdef HAL_KEYPAD_FEATURE_POWERKEY 213 #ifdef HAL_KEYPAD_FEATURE_POWERKEY 227 #ifdef HAL_KEYPAD_FEATURE_POWERKEY 279 typedef void (*hal_keypad_callback_t)(
void *user_data);
281 #ifdef HAL_KEYPAD_FEATURE_POWERKEY 287 typedef void (*hal_powerkey_callback_t)(
void *user_data);
300 HAL_KEYPAD_MODE_SINGLE_KEY = 0,
301 HAL_KEYPAD_MODE_DOUBLE_KEY = 1
306 HAL_KEYPAD_STATUS_ERROR = -2,
307 HAL_KEYPAD_INVALID_PARAMETER = -1,
308 HAL_KEYPAD_STATUS_OK = 0
309 } hal_keypad_status_t;
313 HAL_KEYPAD_KEY_RELEASE = 0,
314 HAL_KEYPAD_KEY_PRESS = 1,
315 HAL_KEYPAD_KEY_LONG_PRESS = 2,
316 HAL_KEYPAD_KEY_REPEAT = 3,
317 HAL_KEYPAD_KEY_PMU_LONG_PRESS = 4
318 } hal_keypad_key_state_t;
329 uint8_t column_bitmap;
331 } hal_keypad_column_row_t;
336 hal_keypad_mode_t mode;
337 hal_keypad_column_row_t key_map;
339 uint32_t repeat_time;
340 uint32_t longpress_time;
341 } hal_keypad_config_t;
346 uint8_t column_high_pulse;
347 uint8_t row_high_pulse;
348 uint8_t column_scan_div;
349 uint8_t row_scan_div;
350 } hal_keypad_scan_timing_t;
354 hal_keypad_key_state_t state;
357 } hal_keypad_event_t;
359 #ifdef HAL_KEYPAD_FEATURE_POWERKEY 362 hal_keypad_key_state_t state;
365 } hal_keypad_powerkey_event_t;
380 hal_keypad_status_t hal_keypad_init(
const hal_keypad_config_t *keypad_config);
383 #ifdef HAL_KEYPAD_FEATURE_POWERKEY 392 hal_keypad_status_t hal_keypad_powerkey_init(uint32_t powerkey_data);
403 hal_keypad_status_t hal_keypad_deinit(
void);
405 #ifdef HAL_KEYPAD_FEATURE_POWERKEY 413 hal_keypad_status_t hal_keypad_powerkey_deinit(
void);
423 hal_keypad_status_t hal_keypad_set_debounce(
const uint32_t *keypad_debounce);
431 hal_keypad_status_t hal_keypad_get_debounce(uint32_t *keypad_debounce);
439 hal_keypad_status_t hal_keypad_enable(
void);
447 hal_keypad_status_t hal_keypad_disable(
void);
457 hal_keypad_status_t hal_keypad_set_scan_timing(
const hal_keypad_scan_timing_t *keypad_scan_timing);
468 hal_keypad_status_t hal_keypad_get_scan_timing(hal_keypad_scan_timing_t *keypad_scan_timing);
481 hal_keypad_status_t hal_keypad_register_callback(hal_keypad_callback_t callback,
void *user_data);
483 #ifdef HAL_KEYPAD_FEATURE_POWERKEY 498 hal_keypad_status_t hal_keypad_powerkey_register_callback(hal_powerkey_callback_t callback,
void *user_data);
508 hal_keypad_status_t hal_keypad_get_key(hal_keypad_event_t *keypad_event);
510 #ifdef HAL_KEYPAD_FEATURE_POWERKEY 518 hal_keypad_status_t hal_keypad_powerkey_get_key(hal_keypad_powerkey_event_t *powerkey_event);