Keypad 开发指导_Rev1.2
修订记录
版本 |
日期 |
作者 |
审核 |
修订内容 |
|---|---|---|---|---|
1.0 |
2023-12-1 |
LJZ |
zlc |
创建文档 |
1.1 |
2024-03-25 |
sxx |
更改文档名称 |
|
1.2 |
2024-11-07 |
zw |
修改文档格式,删除demo |
1 简介
本文档介绍 LTE-EC71X keypad 接口 API 情况, API 接口位于 components/kernel/lierda_api/liot_keypad/liot_keypad.h 文件声明。最多支持5*5的矩阵键盘,具体可根据模组复用表中的Alt func6进行确认,KPC_C代表矩阵键盘的行,KPC_R代表矩阵键盘的列。
2 API 函数概览
函数 |
说明 |
|---|---|
|
初始化矩阵键盘 |
|
获取矩阵键盘状态 |
3 类型说明
3.1 liot_errcode_keypad_e
KEYPAD API 执行结果错误码。
声明
typedef enum
{
LIOT_KEYPAD_SUCCESS = LIOT_SUCCESS,
LIOT_KEYPAD_INVALID_PARAM_ERR = 1|LIOT_KEYPAD_ERRCODE_BASE
}liot_errcode_keypad_e;
参数
LIOT_KEYPAD_SUCCESS:函数执行成功。
LIOT_KEYPAD_INVALID_PARAM_ERR:参数错误。
3.2 liot_kpc_report_value_e
按键状态枚举定义如下:
声明
typedef enum
{
LIOT_KPC_REPORT_KEY_RELEASE = 0U, //!< Key is released
LIOT_KPC_REPORT_KEY_PRESS = 1U, //!< Key is pressed
LIOT_KPC_REPORT_KEY_REPEAT = 2U, //!< Key holds pressed
}liot_kpc_report_value_e;
参数
LIOT_KPC_REPORT_KEY_RELEASE:按键已释放 。
LIOT_KPC_REPORT_KEY_PRESS:按键已按下 。
LIOT_KPC_REPORT_KEY_REPEAT:长按按键。
3.3 liot_kpc_report_event_t
按键上报结构体定义如下
声明
typedef struct
{
uint8_t value : 2; //!<Key value, liot_kpc_report_value_e
uint8_t column : 3; //!< Key column
uint8_t row : 3; //!<Key row
}liot_kpc_report_event_t;
参数
类型 |
参数 |
描述 |
|---|---|---|
uint8_t |
value |
按键状态。类型如liot_kpc_report_value_e |
uint8_t |
column |
列 |
uint8_t |
row |
行 |
4 API 函数详解
4.1 liot_keyeventcb_t
keypad事件的回调函数。
声明
typedef void (*liot_keyeventcb_t)(liot_kpc_report_event_t key);
参数
key:[In] 按键状态结构体。
4.2 liot_keypad_init
该函数用于初始化矩阵键盘。
声明
liot_errcode_keypad_e liot_keypad_init(liot_keyeventcb_t cb,
uint8 keyrow[LIOT_KEYPAD_ROW_LENGTH], uint8 keycol[LIOT_KEYPAD_COL_LENGTH])
参数
cb:[In] keypad事件的回调函数。
keyrow:[In] 每行按键接的模组引脚。
keycol:[In] 每列按键接的模组引脚。
返回值
liot_errcode_keypad_e:执行结果码,请参考 3.1。
4.3 liot_keypad_state
该函数用于获取矩阵键盘状态。
声明
liot_errcode_keypad_e liot_keypad_state(uint8_t *pressed, uint8_t *id);
参数
pressed:[Out] 按键状态,参考liot_kpc_report_value_e。
id:[Out] 按键ID 。
返回值
liot_errcode_keypad_e:执行结果码,请参考 3.1。