I have a program that wait for an OBEX put from a palm, does some quick
processing and then OBEX puts another file back to the palm. Most of the
time this second put fails. If I wait 12seconds before it tries it again
it works. 12seconds happens to be the default link timeout, right? During
this time Linux is sending RR_CMD frames but the Palm never responds.
What *seems* to be happening is that Palm sends a RR_RSP that was never
asked for with a RR_CMD. RR frames also don't seem to fly between I_CMDs
and I_RSP, but that seems to be OK.
Here is the interesting part of the irdadump log:
...
02:43:24.989489 xid:cmd 0e09b617 > ffffffff S=6 s=4 (14)
02:43:24.989403 xid:rsp 0e09b617 < 8b741a44 S=6 s=3 Justin Huff hint=8220 [
PDA/Palmtop IrOBEX ] (28)
02:43:25.079472 xid:cmd 0e09b617 > ffffffff S=6 s=5 (14)
02:43:25.169481 xid:cmd 0e09b617 > ffffffff S=6 s=* chimborazo hint=4400 [
Computer LAN Access ] (26)
02:43:25.170134 snrm:cmd ca=fe pf=1 0e09b617 > 8b741a44 new-ca=a6 (32)
02:43:25.319397 ua:rsp ca=a6 pf=1 0e09b617 < 8b741a44 (31)
02:43:25.340225 rr:cmd > ca=a6 pf=1 nr=0 (2)
02:43:25.349571 rr:rsp < ca=a6 pf=1 nr=0 (2)
02:43:25.349692 i:cmd > ca=a6 pf=1 nr=0 ns=0 LM slsap=1b dlsap=00 CONN_CMD
(6)
02:43:25.359522 i:rsp < ca=a6 pf=1 nr=1 ns=0 LM slsap=00 dlsap=1b CONN_RSP
(6)
02:43:25.359750 i:cmd > ca=a6 pf=1 nr=1 ns=1 LM slsap=1b dlsap=00
GET_VALUE_BY_CLASS: "OBEX" "IrDA:TinyTP:LsapSel" (30)
02:43:25.379943 i:rsp < ca=a6 pf=1 nr=2 ns=1 LM slsap=00 dlsap=1b
GET_VALUE_BY_CLASS: Success Integer: 02 (15)
02:43:25.380193 i:cmd > ca=a6 pf=1 nr=2 ns=2 LM slsap=1b dlsap=00 DISC (6)
02:43:25.389727 rr:rsp < ca=a6 pf=1 nr=3 (2)
<=========??????
02:43:25.389842 i:cmd > ca=a6 pf=1 nr=2 ns=3 LM slsap=1c dlsap=02 CONN_CMD
TTP credits=0(7)
02:43:25.399710 i:rsp < ca=a6 pf=1 nr=4 ns=2 LM slsap=02 dlsap=1c CONN_RSP
TTP credits=0(7)
02:43:25.400361 i:cmd > ca=a6 pf=1 nr=3 ns=4 LM slsap=1c dlsap=02 TTP
credits=0
OBEX CONNECT len=7 ver=1.1 flags=0 mtu=1024 (12)
02:43:25.409597 i:rsp < ca=a6 pf=1 nr=5 ns=3 LM slsap=02 dlsap=1c TTP
credits=1
OBEX SUCCESS len=7 ver=1.0 flags=0 mtu=4072 (12)
02:43:25.411054 i:cmd > ca=a6 pf=1 nr=4 ns=5 LM slsap=1c dlsap=02 TTP
credits=1
OBEX PUT final=1 len=39 Name="mb_cmd.irx" Lenght=3 body-end=[3
bytes] (44)
02:43:25.569532 i:rsp < ca=a6 pf=1 nr=6 ns=4 LM slsap=02 dlsap=1c TTP
credits=1
OBEX SUCCESS len=3 (8)
02:43:25.569896 i:cmd > ca=a6 pf=1 nr=5 ns=6 LM slsap=1c dlsap=02 TTP
credits=1
OBEX DISC (8)
02:43:25.579431 i:rsp < ca=a6 pf=1 nr=7 ns=5 LM slsap=02 dlsap=1c TTP
credits=1
OBEX SUCCESS len=3 (8)
02:43:25.580524 i:cmd > ca=a6 pf=1 nr=6 ns=7 LM slsap=1c dlsap=02 DISC (6)
02:43:26.079471 rr:cmd > ca=a6 pf=1 nr=6 (2)
02:43:26.579462 rr:cmd > ca=a6 pf=1 nr=6 (2)
02:43:27.079460 rr:cmd > ca=a6 pf=1 nr=6 (2)
02:43:27.579520 rr:cmd > ca=a6 pf=1 nr=6 (2)
...
What about ignoring these 'rouge' frames (assuming that they are) in
irlap_state_nrm_p()? i.e. drop the frame if we got a RR_RSP but we don't
think the receiver is busy.
Ideas?
thanks!
--Justin
_______________________________________________
Linux-IrDA mailing list - [EMAIL PROTECTED]
http://www.pasta.cs.UiT.No/mailman/listinfo/linux-irda