android手机红外代码HAL,Android 红外遥控器适配
红外遥控器协议简介
目前有如下几类标准1. RC5
2. NEC
3. SAMSWNG
4. ......
5. SIRC (Sony Infrared Remote Control)
目前RK平台只支持 NEC 协议.
NEC 协议如下所示
NEC 默认协议采用32bit 帧格式来发送按键指令, 格式如下表AddressComplement of AddressCommandComplement of CommandLSB-MSB(0-7)LSB-MSB(8-15)LSB-MSB(16-23)LSB-MSB(24-31)NEC 逻辑1和0波形如下图
逻辑0: 562us 的高电平, 跟随 526us的低电平, 周期为1.125ms(小数约掉)
逻辑1: 562us 的高电平, 跟随 1.675us的低电平, 周期为2.25ms(小数约掉)
NEC 协议接收按键时运行过程如下1. 持续9ms 的高电平, 然后4.5ms 的低电平(帧头)
2. 发送设备8bits 地址, 如: 10110001
3. 发送设备8bits 地址的逻辑反向值, 如: 01001110 (在RK平台, 把address和invert address两个字节作为usercode, 部分遥控器并未把invert address按照协议规范发送反码, 而是作为独立的一个byte)
4. 发送指令command 8bits, 如: 10001101
5. 发送指令command 8bits的逻辑反向值, 如: 01110010
6. 发送截至位, 562us的高电平
红外接收头的原理红外接接收头由 红外接收二极管/三极管/硅光电池组成, 它们将接收到的红外发射器的信号转换为电信号输出, 在通过PWM接收模块转换为数字信号.
RK3288 红外遥控器配置方法
使能驱动RK3288 针对红外遥控器的驱动在 kernel/drivers/input/remotectl/rockchip_pwm_remotectl.c
在config 文件中对应的名称为 CONFIG_ROCKCHIP_REMOTECTL_PWM, 需要设置为buildin Mode1631 # CONFIG_HALL_DEVICE is not set
1632 CONFIG_ROCKCHIP_REMOTECTL=y
1633 CONFIG_ROCKCHIP_REMOTECTL_PWM=y
在dts 中增加按键配置一般配置前去要确认的信息:
1. 红外接收头连接的PWM 控制器序号, R800-P1 连接在PWM0
2. 配置的遥控器的用户码, 我们当前用的遥控器是 0xff00
3. 配置的遥控器的按键码, 我们当前用的遥控器按键码如下图
dts 中的节点如下, 关键配置项描述如下表字段名称字段描述remote_pwd_id红外接收头连接的PWM控制器id, 这里是0
handle_cpu_id处理中断的cpu编号, 这里设置为cpu1
ir_key1特定遥控器的配置信息对于特定遥控器的配置信息, key_table的一项 <0xe7 KEY_POWER> 描述如下
0xe7: 遥控器特定按键的按键码
KEY_POWER: 按键码映射的Linux 内核input 系统定义的输入按键值, 定义在./include/dt-bindings/input/input.h802 /*
803 * Due to not have the software of PWM for remotectrl.
804 * We can _*HACK*_ do that as the following.
805 * TODO Settings
806 */
807 &pwm0 {
808 compatible = "rockchip,remotectl-pwm";
809 remote_pwm_id = <0>;
810
811 handle_cpu_id = <1>;
812 status = "okay";
813 ir_key1{
814 rockchip,usercode = <0xff00>;
815 rockchip,key_table =
816 <0xe7 KEY_POWER>,
817 <0xa4 KEY_MUTE>,
818 <0xa5 KEY_RED>,
819 <0xf2 KEY_GREEN>,
820 <0xf9 KEY_YELLOW>,
821 <0xfd KEY_BLUE>,
822 <0xad KEY_PAGEUP>,
823 <0xaf KEY_PAGEDOWN>,
824 <0xeb KEY_VOLUMEUP>,
825 <0xef KEY_VOLUMEDOWN>,
826
827 <0xfb KEY_MENU>,
828 <0xb8 KEY_LEFT>,
829 <0xb9 KEY_UP>,
830 <0xb0 KEY_SETUP>,
831 <0xea KEY_RIGHT>,
832 <0xe9 KEY_DOWN>,
833 <0xaa KEY_OK>,
834 <0xb1 KEY_HOME>,
835 <0xbf KEY_BACK>,
836 <0xf0 KEY_1>, // 1
837 <0xee KEY_2>, // 2
838 <0xed KEY_3>, // 3
839 <0xb3 KEY_4>, // 4
840 <0xa7 KEY_5>, // 5
841 <0xe4 KEY_6>, // 6
842 <0xe8 KEY_7>, // 7
843 <0xb2 KEY_8>, // 8
844 <0xf5 KEY_9>, // 9
845 <0xe2 KEY_0>, // 0
846 <0xe3 KEY_ENTER>,
847 <0xe1 KEY_DELETE>;
848 };
849 };
Android ir 映射配置文件通过以上两步, 驱动层已经配置完毕, 但Android APP接收到的key code与驱动上报给 user space的 linux event key code 并不相同, 还需要增加Android input hal层的一个map 配置文件, 对于RK3288, 这个配置文件位于device/rockchip/common/ff680000_pwm.kl
详细配置如下key 116 POWER
key 113 VOLUME_MUTE
key 0x18e PROG_RED
key 0x18f PROG_GREEN
key 0x190 PROG_YELLOW
key 0x191 PROG_BLUE
key 104 PAGE_UP
key 109 PAGE_DOWN
key 115 VOLUME_UP
key 114 VOLUME_DOWN
key 139 MENU
key 105 DPAD_LEFT
key 103 DPAD_UP
key 106 DPAD_RIGHT
key 108 DPAD_DOWN
key 0x160 DPAD_CENTER
key 102 HOME
key 158 BACK
key 141 SETTINGS
key 2 1
key 3 2
key 4 3
key 5 4
key 6 5
key 7 6
key 8 7
key 9 8
key 10 9
key 11 0
key 28 ENTER
key 111 DEL以上的配置项描述列编号描述1描述此配置为按键, 均为: key
2Linux 内核上报的key code, 如10
3映射为Android的key code,如ENTER
调试技巧
获取遥控器按键码通过如下指令开启驱动打印usercode 和 keycodeecho 1 > sys/module/rockchip_pwm_remotectl/parameters/code_print打印日志如下, 从日志总看, usercode为0xff00, 按键码为aa<6>[156027.207783] USERCODE=0xff00
<6>[156027.234413] RMC_GETDATA=aa
获取驱动上报的linux key codedts 配置好后, 按遥控器特定按键, 通过getevent指令, 获取按键上报的linux key code, 日志如下
其中的0160 是上报的linux key code, 最后一个字段的1/0分别代表按键按下和松开130|root@rk3288_box:/ # getevent
add device 1: /dev/input/event5
name: "Weida Hi-Tech CoolTouch® System"
add device 2: /dev/input/event1
name: "rk29-keypad"
add device 3: /dev/input/event0
name: "ff680000.pwm"
/dev/input/event0: 0001 0160 00000001
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0001 0160 00000000
/dev/input/event0: 0000 0000 00000000
android手机红外代码HAL,Android 红外遥控器适配相关推荐
- android手机用户,2011年Android手机用户使用行为研究报告
一.市场概述及研究背景 谷歌Android,自获得摩托罗拉.三星.HTC.中兴.华为等诸多品牌的拥趸开始,就扮演起了智能手机市场竞争格局颠覆者的角色.经过近三年时间的发展,Gartner最新数据显示, ...
- android usb共享代码,让Android手机具有USB网络共享功能,可以通过USB连接到Internet...
第0章: 什么是USB网络共享功能 最近漫游Windows Phone的世界时,最新鲜的感觉之一就是诺基亚Lumia手机具有有趣的USB绑定功能,该功能使您的手机可以通过USB电缆连接到计算机,您可以 ...
- 全球 android手机排行 2013,全球Android手机性能排行 三星Note 3夺魁
尽管跑分测试成绩并不是手机实际性能表现的全部,但至少还是能够在很大程度上体现一款手机硬件配置的水平.而作为知名的跑分软件,安兔日前公布了今年第三季Android手机性能排行榜,则或许能够给我们一些参考 ...
- hal系统命令 android,动态可用的 HAL | Android 开源项目 | Android Open Source Project...
Android 9 支持在不使用或不需要 Android 硬件子系统时动态关停这些子系统.例如,如果用户未使用 WLAN,WLAN 子系统就不应占用内存.耗用电量或使用其他系统资源.早期版本的 And ...
- android 人脸检测代码,在Android实现人脸识别的详细过程
照相时,在预览画面上提示用户人脸的位置,并完成自动对焦等,是个错的应用; 下面是实现细节 我们知道在android的代码中已有人脸识别的底层算法代码,而且在framework层也封了调用的API函数 ...
- pc控制android手机屏幕亮度,调整android手机屏幕亮度
贴一段调整安卓手机屏幕亮度的代码 ,可以参考使用,见下: public void setBrightness(int level) { ContentResolver cr = getContentR ...
- android手机数字取证,基于Android智能终端微信应用的数字取证分析模型的研究
第 42卷 第 10A期 2015年 10月 计 算 机 科 学 Computer Science Vo1.42 No.10A Oct 2015 基于 Android智能终端微信应用的数字取证分析模型 ...
- mac安装软件管理Android手机,Mac如何管理Android手机:这方式很得体
[PConline 评测]还记得是在8月份锤子的发布会上,除了带来了新的坚果手机外,在系统领域,老罗吐槽安卓系统和 Mac 连接时,传输和管理文件的方极为丑陋,因此他们为Mac用户精心开发了一款名为S ...
- android 手机自动化测试,Appium进行Android手机真机自动化测试
前置条件: 安装JDK jdk 9使用appium还有点问题,最好使用jdk 8.我使用的是jdk 8u161. 下载前需要先同意协议 下载后双击安装,安装完成后需要手工设置环境变量: 右键单击&qu ...
最新文章
- 2018-2019-1 20165214 《信息安全系统设计基础》第六周学习总结
- URAL 2027 	URCAPL, Episode 1 (模拟)
- 云原生解决什么问题?
- 用c#实现通讯中自定义发送序列化数据,可一定程度上实现可编程发送的功能
- 一个对称性解释三个宇宙学难题;引力波碰撞会发光?粘液霉菌助力寻找宇宙网 | 一周科技速览...
- 使用 spring 的 IOC 解决程序耦合——获取spring的Ioc核心容器,并根据id获取对象、核心容器的两个接口(ApplicationContext、BeanFactory)引发出的问题
- DDD专家张逸:构建领域驱动设计知识体系
- vue页面渲染(请求返回的后端)data,文本换行与显示bug 的分析与解决提示
- 从源码分析快速实现对新开源软件的检测
- delphi 关闭时缩小到托盘_如何正确地缩小毛孔?
- web测试知识点整理
- Prometheus 的云上 MySQL 监控实践
- c定义一个整型数组_滨州学院C语言作业讲解有序数组插入
- 软件测试_Loadrunner_APP测试_性能测试_脚本优化_脚本回放
- 网络通讯协议——TCP/IP协议
- 迪士尼超级IP版图日趋完整
- 把失败看成常态 把成功当作偶然”——与庞加莱猜想“封顶”者之一、中山大学教授朱熹平面对面
- MSDC 4.3 接口规范(23)
- Excel排序与查重
- 云天视界传媒浅谈无人机航拍技巧
热门文章
- 鸿蒙os手机评测视频,鸿蒙OS正式发布:荣耀智慧屏首发,一起来体验鸿蒙OS吧
- linux好用的office软件,MS Office Online——免费好用的在线办公软件
- 智慧化工厂人员定位离我们有多远?苏州新导智能定位系统
- 少儿C++编程从入门到进阶 信奥学奥赛从启蒙到NOI、ACM-ICPC(一)
- 怎么用鸿蒙os系统,鸿蒙OS2.0系统怎么降级到EMUI11 鸿蒙OS2.0系统降级到EMUI11方法...
- 2022年的第一个夕阳
- 520表白——送她一片星空模拟
- 9.DNS和DNSmasq服务
- 新手小白用C# winform 读取Excel表
- http 状态码查询