AC63_BT_SDK/apps/common/include/matrix_keyboard.h
2025-02-18 15:40:42 +08:00

88 lines
3.0 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _MATRIX_KEYBOARD_H_
#define _MATRIX_KEYBOARD_H_
#include "typedef.h"
//左/右CTL在/右ALT在/右SHIFT左/右WIN键盘
#define S_KEY(x) (x|(0x1<<8))
#define _KEY_FN 0xff
#define ROW_MAX 8
#define COL_MAX 20
enum {
MATRIX_KEY_UP = 0,
MATRIX_KEY_SHORT,
MATRIX_KEY_LONG,
MATRIX_KEY_HOLD,
};
typedef struct _matrix_key_st {
u32 press_cnt;
u8 last_st;
u8 filter_cnt;
u8 filter_value;
u8 click_cnt;
} matrix_key_st;
typedef struct _matrix_key_param {
u32 *row_pin_list; //row线IO口列表
u32 *col_pin_list; //col线IO口列表
u8 row_num; //row线数
u8 col_num; //col线数
} matrix_key_param;
// int matrix_key_init(matrix_key_param *param);
// void ex_mcu_enter_powerdown(void);
// void ex_mcu_enter_poweroff(void);
// void ex_mcu_exit_powerdown(u32 gpio);
//------------------------按键宏接口---------------------------------//
#if TCFG_EX_MCU_ENABLE
void ex_mcu_enter_powerdown();
void ex_mcu_exit_powerdown(u32 gpio);
void ex_mcu_enter_poweroff();
void ex_mcu_full_key_map(u8 row, u8 col, u8 st);
void ex_mcu_matrix_key_set_io_state(u8 state, u32 *io_table, u8 len);
void ex_mcu_matrix_key_scan();
void ex_mcu_matrix_key_wakeup_timeout_handler(void *arg);
void ex_mcu_matrix_key_wakeup_keep();
void ex_mcu_matrix_key_wakeup(u8 idx, u32 gpio);
int ex_mcu_matrix_key_init(matrix_key_param *param);
#define EX_MCU_ENTER_POWERDOWN() ex_mcu_enter_powerdown()
#define EX_MCU_EXIT_POWERDOWN(a) ex_mcu_exit_powerdown(a)
#define EX_MCU_ENTER_POWEROFF() ex_mcu_enter_poweroff()
#define FULL_KEY_MAP(a, b, c) ex_mcu_full_key_map(a, b, c)
#define MATRIX_KEY_SET_IO_STATE(a, b, c) ex_mcu_matrix_key_set_io_state(a, b, c)
#define MATRIX_KEY_SCAN() ex_mcu_matrix_key_scan()
#define MATRIX_KEY_WAKEUP_TIMEOUT_HANDLER(a) ex_mcu_matrix_key_wakeup_timeout_handler(a)
#define MATRIX_KEY_WAKEUP_KEEP() ex_mcu_matrix_key_wakeup_keep()
#define MATRIX_KEY_WAKEUP(a, b) ex_mcu_matrix_key_wakeup(a, b)
#define MATRIX_KEY_INIT(a) ex_mcu_matrix_key_init(a)
#else
void full_key_map(u8 row, u8 col, u8 st);
void matrix_key_set_io_state(u8 state, u32 *io_table, u8 len);
void matrix_key_scan();
void matrix_key_wakeup_timeout_handler(void *arg);
void matrix_key_wakeup_keep();
void matrix_key_wakeup(u8 idx, u32 gpio);
int matrix_key_init(matrix_key_param *param);
#define EX_MCU_ENTER_POWERDOWN()
#define EX_MCU_EXIT_POWERDOWN(a)
#define EX_MCU_ENTER_POWEROFF()
#define FULL_KEY_MAP(a, b, c) full_key_map(a, b, c)
#define MATRIX_KEY_SET_IO_STATE(a, b, c) matrix_key_set_io_state(a, b, c)
#define MATRIX_KEY_SCAN() matrix_key_scan()
#define MATRIX_KEY_WAKEUP_TIMEOUT_HANDLER(a) matrix_key_wakeup_timeout_handler(a)
#define MATRIX_KEY_WAKEUP_KEEP() matrix_key_wakeup_keep()
#define MATRIX_KEY_WAKEUP(a, b) matrix_key_wakeup(a, b)
#define MATRIX_KEY_INIT(a) matrix_key_init(a)
#endif
#endif