Note: This is a message I posted to the irda-users mailing list last night after working on Palantir CE for a bit. I'm re-posting it here just in case anyone with IrDA knowledge can provide some insight (Chimaera, you there?)
Greetings! First off, I would like to say thanks to Jean Tourrilhes and
Dag Brattli for Linux-IrDA and OpenOBEX. I have been using this
software for a unique application and I could not have done it without
their work.
I am running Linux-IrDA and OpenOBEX on an Empeg MP3 player (also known
as the Rio Car
http://www.riocar.org/). The Empeg uses an ARM processor
and a custom kernel built from 2.2. I have written an IrOBEX listener
to recieve an OBEX object from a Palm device that contains a list of
songs to insert into the current playlist. Details and source code for
my application can be found at:
http://cushman.net/projects/palantir/
I have been using the default Palm libraries to send OBEX objects to the
Empeg, and it has been working flawlessly. My problem begins while I am
trying to rewrite my Palm application for the PocketPC platform. I have
copied source code for a simple OBEX sender from an article at Pocket PC
Developer Network:
http://www.pocketpcdn.com/articles/obex.html
The code I am using is the second example, called code2.cpp
http://www.pocketpcdn.com/articles/samples/obex/code2.cpp
When run, this code hangs at trying to initiate an OBEX session (I
believe). My kernel is a variant of 2.2 that has been custom-built for
the Empeg. I cannot upgrade to a newer version, but I do not believe
that my problem lies with Linux-IrDA. I can successfully transmit large
files in the same session and get the proper OBEX responses.
Here is an irdadump of the session with the PocketPC:
04:23:36.650314 xid:cmd ffffffff < 00001482 S=6 s=0 (14)
04:23:36.830231 xid:cmd ffffffff < 00001482 S=6 s=2 (14)
04:23:36.910240 xid:cmd ffffffff < 00001482 S=6 s=3 (14)
04:23:37.000248 xid:cmd ffffffff < 00001482 S=6 s=4 (14)
04:23:37.080392 xid:cmd ffffffff < 00001482 S=6 s=5 (14)
04:23:37.080909 xid:rsp 80389c4d > 00001482 S=6 s=5 Linux hint=8420 [
Computer I
rOBEX ] (22)
04:23:37.130235 xid:rsp 00001482 < 80389c4d S=6 s=5 Linux hint=8420 [
Computer I
rOBEX ] (22)
04:23:37.230306 xid:cmd ffffffff < 00001482 S=6 s=* Pocket_PC hint=8220
[ PDA/Pa
lmtop IrOBEX ] (26)
04:23:37.780517 snrm:cmd ca=fe pf=1 80389c4d < 00001482 new-ca=d4 (32)
04:23:37.781040 ua:rsp ca=d4 pf=1 80389c4d > 00001482 (31)
04:23:37.820254 ua:rsp ca=d4 pf=1 00001482 < 80389c4d (31)
04:23:37.910406 rr:cmd < ca=d4 pf=1 nr=0 (2)
04:23:37.910944 rr:rsp > ca=d4 pf=1 nr=0 (2)
04:23:37.920326 rr:rsp < ca=d4 pf=1 nr=0 (2)
04:23:37.930578 i:cmd < ca=d4 pf=1 nr=0 ns=0 LM slsap=03 dlsap=00
CONN_CMD (6)
04:23:37.931217 i:rsp > ca=d4 pf=1 nr=1 ns=0 LM slsap=00 dlsap=03
CONN_RSP (6)
04:23:37.940336 i:rsp < ca=d4 pf=1 nr=1 ns=0 LM slsap=00 dlsap=03
CONN_RSP (6)
04:23:37.950708 i:cmd < ca=d4 pf=1 nr=1 ns=1 LM slsap=03 dlsap=00
GET_VALUE_BY_
CLASS: "OBEX" "IrDA:TinyTP:LsapSel" (30)
04:23:37.951497 i:rsp > ca=d4 pf=1 nr=2 ns=1 LM slsap=00 dlsap=03
GET_VALUE_BY_
CLASS: Success Integer: 24 (15)
04:23:37.960365 i:rsp < ca=d4 pf=1 nr=2 ns=1 LM slsap=00 dlsap=03
GET_VALUE_BY_
CLASS: Success Integer: 24 (15)
04:23:37.970565 i:cmd < ca=d4 pf=1 nr=2 ns=2 LM slsap=03 dlsap=00 DISC (6)
04:23:37.971148 rr:rsp > ca=d4 pf=1 nr=3 (2)
04:23:37.980331 rr:rsp < ca=d4 pf=1 nr=3 (2)
04:23:37.991451 i:cmd < ca=d4 pf=1 nr=2 ns=3 LM slsap=01 dlsap=24
CONN_CMD TTP
credits=0(7)
04:23:37.992140 rr:rsp > ca=d4 pf=1 nr=4 (2)
04:23:38.000338 rr:rsp < ca=d4 pf=1 nr=4 (2)
04:23:38.020422 rr:cmd < ca=d4 pf=1 nr=2 (2)
04:23:38.020927 i:rsp > ca=d4 pf=1 nr=4 ns=2 LM slsap=24 dlsap=01
CONN_RSP TTP
credits=0(7)
04:23:38.030368 i:rsp < ca=d4 pf=1 nr=4 ns=2 LM slsap=24 dlsap=01
CONN_RSP (7)
04:23:38.040490 rr:cmd < ca=d4 pf=1 nr=3 (2)
04:23:38.041019 rr:rsp > ca=d4 pf=1 nr=4 (2)
04:23:38.050307 rr:rsp < ca=d4 pf=1 nr=4 (2)
04:23:38.070413 rr:cmd < ca=d4 pf=1 nr=3 (2)
04:23:38.070955 rr:rsp > ca=d4 pf=1 nr=4 (2)
04:23:38.080307 rr:rsp < ca=d4 pf=1 nr=4 (2)
04:23:38.100406 rr:cmd < ca=d4 pf=1 nr=3 (2)
04:23:38.100938 rr:rsp > ca=d4 pf=1 nr=4 (2)
04:23:38.110328 rr:rsp < ca=d4 pf=1 nr=4 (2)
04:23:38.130420 rr:cmd < ca=d4 pf=1 nr=3 (2)
04:23:38.130960 rr:rsp > ca=d4 pf=1 nr=4 (2)
04:23:38.140858 rr:rsp < ca=d4 pf=1 nr=4 (2)
The last three lines repeat until the connection is broken (by shutting
down the application on the PocketPC or breaking the physical connection).
It looks like the OBEX listener and the PocketPC are "arguing" with the
last three lines. I could not find any information (looked through
mailing lists, viewed header files for irdadump, googled) about the
format of irdadump. What do those last lines mean? If someone could
point me to a reference for values in the output of irdadump, I would
appreciate it. I am particularly interested in:
Definitions of xid, snrm, ua, rr, i (are these packet types?)
I am guessing cmd and rsp are command and response
Definitions of ca= pf= nr= (ca is Connection Address?)
Values of nr in rr:rsp and rr:cmd