88 lines
3.0 KiB
C
88 lines
3.0 KiB
C
|
#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
|