Infrared provides a means for short-range communications between devices, with standards defined by the Infrared Data Association (IrDA).
Applications typically use device discovery to find other IR devices in range, service queries to discover whether the found device supports the required service, and then use either a reliable or an unreliable data protocol to transfer data. Symbian supports both slow infrared (SIR), at speeds of 9.6 kbps to 115.2 kbps, and fast infrared (FIR), at speeds of 0.576 Mbps to 4Mbps.
Like many other comms protocols, infrared can be thought of as a stack of layers providing different levels of functionality. The layers of interest are as follows:
- Link Management Multiplexer (LM-MUX): provides infrared communications equivalent to an unreliable datagram service.
- IrDA Tiny TP: provides infrared communications equivalent to a reliable packet service.
- Link Management Information Access Service (LM-IAS): gets information about a remote device’s capabilities.
- Link Access Protocol (IrLAP): provides low-level control of the infrared link, such as baud rate.
The IrDA stack is implemented by Symbian OS in a plugin to the sockets server. The layers of the stack are accessed through the various abstractions that the sockets API provides:
- IrDA, IrTinyTP and IrMUX can be accessed through the generic socket interface RSocket.
- IrLAP options can be set through options on such sockets.
- LM-IAS is accessed through the sockets RNetDatabase class.
Above these basic sockets layers, further higher-level infrared services are available:
- IrOBEX v1.2 (IrDA object exchange): OBEX, a protocol to exchange objects such as business cards, has already been mentioned in connection with Bluetooth. The same APIs, CObexClient and CObexServer, can be used with infrared as the transport.
- IrTRANP v1.0: this is a protocol for transferring pictures from a digital camera over infrared. The CTranpSession class encapsulates the behavior for receiving a picture from a peer device.
- IrCOMM v1.0: provides an emulation of a serial port over infrared. It is implemented as a plugin to the serial communications server, and is accessed through the generic serial interfaces, such as RComm.