ads7846驱动及android系统input输入子系统分析
2014-03-20 15:52
471 查看
1.首先说明驱动中对于触摸的定义,其平台驱动的私有数据如下:
解释:
x_max为4095表示x轴数据采样得到的最大值,同理y_max为y轴这个我们后面会使用到。
2.定义了如下的宏定义
其中的定义在后面会做解释,其中的OMAP3EVM_XRES 480 及OMAP3EVM_YRES 640在整个驱动中并未使用到。
3.从触摸芯片中得到的数据为采样值,得到采样值后会做如下处理:
其公式的计算原理由下图给出,
其算法可以使我们的触摸区域落在任何一个象限。这个计算的结果是使x y的值计算后全部落在[0,4095]。
其中驱动最终上传的值为x属于[0,4095] y属于[0,4095].
以下分析属于android input子系统:
1.android4.0.3,他的touchscreen是需要配置文件的,在我们的系统上面为文件:/system/usr/idc/qwerty.idc
其内容如下:
其中的宏定义会被后面的代码使用到。
2.代码frameworks/base/services/input/InputReader.cpp
这个文件会去读取刚才的配置文件,它会根据上面的配置文件确定我们的设备类型是touchScreen及触摸屏,而里面被注释掉的pointer是指鼠标。
3.代码文件frameworks/base/services/input/InputReader.cpp
关键代码如下:
其中的in.x in.y即底层驱动上传上来的x,y的绝对坐标值。x,y为最终给到ui的坐标值。pressure为压力值,size为面积值。
可以看到android系统本身的input子系统对上传的值会做重新计算,而且会根据屏幕是否旋转重新计算定位。
数据转换为x[0,4096] --> 屏幕的x[0,480] y[0,4096] --> 屏幕的y[0,640].
从上述分析中我们得到屏幕校准做如下方案的假设。
1.首先查找到上述算法中的参数定义值。
2.这些参数由原来的方式修改成读取文件(后面说明这个文件的由来)。
3.编写apk(其中zte也使用的这种方式,有apk在google应用商店中有发布)。这个文件的两个用途其一:出现图形界面进行点击。其二,通过校准算法计算得到上面的校准参数值并保存到文件中。
解释:
x_max为4095表示x轴数据采样得到的最大值,同理y_max为y轴这个我们后面会使用到。
2.定义了如下的宏定义
其中的定义在后面会做解释,其中的OMAP3EVM_XRES 480 及OMAP3EVM_YRES 640在整个驱动中并未使用到。
3.从触摸芯片中得到的数据为采样值,得到采样值后会做如下处理:
其公式的计算原理由下图给出,
其算法可以使我们的触摸区域落在任何一个象限。这个计算的结果是使x y的值计算后全部落在[0,4095]。
其中驱动最终上传的值为x属于[0,4095] y属于[0,4095].
以下分析属于android input子系统:
1.android4.0.3,他的touchscreen是需要配置文件的,在我们的系统上面为文件:/system/usr/idc/qwerty.idc
其内容如下:
其中的宏定义会被后面的代码使用到。
2.代码frameworks/base/services/input/InputReader.cpp
这个文件会去读取刚才的配置文件,它会根据上面的配置文件确定我们的设备类型是touchScreen及触摸屏,而里面被注释掉的pointer是指鼠标。
3.代码文件frameworks/base/services/input/InputReader.cpp
关键代码如下:
其中的in.x in.y即底层驱动上传上来的x,y的绝对坐标值。x,y为最终给到ui的坐标值。pressure为压力值,size为面积值。
可以看到android系统本身的input子系统对上传的值会做重新计算,而且会根据屏幕是否旋转重新计算定位。
数据转换为x[0,4096] --> 屏幕的x[0,480] y[0,4096] --> 屏幕的y[0,640].
从上述分析中我们得到屏幕校准做如下方案的假设。
1.首先查找到上述算法中的参数定义值。
2.这些参数由原来的方式修改成读取文件(后面说明这个文件的由来)。
3.编写apk(其中zte也使用的这种方式,有apk在google应用商店中有发布)。这个文件的两个用途其一:出现图形界面进行点击。其二,通过校准算法计算得到上面的校准参数值并保存到文件中。
相关文章推荐
- linux input输入子系统分析《三》:S3C2440的触摸屏驱动实例
- Android核心分析---inputAndroid输入系统之输入路径详解
- input子系统学习笔记九 evdev输入事件驱动分析
- linux驱动—input输入子系统—The simplest example(一个最简单的实例)分析(1)
- linux 输入子系统(2)----简单实例分析系统结构(input_dev层)
- 2.输入系统驱动(2)-input系统框架层分析
- android input子系统分析---驱动层
- Android输入子系统之InputDispatcher分发键盘消息过程分析
- Android Input输入子系统分析
- 2.输入系统驱动(4)-内核输入子系统原理分析
- android系统中input驱动整体框架分析
- input输入子系统驱动分析
- input子系统学习笔记九 evdev输入事件驱动分析
- linux input输入子系统分析《三》:S3C2440的触摸屏驱动实例
- linux input输入子系统分析《三》:S3C2440的触摸屏驱动实例
- android系统中input驱动整体框架分析
- linux input输入子系统分析《二》:s3c2440的ADC简单驱动实例分析
- input子系统学习笔记九 evdev输入事件驱动分析
- linux驱动—input输入子系统—The simplest example(一个最简单的实例)分析(2)
- linux input输入子系统分析《三》:S3C2440的触摸屏驱动实例