input设备中driver上报和上层读到的不一致

月光宝盒 2012-09-21 09:05:43
DOWN时上报顺序如下:
513 input_report_abs(tp->input, ABS_X, xd);
514 input_report_abs(tp->input, ABS_Y, yd);

521 input_report_abs(tp->input, ABS_PRESSURE,1); EV_ABS, code, value);
522 input_report_key(tp->input, BTN_TOUCH, 1); EV_KEY ,code ,value
523 input_sync(tp->input); EV_SYN, SYN_REPORT, 0);


不是应该完全按照driver中的上报序列,依次读到如下event吗:
ABS_X-->ABS_Y --> ABS_PRESSURE --> BTN_TOUCH-->SYN_REPORT
但是在应用层去读这个input设备的event时为什么会有如下现象,打log发现:
ABS_X--> ABS_PRESSURE --> ABS_Y -->SYN_REPORT
event有些混乱,但使用是没有问题的,打过tp,sensor的log,都有类似的情况。
很是不解,请达人解惑。。。。

上层读取方法:
//waiting for touch

n = select(dev_fd+1, &rfds, NULL, NULL, &timeout);
...全文
347 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
deep_pro 2012-09-25
  • 打赏
  • 举报
回复
就是要你多调用几次input_sync啊
input_sync之间的事件无法保证不乱序,但是如果你每个input_sync之间只有1-2个事件,肯定不乱序
月光宝盒 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

本机通讯哪来丢包问题

使用input_sync强制同步应该能避免乱序
[/Quote]
已经调用了
input_sync(tp->input);
deep_pro 2012-09-23
  • 打赏
  • 举报
回复
本机通讯哪来丢包问题

使用input_sync强制同步应该能避免乱序
月光宝盒 2012-09-22
  • 打赏
  • 举报
回复
另外TCP,UDP不是网路编程用的吗,怎么在驱动中也用?
月光宝盒 2012-09-22
  • 打赏
  • 举报
回复
谢谢。
我是在android 上做的,你说的这两种方式,是可以自己指定的吗,如何指定?
系统中的input设备可以单独指定,还是指定所有input都使用这种方式了,
如按键,touchpanel,Gsensor,Lsensor等等
Wenxy1 2012-09-22
  • 打赏
  • 举报
回复
如果内核上报input events使用udp socket(netlink socket),那出现此现象正常,因为udp不保证可靠性和顺序,如果是tcp socket,那就不正常。
Wenxy1 2012-09-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

谢谢。
我是在android 上做的,你说的这两种方式,是可以自己指定的吗,如何指定?
系统中的input设备可以单独指定,还是指定所有input都使用这种方式了,
如按键,touchpanel,Gsensor,Lsensor等等
[/Quote]
参考:netlink socket 编程之 why & how

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧