展讯8810平台:mstar2133_jt_397_2key调试(input子系统)
2012-09-01 15:19
183 查看
涉及两个主要函数:
一、input_report_abs,触摸屏显示区域向上报点函数。
正如前面所说,中断来时调用了mstar_ts_poscheck()函数,
1)该函数里包涵了sy_rxdata(&cinfo, &pinfo);读取芯片数据点的数据通过&cinfo传回mstar_ts_poscheck()函数处理。
由于lcd屏为320*480,而TP屏可能是N(此处应为2048),与LCD屏进行点的校正转换如下:
cinfo->x1 = (cinfo->x1 * MS_TS_MSG21XX_X_MAX) / 2048;//接收点时处理
input_report_abs(tsdata->input, ABS_MT_POSITION_X, ((point_slot[i].posy)*320/480));//报点再处理
其中左右反向可把报点时480-去掉,如下两句:
input_report_abs(tsdata->input, ABS_MT_POSITION_X, ((480-point_slot[i].posy)*320/480));//左右反
input_report_abs(tsdata->input, ABS_MT_POSITION_X, ((point_slot[i].posy)*320/480));//左右正向.
2)触摸显示区域完整报点如下:
首先得设置参数:
input_set_abs_params(input, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
input_set_abs_params(input, ABS_MT_POSITION_X, 0, MS_TS_MSG21XX_X_MAX, 0, 0);
input_set_abs_params(input, ABS_MT_POSITION_Y, 0, MS_TS_MSG21XX_Y_MAX, 0, 0);
input_set_abs_params(input, ABS_MT_WIDTH_MAJOR, 0, 200, 0, 0);
然后输入完整流程:
input_report_key(tsdata->input, BTN_TOUCH, 1);//置1按下
input_report_abs(tsdata->input, ABS_MT_POSITION_X, ((point_slot[i].posy)*320/480));
input_report_abs(tsdata->input, ABS_MT_POSITION_Y, ((320-point_slot[i].posx)*480/320));
input_mt_sync(tsdata->input);//多组时使用此多组同步先再下面同步
input_sync(tsdata->input);//同步
注意:平时没数据时得提起,即
input_report_key(tsdata->input, BTN_TOUCH, 0);//置0提起,不然触屏无效.
触摸按键区域完整报点如下:
首先得注册按键:
__set_bit(KEY_MENU, input->keybit);
__set_bit(KEY_BACK, input->keybit);
然后输入完整流程:
input_report_key(tsdata->input, KEY_MENU, 1);置1按下
//input_report_abs()//不用报点
input_sync(tsdata->input);//同步
注意:同样平时没数据时得提起,即
input_report_key(tsdata->input, KEY_MENU, 0);置0提起,不然触屏无效.
上层软件会自动根据KEY_MENU去读取该值
一、input_report_abs,触摸屏显示区域向上报点函数。
正如前面所说,中断来时调用了mstar_ts_poscheck()函数,
1)该函数里包涵了sy_rxdata(&cinfo, &pinfo);读取芯片数据点的数据通过&cinfo传回mstar_ts_poscheck()函数处理。
由于lcd屏为320*480,而TP屏可能是N(此处应为2048),与LCD屏进行点的校正转换如下:
cinfo->x1 = (cinfo->x1 * MS_TS_MSG21XX_X_MAX) / 2048;//接收点时处理
input_report_abs(tsdata->input, ABS_MT_POSITION_X, ((point_slot[i].posy)*320/480));//报点再处理
其中左右反向可把报点时480-去掉,如下两句:
input_report_abs(tsdata->input, ABS_MT_POSITION_X, ((480-point_slot[i].posy)*320/480));//左右反
input_report_abs(tsdata->input, ABS_MT_POSITION_X, ((point_slot[i].posy)*320/480));//左右正向.
2)触摸显示区域完整报点如下:
首先得设置参数:
input_set_abs_params(input, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
input_set_abs_params(input, ABS_MT_POSITION_X, 0, MS_TS_MSG21XX_X_MAX, 0, 0);
input_set_abs_params(input, ABS_MT_POSITION_Y, 0, MS_TS_MSG21XX_Y_MAX, 0, 0);
input_set_abs_params(input, ABS_MT_WIDTH_MAJOR, 0, 200, 0, 0);
然后输入完整流程:
input_report_key(tsdata->input, BTN_TOUCH, 1);//置1按下
input_report_abs(tsdata->input, ABS_MT_POSITION_X, ((point_slot[i].posy)*320/480));
input_report_abs(tsdata->input, ABS_MT_POSITION_Y, ((320-point_slot[i].posx)*480/320));
input_mt_sync(tsdata->input);//多组时使用此多组同步先再下面同步
input_sync(tsdata->input);//同步
注意:平时没数据时得提起,即
input_report_key(tsdata->input, BTN_TOUCH, 0);//置0提起,不然触屏无效.
触摸按键区域完整报点如下:
首先得注册按键:
__set_bit(KEY_MENU, input->keybit);
__set_bit(KEY_BACK, input->keybit);
然后输入完整流程:
input_report_key(tsdata->input, KEY_MENU, 1);置1按下
//input_report_abs()//不用报点
input_sync(tsdata->input);//同步
注意:同样平时没数据时得提起,即
input_report_key(tsdata->input, KEY_MENU, 0);置0提起,不然触屏无效.
上层软件会自动根据KEY_MENU去读取该值
相关文章推荐
- 展讯8810平台:mstar2133_jt_397_2key调试(input子系统)
- 展讯8810平台:cy8c204_s3_cypress_3.95-2key调试(静态分配、中断请求、队列)
- 基于input子系统的sensor驱动调试(二)
- 展讯7731平台驱动调试总结(3)---- 部分调试要点
- 展讯7731平台驱动调试总结(2)---- 驱动配置部分
- 展讯7731平台驱动调试总结---- 引子
- linux耳机和耳机上按键的探测识别驱动原理【展讯8810平台】
- 想把基于展讯8810编译的contacts.apk安装到avd模拟器上进行调试, 不成功,why?
- 展讯7731平台驱动调试总结(1)---- 系统编译环境安装
- 展讯7731G 平台调试G-sensor方向
- g-sensor调试之input子系统的FUZZ 和 FLAT。
- linux摄像头驱动的拍照流程分析(针对展讯8810(ARM架构),android平台)
- 展讯8810平台的ANDROID/linux的GPIO物理地址与虚拟地址的变换
- 调试input子系统的几个关键地方
- 展讯7731平台驱动调试总结(2)---- 驱动配置部分
- 展讯智能机平台8810的编译脚本解析
- [android] 调试linux input子系统驱动的用户空间命令 getevent/sendevent
- Android距离传感调试与input子系统探究
- 卓胜微(MAXSCEND)芯片的cmmb驱动【ANDROID+展讯8810平台】
- 基于input子系统的sensor驱动调试(一)