Man Linux: Main Page and Category List

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 module.
       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
       programmer’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
              contol, 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  truncated
              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 interface
       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
              discovery 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).