ir 使用
红外遥控配置
aio-3288j 开发板上可以接红外收发传感器 ir 实现遥控功能。
注意:aio-3288j的ir接线位置如下图红框所示
本文主要描述在开发板上如何配置红外遥控器。 其配置步骤可分为两个部分:
修改内核驱动:内核空间修改,linux 和 android 都要修改这部分的内容。
修改键值映射:用户空间修改(仅限 android 系统)。
内核驱动
在 linux 内核中,ir 驱动仅支持 nec 编码格式。以下是在内核中配置红外遥控的方法。 所涉及到的文件drivers/input/remotectl/rockchip_pwm_remotectl.c
定义相关数据结构
以下是定义数据结构的步骤:
添加键值表结构体数组:
static struct rkxx_remote_key_table remote_key_table_r66[12] = { {0xeb, key_power}, // power //control {0xa3, 250}, // settings {0xec, key_menu}, // menu {0xfc, key_up}, // up {0xfd, key_down}, // down {0xf1, key_left}, // left {0xe5, key_right}, // right {0xf8, key_reply}, // ok {0xb7, key_home}, // home {0xfe, key_back}, // back // vol {0xa7, key_volumedown}, // vol- {0xf4, key_volumeup}, // vol+ };
注:第一列为键值,第二列为要响应的按键码。
添加按键结构体数组
static struct rkxx_remotectl_button remotectl_button[] = { //... { .usercode = 0xff00,/* need to get the usercode in next step */ .nbuttons = 12,/* number of buttons */ .key_table = &remote_key_table_r66[0],/* key table */ }, // ... };
注:
usercode 是用户码,每个ir都有一个对应的用户码;
nbuttons 是遥控按键个数;
key_table 是在第一步中添加的键值表结构体数组的地址。
如何获取用户码和ir 键值
在 remotectl_do_something 函数中获取用户码和键值:
case rmc_usercode: { //ddata->scandata period scandata |= (0x01count ++; if (ddata->count == 0x10){//16 bit user code dbg_code(get usercode=0x%x\n,((ddata->scandata) & 0xffff)); if (remotectl_keybdnum_lookup(ddata)){ ddata->state = rmc_getdata; ddata->scandata = 0; ddata->count = 0; }else{ //user code error ddata->state = rmc_preload; } } }
注:用户可以使用 dbg_code() 函数打印用户码。
向 remotectl_button 数组添加用户码和键值:
case rmc_getdata: { //ddata->count ++; //ddata->scandata
count == 0x10){ dbg_code(rmc_getdata=%x\n,(ddata->scandata>>8)); if ((ddata->scandata&0x0ff) == ((~ddata->scandata >> 8)&0x0ff)){ if (remotectl_keycode_lookup(ddata)){ ddata->press = 1; ... } ... } ... } }
注:用户可以使用 dbg_code() 函数打印键值。
将 ir 驱动编译进内核
将 ir 驱动编译进内核的步骤如下所示:
(1)、向配置文件 drivers/input/remotectl/kconfig 中添加如下配置:
config rk_remotectl_pwm bool rkxx remoctrl pwm0 capture default n
(2)、修改 drivers/input/remotectl 路径下的 makefile,添加如下编译选项:
obj-$(rk_remotectl_pwm) += rk_pwm_remotectl.o
(3)、在 kernel 路径下使用 make menuconfig ,按照如下方法将ir驱动选中。
device drivers --->input device support -----> [*] rkxx remotectl ------->[*] rkxx remoctrl pwm0 capture.
保存后,执行 make 命令即可将该驱动编进内核。
android 键值映射
文件 /system/usr/keylayout/ff680000_pwm.kl 用于将 linux 层获取的键值映射到 android 上对应的键值。用户可以添加或者修改该文件的内容以实现不同的键值映射。
该文件内容如下所示:
key 28 enter key 116 power wake key 158 back key 139 menu key 217 search key 232 dpad_center key 108 dpad_down key 103 dpad_up key 102 home key 105 dpad_left key 106 dpad_right key 115 volume_up key 114 volume_down key 143 notification wake key 113 volume_mute key 388 tv_keymouse_mode_switch key 400 tv_media_mult_backward key 401 tv_media_mult_forward key 402 tv_media_play_pause key 64 tv_media_play key 65 tv_media_pause key 66 tv_media_stop
注:通过 adb 修改该文件重启后即可生效。
JDI开始量产VR头显专用显示屏 采用了特殊的光学设计
光电式液位传感器会比浮球式液位传感器更能节约成本吗
RFID在手术器械管理上的妙用
基于调频广播发射系统的BDS/FM-RTK北斗高精度定位系统简介
华为折叠手机Mate X2深度评测
fireflyAIO-3288J主板IR使用介绍
繁星之夜更多精彩即将呈现!OPPO Reno5系列今日发布
传输线损耗:模型和方程式
求一种基于RJM8L151S的智能提醒药盒解决方案
如何用Python计算机器学习中特征的重要程度?
华为智慧屏和荣耀智慧屏相比会有哪些不同
realmeX评测 性价比超出预期
英特尔公布2020财年第三季度财报:去年同期相比下降29%
一分钟了解功放手册里那些被你忽略的信息
SPWM调制方法对比分析
Arm发布全新智能视觉参考设计 满足中国市场视觉应用设备的强劲增长需求
USB3.0:VL817Q7-C0的LAYOUT指南(一)
空调扇怎么用
BGA封装类别
TikTok近期在欧洲招兵买马扩充团队