Android源码编译——RK3128开发板多款红外遥控器常用按键适配
来源:互联网 发布:学生管理系统java界面 编辑:程序博客网 时间:2024/05/16 15:23
最近拿到一块Demo板,由于种种原因忘了入手遥控器。想到公司产品也是通过遥控操作,就抱着试一试的心态使用公司遥控器调试。一路下来发现只有上下键可以使用。然而是相反的。以前没做过底层,查阅相关资料后发现又有什么RC5、RC6、NEC编码,整个人都不好了。看了内核源码后知道拿到的这块Demo板采用的是NEC编码。只是和我们现有产品的遥控器编码不同。在这里是讲RK3128方案的遥控器适配。话不多说开始我们的适配之旅。
适配过程分两步:
1、得到现有遥控器NEC编码。
2、配置到dts文件,重新编译内核即可。
第一步:获得遥控器NEC编码。
通过查看内核驱动源代码,可以看到遥控器用户码、键值对应的码值的log被屏蔽了。
kernel/drivers/input/remotectl/rk_pwm_remotectl.c//部分代码节选:/*sys/module/rk_pwm_remotectl/parameters,modify code_print to change the value*/static int rk_remote_print_code;static bool remote_suspend = false;module_param_named(code_print, rk_remote_print_code, int, 0644);#define DBG_CODE(args...) \ do { \ if (rk_remote_print_code) { \ pr_info(args); \ } \ } while (0)/**…………中间省略………………*//**…………中间省略………………*/case RMC_USERCODE: { /**…………中间省略………………*/ DBG_CODE("USERCODE=0x%x\n", ddata->scandata); /**…………中间省略………………*/}break;case RMC_GETDATA: { /**…………中间省略………………*/ DBG_CODE("RMC_GETDATA=%x\n", (ddata->scandata>>8)); /**…………中间省略………………*/}break;
通过前段定义的“DBG_CODE”可以知道操作parameters文件即可打印出相应的码值。
adb shell 下或者串口下均可以使用以下命令。
suecho 1 > /sys/module/rockchip_pwm_remotectl/parameters/code_print(1和echo中间有空格,这段命令的作用是往code_print里写1)
输入完毕这是按遥控器按键这有相关码值打印出来。
注意:串口是直接打印在串口日志的(如下图)。
adb shell则需要查看内核日志直接输入如下命令即可看到。
cat /dev/kmsg
如上边的“0xff00”就是用户码,“fa”就是按键对应的键值码。
记录完你要配置的所有按键的键值码后接下来配置内核进行适配。
第二部:配置dts文件
进入kernel/arch/arm/boot/dts目录打开rk3128的配置文件rk3128-box-rk88.dts,找到remotectl节点,
可以看到事先已有默认的配置
这是我们只需要把自己遥控器的用户码和对应的键值码替换即可。
如果有多款遥控器要适配那就按照ir_key1{}的形式复制几分,以ir_key2、ir_key3等命名。
如下我的配置。我适配了两款遥控器。
&remotectl { handle_cpu_id = <2>; ir_key1{ rockchip,usercode = <0xff00>; rockchip,key_table = <0xeb KEY_POWER>, <0xa3 250>, <0xe8 KEY_MENU>, <0xfd KEY_UP>, <0xfc KEY_DOWN>, <0xfb KEY_LEFT>, <0xfa KEY_RIGHT>, <0xfe KEY_REPLY>, <0xff KEY_HOME>, <0xe9 KEY_BACK>, <0xe6 KEY_VOLUMEDOWN>, <0xef KEY_VOLUMEUP>; }; ir_key2{ rockchip,usercode = <0x7f80>; rockchip,key_table = <0xed KEY_POWER>, <0xfb KEY_MENU>, <0xfa KEY_UP>, <0xe4 KEY_DOWN>, <0xf8 KEY_LEFT>, <0xf6 KEY_RIGHT>, <0xf7 KEY_REPLY>, <0xfe KEY_HOME>, <0xf9 KEY_BACK>, <0xf3 KEY_VOLUMEDOWN>, <0xf1 KEY_VOLUMEUP>; };};
由于我们是适配常用的按键,所以这里了不需要改Framework层代码。如需特殊按键定制可以自行查阅资料。
配置完成后重新编译内核文件。将得到的kernel.img文件少烧写到开发板即可。
到这里RK3128开发板多款红外遥控器常用按键适配工作告一段落。在接下来的日子里继续学习源码相关内容。同时也会和大家分析学习心得。
扫描下方二维码即可关注我的公众号,想要实时接收博文推送,拿出手机扫码关注公众号吧~
微信扫码,即刻关注。
会不定期的更新相关内容哟 ^_^
- Android源码编译——RK3128开发板多款红外遥控器常用按键适配
- Android源码编译——RK3128开发板基于Android5.1源码编译小记
- STM32——红外遥控器
- A20红外遥控器与Android功能的适配
- A20红外遥控器与Android功能的适配
- android 空调遥控器——红外设备(基础)
- Android 红外遥控器实现
- android 手机红外遥控器
- Android红外遥控器编码
- amlogic 红外遥控器适配 remote.conf
- 手机红外遥控器 求源码
- 和菜鸟一起学android4.0.3源码之红外遥控器适配
- Android 手机红外遥控器实现
- [Androidstudio]的坑之适配红外遥控器
- RK3128平台android系统修改添加遥控器键值码值
- 单片机——红外遥控器——代码
- hisi平台遥控器按键适配
- 红外遥控器
- Codeforces 651B Beautiful Paintings【贪心】水题
- VS2013下OpenCV2.4.10的安装配置
- 取得浏览器页面视口大小兼容性代码
- 第九周项目3-稀疏矩阵的三元组表示的实现和应用
- uva10817 Headmaster's Headache
- Android源码编译——RK3128开发板多款红外遥控器常用按键适配
- hash table based list operation
- 关于max(X,Y),min(X,Y)
- warning: assignment makes pointer from integer without a cast
- 管道通信
- 多线程
- CodeVS3286 NOIP2013 火柴排队
- NOIP 2006 作业调度方案
- java中的supper使用