7:irda

From Linux Man Pages

Jump to: navigation, search
      irda - The Linux-IrDA protocol stack
      

Contents

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  informa-
      tion 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 get-
      sockopt(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.

RELATED

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

CATEGORY

Personal tools