在触摸屏驱动中,通常在probe函数中会调用input_set_abs_params给设备的input_dev结构体初始化 ,上报点input_mt_sync(input);
2012-06-27 14:01
441 查看
在触摸屏驱动中,通常在probe函数中会调用input_set_abs_params给设备的input_dev结构体初始化,这些input_dev的参数会在Android的EventHub.cpp中被读取。如上可知,如果我们的触摸屏想被当成多点屏被处理,只需要在驱动中给input_dev额外增加以下几个参数即可:
input_set_abs_params(mcs_data.input, ABS_MT_POSITION_X, pdata->abs_x_min, pdata->abs_x_max, 0, 0);
input_set_abs_params(mcs_data.input, ABS_MT_POSITION_Y, pdata->abs_y_min, pdata->abs_y_max, 0, 0);
input_set_abs_params(mcs_data.input, ABS_MT_TOUCH_MAJOR, 0, 15, 0, 0);
//相当于单点屏的ABX_PRESSURE
input_set_abs_params(mcs_data.input, ABS_MT_WIDTH_MAJOR, 0, 15, 0, 0);
//相当于单点屏的ABS_TOOL_WIDTH
由于多点触摸技术需要采集到多个点,然后再一起处理这些点,所以在软件实现中需要保证每一波点的准确性和完整性。因此,Linux内核提供了input_mt_sync(struct input_dev * input)函数。在每波的每个点上报后需要紧跟一句input_mt_sync(), 当这波所有点上报后再使用input_sync()进行同步。例如一波要上报3个点:
/* 上报点1*/
……………..
input_mt_sync(input);
/* 上报点2*/
……………..
input_mt_sync(input);
/* 上报点3*/
……………..
input_mt_sync(input);
input_sync(input);
注:即使是仅上报一个点的单点事件,也需要一次input_my_sync。
input_set_abs_params(mcs_data.input, ABS_MT_POSITION_X, pdata->abs_x_min, pdata->abs_x_max, 0, 0);
input_set_abs_params(mcs_data.input, ABS_MT_POSITION_Y, pdata->abs_y_min, pdata->abs_y_max, 0, 0);
input_set_abs_params(mcs_data.input, ABS_MT_TOUCH_MAJOR, 0, 15, 0, 0);
//相当于单点屏的ABX_PRESSURE
input_set_abs_params(mcs_data.input, ABS_MT_WIDTH_MAJOR, 0, 15, 0, 0);
//相当于单点屏的ABS_TOOL_WIDTH
由于多点触摸技术需要采集到多个点,然后再一起处理这些点,所以在软件实现中需要保证每一波点的准确性和完整性。因此,Linux内核提供了input_mt_sync(struct input_dev * input)函数。在每波的每个点上报后需要紧跟一句input_mt_sync(), 当这波所有点上报后再使用input_sync()进行同步。例如一波要上报3个点:
/* 上报点1*/
……………..
input_mt_sync(input);
/* 上报点2*/
……………..
input_mt_sync(input);
/* 上报点3*/
……………..
input_mt_sync(input);
input_sync(input);
注:即使是仅上报一个点的单点事件,也需要一次input_my_sync。
相关文章推荐
- linux spi设备驱动中probe函数何时被调用
- platform_driver_register,什么时候调用PROBE函数 注册后如何找到驱动匹配的设备
- linux触摸屏驱动分析,touchscreen, struct input_dev,基于TSC2007
- platform_driver_register,什么时候调用PROBE函数 注册后如何找到驱动匹配的设备
- input_set_abs_params
- (转)platform_driver_register,什么时候调用PROBE函数 注册后如何找到驱动匹配的设备
- platform_driver_register,什么时候调用PROBE函数 注册后如何找到驱动匹配的设备【转】
- linux触摸屏驱动分析,touchscreen, struct input_dev,基于TSC2007
- Linux驱动probe函数调用
- input_dev 结构体成员注释
- 设备驱动工程师之路——input子系统
- 内核启动时,设备及驱动初始化的实现
- 内核启动时,设备及驱动初始化的实现-非常好-不得不转
- Linux设备驱动--块设备(二)之相关结构体
- Linux Kernel设备驱动模型之驱动模型初始化
- 内核启动时,设备及驱动初始化的实现
- 嵌入式 probe()函数是什么时候被调用,设备和驱动是怎么联系起来的
- input_dev结构体分析
- dev下没有input 目录和event设备节点
- USB设备驱动之设备初始化(设备枚举)