Keypad 开发指导_Rev1.2

English

修订记录

版本

日期

作者

审核

修订内容

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 函数概览

函数

说明

liot_keypad_init()

初始化矩阵键盘

liot_keypad_state()

获取矩阵键盘状态

3 类型说明

3.1 liot_errcode_keypad_e

KEYPAD API 执行结果错误码。

  1. 声明

typedef enum
{
    LIOT_KEYPAD_SUCCESS = LIOT_SUCCESS,
    LIOT_KEYPAD_INVALID_PARAM_ERR                 = 1|LIOT_KEYPAD_ERRCODE_BASE
}liot_errcode_keypad_e;
  1. 参数

  • LIOT_KEYPAD_SUCCESS:函数执行成功。

  • LIOT_KEYPAD_INVALID_PARAM_ERR:参数错误。

3.2 liot_kpc_report_value_e

按键状态枚举定义如下:

  1. 声明

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;
  1. 参数

  • LIOT_KPC_REPORT_KEY_RELEASE:按键已释放 。

  • LIOT_KPC_REPORT_KEY_PRESS:按键已按下 。

  • LIOT_KPC_REPORT_KEY_REPEAT:长按按键。

3.3 liot_kpc_report_event_t

按键上报结构体定义如下

  1. 声明

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;
  1. 参数

类型

参数

描述

uint8_t

value

按键状态。类型如liot_kpc_report_value_e

uint8_t

column

uint8_t

row

4 API 函数详解

4.1 liot_keyeventcb_t

keypad事件的回调函数。

  1. 声明

typedef void (*liot_keyeventcb_t)(liot_kpc_report_event_t key);
  1. 参数

  • key:[In] 按键状态结构体。

4.2 liot_keypad_init

该函数用于初始化矩阵键盘。

  1. 声明

liot_errcode_keypad_e liot_keypad_init(liot_keyeventcb_t cb,
    uint8 keyrow[LIOT_KEYPAD_ROW_LENGTH], uint8 keycol[LIOT_KEYPAD_COL_LENGTH])
  1. 参数

  • cb:[In] keypad事件的回调函数。

  • keyrow:[In] 每行按键接的模组引脚。

  • keycol:[In] 每列按键接的模组引脚。

  1. 返回值

  • liot_errcode_keypad_e:执行结果码,请参考 3.1。

4.3 liot_keypad_state

该函数用于获取矩阵键盘状态。

  1. 声明

liot_errcode_keypad_e liot_keypad_state(uint8_t *pressed, uint8_t *id);
  1. 参数

  • pressed:[Out] 按键状态,参考liot_kpc_report_value_e。

  • id:[Out] 按键ID 。

  1. 返回值

  • liot_errcode_keypad_e:执行结果码,请参考 3.1。