下面我们来看LIRC到底如何工作的? 从哪儿下手呢?
先看LIRC的工具mode2,看看mode2的源码。
首先看初始化部分:
注意缺省的驱动是LIRC_DRIVER_DEVICE,其实就是/dev/lirc。还有一个函数是hw_choose_driver,看看这个函数主要做什么,看看源码就知道初始化结构体struct hardware变量hw。
这个结构体如下:
hw缺省被设置为HW_DEFAULT,其实就是下面的缺省结构体:
我们再回到mode2.c, 继续往下看:
这一段是分析命令行,大部分我们可以略过,我们关注一下dmode和use_raw_access变量。 如果直接与设备交互(不通过struct hardware结构体),我们需要加入--raw到命令行中,另外我们不改变缺省的接收模式。
如果是直接模式, 我们首先打开设备,然后获取波形接收模式;否则通过struct hardware结构体控制设备,其实这两种方式殊途同归。
接下来便是从设备中读取数据,输出pulse或者space的波形宽度。