irda

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
IRDA(7)			     Linux-IrDA man pages		      IRDA(7)



NAME
       irda - The Linux-IrDA protocol stack

SYNOPSIS
       #include <linux/irda.h>

       stream_s = socket(PF_INET, SOCK_STREAM, 0);
       seqpkt_s = socket(PF_INET, SOCK_SEQPACKET, 0);
       dgram_s = socket(PF_INET, SOCK_DGRAM, IRDAPROTO_UNITDATA);
       ultra_s = socket(PF_INET, SOCK_DGRAM, IRDAPROTO_ULTRA);

DESCRIPTION
       Linux-IrDA  is a complete implementation of the various IrDA protocols
       and IrDA drivers for Linux.

       The configuration of the low level of the IrDA stack (IrDA ports)  and
       the various IrDA drivers are described in irattach(8).

       The  usage  of  the  higher  layers  of the IrDA stack (IrCOMM, IrLPT,
       IrNET, IrLAN, OBEX...) are described in their respective man pages.

       The core of the Linux-IrDA protocol stack is composed  of  the  IrLAP,
       IrLMP,  IrTTP  and IrIAS protocols and is implemented as a kernel mod-
       ule. The programmer’s interface for the IrDA stack  is  socket  based.
       For more information on sockets, see socket(7).

       Note  that  higher level IrDA protocols may offer a different program-
       mer’s interface. For example IrCOMM offers a TTY based  interface  and
       OBEX is available through a user space library.

SOCKETS TYPE
       The Linux-IrDA socket interface offers 4 types of sockets:

       Stream socket - SOCK_STREAM, 0
	      Stream  sockets  provides	 a  reliable,  stream  oriented, full
	      duplex connection between two sockets on top of IrTTP,  similar
	      to TCP sockets. IrTTP guarantees that the data arrives in order
	      and manages flow contol, IrLAP retransmits lost packets.
	      Stream sockets does not preserve record boundaries.

       SeqPacket socket - SOCK_SEQPACKET, 0
	      SeqPacket sockets provides a reliable, datagram oriented,	 full
	      duplex  connection  between two sockets on top of IrTTP.	IrTTP
	      guarantees that the data arrives in order and manages flow con-
	      tol, IrLAP retransmits lost packets.
	      SeqPacket	 sockets  preserve record boundaries. Large datagrams
	      will be fragmented as needed.

       Datagram socket - SOCK_DGRAM, IRDAPROTO_UNITDATA
	      SeqPacket sockets provides a reliable, datagram oriented,	 full
	      duplex  connection  between two sockets on top of IrLMP.	There
	      is no guarantees that the data arrives in order and there is no
	      flow contol, however IrLAP retransmits lost packets.
	      Datagram	sockets	 preserve record boundaries. No fragmentation
	      is provided, datagrams larger than the IrDA link MTU are	trun-
	      cated or discarded.

       Ultra socket - SOCK_DGRAM, IRDAPROTO_ULTRA
	      Ultra  sockets  provides	a connectionless, unreliable datagram
	      packet service on top of IrLAP-Ultra.  Ultra datagrams are sent
	      and  receive  only  when no IrLAP connection is established and
	      otherwise discarded. They are always transmitted at 9600 bauds.
	      Datagrams may be lost, reordered, and there is no flow control.
	      Ultra sockets preserve record boundaries. No  fragmentation  is
	      provided,	 datagrams  larger than the Ultra MTU (382 bytes) are
	      truncated or discarded.

ADDRESS FORMAT
       An IrDA socket address is defined as a combination of an	 IrDA  inter-
       face  address  and  a  service  name.  Service names are automatically
       resolved to lsap through the IrIAP protocol.

	   struct sockaddr_irda {
	       sa_family_t sir_family;	 /* AF_IRDA */
	       __u8	   sir_lsap_sel; /* LSAP selector */
	       __u32	   sir_addr;	 /* Device address */
	       char	   sir_name[25]; /* Usually <service>:IrDA:TinyTP */
	   };

       sin_family is always set to  AF_IRDA.   sir_lsap_sel  is	 usually  not
       used.  sir_addr is the address of the peer and optional (and that case
       the first peer discoverd will be used).	sir_name is the service	 name
       of the socket.

SOCKET OPTIONS
       IrDA  sockets  supports some protocol specific socket options that can
       be set with setsockopt(2) and read  with	 getsockopt(2).	  The  socket
       option level for IrDA is SOL_IRLMP.

       Options that can be set:

       IRLMP_IAS_SET
	      Set an entry in the local IAS database.

       IRLMP_IAS_DEL
	      Delete an entry from the local IAS database.

       IRLMP_MAX_SDU_SIZE
	      Set maximum receive MTU for SeqPacket sockets.

       IRLMP_HINTS_SET
	      Set IrDA hint bits to be advertised to peers.

       IRLMP_HINT_MASK_SET
	      Set IrDA hint bits filter to be used when performing discovery.

       Options that can be get:

       IRLMP_ENUMDEVICES
	      Perform link level discovery and return the content of the dis-
	      covery log.

       IRLMP_MAX_SDU_SIZE
	      Get maximum receive MTU.

       IRLMP_IAS_GET
	      Get an entry from the local IAS database.

       IRLMP_IAS_QUERY
	      Query an entry in IAS database of a peer using IrIAP.

       IRLMP_WAITDEVICE
	      Block  until  a new device is discovered. Experimental feature,
	      use with caution.

AUTHOR
       Jean Tourrilhes - jt@hpl.hp.com

SEE ALSO
       irattach(8), irdadump(8), irnet(4), irnetd(8).



irda-utils			  2 May 2003			      IRDA(7)