Subject: Re: IrDA?
To: None <jmarin@pyy.jmp.fi>
From: Pete Bentley <peter.bentley@nomura.co.uk>
List: current-users
Date: 01/28/1999 14:45:47
jmarin@pyy.jmp.fi wrote:
> Well, don't the UART chips buffer the incoming data as always (when an
> UART is involved, like in my case)?  Maybe this isn't enough (haven't
> studied the IrDA specs too closely - just enough to notice that the
> protocol was pretty complex when all you wanted to do was to transfer
> bytes from device A to device B (which I am doing using my own protocol
> now)).

It's been a while, but from memory the timeout that bit me was one
during neighbour discovery...there's a short-ish time window you have to
hit (100ms?) with a reply packet or it might not work. 100ms is quite a
long time in the overall scheme of things... unless, say, you're running
in user space and get hit by a bout of paging at an inopportune moment.

I guess once you have a connection established, the ACK timeouts are
longer, so as you say UART buffering will probably save you from many
scheduling issues.

> > As far as I know the
> > Linux people are going for a kernel implementation, so that's not going
> > to be much use to anyone else.
> 
> That's how it seems.

Actually, I had a very quick peek.  Looks like they've done some of the
low level stuff as a line discipline (an idea which occured to me, but
got ruled out as I was doing my prototype work under Solaris :)  
Depending on where they've drawn their user space/kernel space line it
might well be worth having a look. It may turn out that implementing the
line discipline in *BSD isn't so hard but lets us leverage their higher
level stuff (they claim to have IrLAN and the object server stuff
working... but they also mention a socket interface, so maybe they
actually do have the main protocols in the kernel).

> > * A hardware 'driver' layer to program whatever serial to IR device
> > you're using
> 
> This is simple when you're using something like the Tekram IrMate 210
> (an external IrDA transceiver that connects to a standard serial port).

It varies from dongle to dongle.  Some just need RTS/CTS waggling to
flip between a few speeds, others have a "programming mode" you set them
into and then you set up a few registers to select the speed, modulation
type etc (I think most 16550 motherboard IR headers fall into this
category).  Back when I was doing it, the only dongle I could get
without sending off to the States was an Airport 1000, which was a bit
of a git to program and didn't seem to like the SPARC serial ports much
(maybe they couldn't supply enough current).  It may also be because I
was trying to negotiate an uncommon speed (the max speed the SPARC and
Psion had in common was 38400...most IrDA seems to be geared to 115200).

Pete.