On Tue, Feb 9, 2010 at 12:25 AM, Ping Cheng <[email protected]> wrote:
> On Mon, Feb 8, 2010 at 9:15 PM, Chris Bagwell <[email protected]> wrote:
>> On Mon, Feb 8, 2010 at 9:43 PM, Jason Childs
>> <[email protected]> wrote:
>>
>> Thanks for feedback.  I was hoping to hear about your experience.
>> I've added printk's and looks good to me as well; at least it seems I
>> can't reproduce the same behaviors anymore.  I guess I'll switch back
>> to x driver for some more debugging.
>
> Tracking the difference between kernel and X when jump appears would
> help us figure out what might be the root cause.
>

I've caught it in the act in log files though still haven't issolated
issue yet.  Here is an example of me lifting two fingers up, putting
back down and starting an upwards swipe.  Kernel logs show good X/Y
values in all cases but in one case X shows invalid Y value for
channel 1 (second finger).

My initial guess is its related to sending multiple out-of-proximity
events or something similar.  that firstFinger/secondFinger logic
seems suspecious.  Since I do not know yet how X buffers old data, I
could use any hints you have from here.  There are rounding type
errors between what kernel sends and X prints out and I'm not sure
where that is occuring yet and is probably related to were bug is.

Sorry for such verbose log info; especially with most being personal
printk()'s.  Hopefully, it gives someone someone some ideas.
Interesting examples of lines are:

X/Y values kernel wants to send.  tools=333 is 1st finger and
tools=334 is seoncd finger.

Feb  9 20:15:35 localhost kernel: wacom_bpt_finger_in: x=185 y=272 pressure=70 i
d=3, tools=333

X/Y values Xorg recieves.  channel=0 is 1st finger, channel=1 is second finger.

(II) /dev/input/event6 (wcmEvent): channel = 1
(II) /dev/input/event6 (wcmEvent): c=1 i=3 t=2 s=2 x=261 y=171 b=0 p=181 rz=0 tx
=0 ty=0 aw=0 rw=0 t=0 df=0 px=0 st=1121227792 cs=4

Now some detailed log file parts:

1) Send two fingers to X

eb  9 20:15:35 localhost kernel: wacom_bpt_touch_in: data[3]=ffffff80 data[12]=
ffffff81 firstFinger=1 secondFigner=1
Feb  9 20:15:35 localhost kernel: wacom_bpt_finger_in: x=185 y=272 pressure=70 i
d=3, tools=333
Feb  9 20:15:35 localhost kernel: wacom_bpt_finger_in: x=261 y=272 pressure=87 i
d=3, tools=334
Feb  9 20:15:35 localhost kernel: wacom_bpt_touch_in: end data[3]=ffffff80 data[
12]=ffffff81 firstFinger=1 secondFigner=1

2) X parses them

II) /dev/input/event6 (usbParseChannel): 5 events received
(II) /dev/input/event6 (usbParseChannel): 5 events received
(II) /dev/input/event6 (wcmEvent): channel = 0
(II) /dev/input/event6 (wcmEvent): c=0 i=3 t=2 s=0 x=185 y=272 b=0 p=196 rz=0 tx
=0 ty=0 aw=0 rw=0 t=0 df=0 px=1 st=1121227770 cs=4
(II) /dev/input/event6 (wcmFilterCoord): common->wcmRawSample = 4
(II) /dev/input/event6 (wcmCheckSuppress): level = 2 return value = 1
(II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmTouchFilter): channel = 0, mode =
8, ds[0].x = 182, ds[0].y = 254, ds[1].x = 257, ds[1].y = 171, ds[0].sample = 11
21227770, ds[1].sample = 1121227755, wcmGestureState[0].sample = 1121227674, wcm
GestureState[1].sample = 1121227655, wcmGestureFingers = 2 ds[0].proximity = tru
e, ds[1].proximity = true
(II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmFingerScroll):
(II) /dev/input/event6 (usbParseEvent):
(II) /dev/input/event6 (usbParseEvent):
(II) /dev/input/event6 (usbParseEvent):
(II) /dev/input/event6 (usbParseChannel): 3 events received
(II) /dev/input/event6 (usbParseChannel): 3 events received
(II) /dev/input/event6 (usbParseChannel): USB Touch second finger detected 14e (
value=0)
(II) /dev/input/event6 (wcmEvent): channel = 1
(II) /dev/input/event6 (wcmEvent): c=1 i=3 t=2 s=2 x=261 y=171 b=0 p=181 rz=0 tx
=0 ty=0 aw=0 rw=0 t=0 df=0 px=0 st=1121227792 cs=4

3) Kernel sends out of proximity for both fingers when I lift them:

Feb  9 20:15:35 localhost kernel: wacom_bpt_irq: prox=0 touchOut=1 id[1]=3 touch
InProx=1
Feb  9 20:15:35 localhost kernel: wacom_bpt_touch_out: id=3, tools=333
Feb  9 20:15:35 localhost kernel: wacom_bpt_touch_out: id=3, tools=334

4) X process out of proximity events for both fingers:

(II) /dev/input/event6 (usbParseEvent):
(II) /dev/input/event6 (usbParseChannel): 4 events received
(II) /dev/input/event6 (usbParseChannel): 4 events received
(II) /dev/input/event6 (usbParseChannel): USB Touch detected 14d (value=0)
(II) /dev/input/event6 (wcmEvent): channel = 0
(II) /dev/input/event6 (wcmEvent): c=0 i=3 t=2 s=0 x=185 y=272 b=0 p=196 rz=0 tx
=0 ty=0 aw=0 rw=0 t=0 df=0 px=0 st=1121227792 cs=4
(II) /dev/input/event6 (wcmFilterCoord): common->wcmRawSample = 4
(II) /dev/input/event6 (wcmCheckSuppress): level = 2 return value = 1
(II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmTouchFilter): channel = 0, mode =
8, ds[0].x = 184, ds[0].y = 263, ds[1].x = 257, ds[1].y = 171, ds[0].sample = 11
21227792, ds[1].sample = 1121227771, wcmGestureState[0].sample = 1121227770, wcm
GestureState[1].sample = 1121227755, wcmGestureFingers = 2
ds[0].proximity = false, ds[1].proximity = true
(II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmFingerScroll):
(II) /dev/input/event6 (usbParseEvent):
(II) /dev/input/event6 (usbParseEvent):
(II) /dev/input/event6 (usbParseEvent):
(II) /dev/input/event6 (usbParseChannel): 3 events received
(II) /dev/input/event6 (usbParseChannel): 3 events received
(II) /dev/input/event6 (usbParseChannel): USB Touch second finger
detected 14e (value=0)
(II) /dev/input/event6 (wcmEvent): channel = 1
(II) /dev/input/event6 (wcmEvent): c=1 i=3 t=2 s=2 x=261 y=171 b=0
p=181 rz=0 tx=0 ty=0 aw=0 rw=0 t=0 df=0 px=0 st=1121227792 cs=4
(II) /dev/input/event6 (wcmFilterCoord): common->wcmRawSample = 4
(II) /dev/input/event6 (wcmCheckSuppress): level = 2 return value = 1
(II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmTouchFilter): channel =
1, mode = 8, ds[0].x = 184, ds[0].y = 263, ds[1].x = 260, ds[1].y =
171, ds[0].sample = 1121227792, ds[1].sample = 1121227792,
wcmGestureState[0].sample = 1121227770, wcmGestureState[1].sample =
1121227755, wcmGestureFingers = 2 ds[0].proximity = false,
ds[1].proximity = false

5) Kernel sends new in proxity event for 1st finger and out of
proximity event for finger 2.

Feb  9 20:15:36 localhost kernel: wacom_bpt_irq: prox=1 touchOut=0 id[1]=3 touch
InProx=1
Feb  9 20:15:36 localhost kernel: wacom_bpt_touch_in: tool[0]=333,
id[0]=3 tool[1]=334 id[1]=1
Feb  9 20:15:36 localhost kernel: wacom_bpt_touch_in: data[3]=ffffff80
data[12]=0 firstFinger=1 secondFigner=1
Feb  9 20:15:36 localhost kernel: wacom_bpt_finger_in: x=136 y=267
pressure=89 id=3, tools=333
Feb  9 20:15:36 localhost kernel: wacom_bpt_touch_out: id=3, tools=334
Feb  9 20:15:36 localhost kernel: wacom_bpt_touch_in: end
data[3]=ffffff80 data[12]=0 firstFinger=1 secondFigner=0

6) X process 1st finger but not second finger proximity out:

(II) /dev/input/event6 (usbParseEvent):
(II) /dev/input/event6 (usbParseChannel): 7 events received
(II) /dev/input/event6 (usbParseChannel): 7 events received
(II) /dev/input/event6 (usbParseChannel): USB Touch detected 14d (value=1)
(II) /dev/input/event6 (wcmEvent): channel = 0
(II) /dev/input/event6 (wcmEvent): c=0 i=3 t=2 s=0 x=136 y=269 b=0
p=89 rz=0 tx=0 ty=0 aw=0 rw=0 t=0 df=0 px=1 st=1121228515 cs=0
(II) /dev/input/event6 (wcmEvent): initialize Channel data.
(II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmTouchFilter): channel =
0, mode = 0, ds[0].x = 136, ds[0].y = 269, ds[1].x = 260, ds[1].y =
171, ds[0].sample = 1121228515, ds[1].sample = 1121227792,
wcmGestureState[0].sample = 1121227770, wcmGestureState[1].sample =
1121227755, wcmGestureFingers = 2 ds[0].proximity = true,
ds[1].proximity = false

7) Interesting note for X.   Probably because last out-of-proxity
event was duplicate?  Or could be related to next step.

(II) /dev/input/event6 (usbParseEvent):
(II) /dev/input/event6 (usbParseEvent):
(II) /dev/input/event6 (usbParseEvent): Wacom Bamboo P&T 4x5 Touch:
dropping empty event for serial 2
(II) /dev/input/event6 (wcmReadPacket): fd=25
(II) /dev/input/event6 (wcmReadPacket): pos=0 remaining=256
(II) /dev/input/event6 (wcmReadPacket): buffer has 96 bytes

8) kernel send previous 1 finger value again.  I don't really see what changed.

Feb  9 20:15:36 localhost kernel: wacom_bpt_irq: prox=1 touchOut=1
id[1]=1 touchInProx=1
Feb  9 20:15:36 localhost kernel: wacom_bpt_touch_in: tool[0]=333,
id[0]=3 tool[1]=334 id[1]=1
Feb  9 20:15:36 localhost kernel: wacom_bpt_touch_in: data[3]=ffffff80
data[12]=0 firstFinger=1 secondFigner=0
Feb  9 20:15:36 localhost kernel: wacom_bpt_finger_in: x=136 y=267
pressure=89 id=3, tools=333
Feb  9 20:15:36 localhost kernel: wacom_bpt_touch_in: end
data[3]=ffffff80 data[12]=0 firstFinger=1 secondFigner=0

9) Looks like X gets this finger:

II) /dev/input/event6 (wcmEvent): channel = 0
(II) /dev/input/event6 (wcmEvent): c=0 i=3 t=2 s=0 x=136 y=268 b=0
p=89 rz=0 tx=0 ty=0 aw=0 rw=0 t=0 df=0 px=1 st=1121228534 cs=1
(II) /dev/input/event6 (wcmFilterCoord): common->wcmRawSample = 4
(II) /dev/input/event6 (wcmCheckSuppress): level = 2 return value = 0
(II) /dev/input/event6 (wcmReadPacket): fd=25

10) Kernel sends 1&2 finger events.  1st finger is similar to first
finger from above.  This is first real 2nd finger send since I put my
fingers down. 216/250 look OK.

Feb  9 20:15:36 localhost kernel: wacom_bpt_irq: prox=1 touchOut=1
id[1]=1 touchInProx=1
Feb  9 20:15:36 localhost kernel: wacom_bpt_touch_in: tool[0]=333,
id[0]=3 tool[1]=334 id[1]=3
Feb  9 20:15:36 localhost kernel: wacom_bpt_touch_in: data[3]=ffffff80
data[12]=ffffff80 firstFinger=1 secondFigner=0
Feb  9 20:15:36 localhost kernel: wacom_bpt_finger_in: x=137 y=250
pressure=152 id=3, tools=333
Feb  9 20:15:36 localhost kernel: wacom_bpt_finger_in: x=216 y=250
pressure=164 id=3, tools=334
Feb  9 20:15:36 localhost kernel: wacom_bpt_touch_in: end
data[3]=ffffff80 data[12]=ffffff80 firstFinger=1 secondFigner=1

11) X processes 1st finger and 2nd finger.  Second finger/channel 1 Y
value is not right (its zero).  X value matches.

(II) /dev/input/event6 (usbParseChannel): 4 events received
(II) /dev/input/event6 (usbParseChannel): 4 events received
(II) /dev/input/event6 (wcmEvent): channel = 0
(II) /dev/input/event6 (wcmEvent): c=0 i=3 t=2 s=0 x=136 y=250 b=0
p=89 rz=0 tx=0 ty=0 aw=0 rw=0 t=0 df=0 px=1 st=1121228554 cs=1
(II) /dev/input/event6 (wcmFilterCoord): common->wcmRawSample = 4
(II) /dev/input/event6 (wcmCheckSuppress): level = 2 return value = 1
(II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmTouchFilter): channel =
0, mode = 1, ds[0].x = 136, ds[0].y = 264, ds[1].x = 260, ds[1].y =
171, ds[0].sample = 1121228554, ds[1].sample = 1121227792,
wcmGestureState[0].sample = 1121228515, wcmGestureState[1].sample =
1121227755, wcmGestureFingers = 1 ds[0].proximity = true,
ds[1].proximity = false

II) /dev/input/event6 (usbParseEvent):
(II) /dev/input/event6 (usbParseEvent):
(II) /dev/input/event6 (usbParseChannel): 5 events received
(II) /dev/input/event6 (usbParseChannel): 5 events received
(II) /dev/input/event6 (usbParseChannel): USB Touch second finger
detected 14e (value=1)
(II) /dev/input/event6 (wcmEvent): channel = 1
(II) /dev/input/event6 (wcmEvent): c=1 i=3 t=2 s=2 x=216 y=0 b=0 p=164
rz=0 tx=0 ty=0 aw=0 rw=0 t=0 df=0 px=1 st=1121228555 cs=0
(II) /dev/input/event6 (wcmEvent): initialize Channel data.

Chris

------------------------------------------------------------------------------
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to