Skip to main content

红外遥控驱动代码文件API接口使用说明文档

本文档用于红外遥控驱动相关代码文件的简要说明,所提供的API接口的使用说明

红外遥控驱动相关文件目录:

- module_driver/devices/keyboard_infra
- module_driver/devices/infra_nec_analysis
- module_driver/drivers/infra_analysis
- module_driver/drivers/infrared_gpio

1. 代码文件简要说明


  • /keyboard_infra/

    • infra_keyboard.c //红外遥控按键驱动,实现接收到 对应键值的红外数据 进行 按键 按下/松开 事件上报
  • /infra_nec_analysis/

    • infrared_nec_analysis.c //红外NEC协议解析驱动,实现将红外数据转换为有效数据并校验,已红外解析设备形式注册到红外解析通用接口实现底层协议解析
  • /infra_analysis/

    • infrared_analysis.c //红外解析协议通用接口,用于应用层实现红外电平数据解析的通用接口
    • infrared_analysis.h //通用接口头文件,用于提供通用接口相关的API接口和相关结构体声明
  • /infrared_gpio/

    • infrared_gpio_receive.c //红外数据接收驱动,用于接收红外数据(电平信号以及持续时间)
    • infrared_gpio.h //红外接收头文件,用于提供红外接收相关的API接口

2. API接口使用说明


红外接收API接口说明


接口路径:module_driver/drivers/infrared_gpio/infrared_gpio.h

image-20240718144218095

/**
* @brief 开启红外接收,使能输入引脚中断,接收外界发来的红外数据
*
* @param input_in 红外接收的输入引脚,接收该引脚得到的红外数据
* @param read_free_timeout 接收数据结束超时时间,用于标志单个红外数据接收结束 单位:ms
*
* @return -开启成功:返回值0 -开启失败,当前红外接收引脚不为-1:返回值-1
**/
int infra_rec_start(int input_pin, int read_free_timeout);

/**
* @brief 停止红外接收,注销输入引脚中断,停止接收外界发来的红外数据
*
* @param void
* @return void
**/
void infra_rec_stop(void);

/**
* @brief 读取红外数据,返回接收到的单个红外数据,若无接收到数据等待超时退出
*
* @param infrared_rec_data 红外数据结构体,用于存储单个红外数据
* @param read_free_timeout 等待接收超时时间,表示没有接收到数据 单位:ms
*
* @return -有红外数据:返回值0 -没有数据:返回值-1
**/
int infra_rec_read(struct infrared_gpio_rec *infrared_rec_data, int ms_timeout);

红外解析通用API接口说明


接口路径:module_driver/drivers/infra_analysis/infrared_analysis.h

image-20240718152000818

/**
* @brief 红外解析协议设备注册,用于红外解析通用接口中注册解析设备
*
* @param infra_dev_name 红外解析设备名,解析设备的唯一标识
* @param infra_fun_ops 功能列表,设备底层对应的红外解析功能实现
*
* @return -设备已注册或开辟内存空间失败,即注册失败:返回值REGISTER_FAIL(-1)
* -设备已达上限,即注册失败:返回值REGISIER_DEV_NUM_MAX_FAIL(-6)
* -设备注册成功:返回值REGISTER_SUCCE(20)
**/
int infra_dev_register(const char *infra_dev_name, struct infra_fun_ops *infra_fun_ops);

/**
* @brief 红外解析协议设备注销,用于红外解析通用接口中注销解析设备
*
* @param infra_dev_name 红外解析设备名,解析设备的唯一标识,用于查找解析设备
*
* @return -设备未注册,即注销失败:返回值UNREGISTER_FAIL(-2)
* -设备注销成功:返回值UNREGISTER_SUCCE(21)
**/
int infra_dev_unregister(const char *infra_dev_name)

/**
* @brief 启用红外解析设备,返回解析设备句柄,用于对红外数据进行解析
*
* @param infra_dev_name 红外解析设备名,解析设备的唯一标识,用于启用该解析设备
*
* @return -设备未注册,即启用失败:返回值INFRA_OPEN_FAIL(NULL)
* -设备启用成功:返回值 指向解析设备的指针即设备句柄
**/
struct infra_dev *infra_dev_open(const char *infra_dev_name);

/**
* @brief 关闭红外解析设备,句柄置NULL
*
* @param dev 指向解析设备的指针即设备句柄
*
* @return -设备句柄为NULL,即关闭失败:返回值INFRA_CLOSE_FAIL(-3)
* -设备句柄关闭成功:返回值INFRA_CLOSE_SUCCE(22)
**/
int infra_dev_close(struct infra_dev *dev)

/**
* @brief 解析红外数据,将红外数据 解析成 有效数据
*
* @param dev 指向解析设备的指针即设备句柄
* @param infrared_rec 传入的红外数据(电平信号以及持续时间)
* @param key_button 传出的有效数据(红外设备地址以及按键控制码)
*
* @return -设备句柄为NULL/红外数据有误/数据校验有误,即解析失败,未修改key_button数据:返回值ANALYSIS_FAIL(-4)
* -红外数据的地址码与配置不符,即解析结束,未修改key_button数据:返回值ANALYSIS_ADDR_FAIL(-5)
* -红外数据为重复码,即解析完成,未修改key_button数据:返回值ANALYSIS_REPEAT(24)
* -解析成功,更新key_button数据:返回值ANALYSIS_SUCCE(23)
**/
int infra_dev_analysis_data(struct infra_dev *dev, struct infrared_gpio_rec *infrared_rec, struct infra_button_data *key_button);

API接口使用参考


文件路径:module_driver/devices/keyboard_infra/infra_keyboard.c

image-20240718161429409