http://lxr.free-electrons.com/source/drivers/media/rc/gpio-ir-recv.c
简单分析了一下
1. 通过设备树来选择接上rc的gpio
2. 设置上升与下降沿中断,前提是这个接上RC的GPIO必须支持中断功能
3. 中断来了以后判断高低电平,标识是IR_SPACE还是IR_PULSE通过以下函数传递
rc = ir_raw_event_store_edge(gpio_dev->rcdev, type);
其实就是记录当前时间存到一个kfifo里面
4. 通过译码算法去识别当前的键值
优点:中断来处理,将原始值为时间存入FIFO再处理,不会浪费太多在中断里的时间
http://www.irdroid.com/downloads/ 一个android下的irda 提供源代码
未仔细看代码,粗略看了一下应该是上面的linux驱动然后调用识别代码后映射处理,然后交给uinput传递模拟成具体的键值
转载于:https://blog.51cto.com/axlrose/1300293