Documentation/Maemo 5 Developer Guide/Using Connectivity Components/Introduction

= Introduction = For communications with the outside world, the maemo platform provides frameworks ranging from Bluetooth file transfer to making video calls. This chapter goes through the components important for the maemo application developer.

Acquiring Internet Access
LibConIC is the library that must be used by all applications wanting to use Internet connectivity. It takes care of e.g. scanning of available WLAN networks, and setting up the IP network after the user has selected a connection. LibConIC API works together with the maemo connectivity daemon (ICd) that handles both WLAN and Bluetooth connections. LibConIC and ICd are described more deeply in section [localhost#sec:maemo_connectivity 9.2].

VoIP, Instant Messaging and Presence
The Telepathy communications framework provides a unified API for presence, messaging and voice/video calls. The list of supported protocols is long: IRC, ICQ, XMPP (Jabber), SIP, MSN etc. The connection manager of Telepathy is expandable, and uses D-BUS for communication. Telepathy usage in maemo is described in more detail in section [localhost#sec:implementing_custom_connection_managers 9.3].

Bluetooth
A high level API for Bluetooth is offered as part of the maemo connectivity subsystem. Using its D-BUS API, a program can find remote Bluetooth devices, such as phones, send files over OBEX object push, and create pairings with remote devices. For these tasks, it is recommended for an application to use this framework, as it not only has a lot simpler API, but makes the applications look and behave consistently.

For Bluetooth operations that are not supported by the maemo connectivity framework, maemo includes a lower level BlueZ D-BUS API, which is also the main Bluetooth interface for all Linux systems. The BlueZ API has features for practically all aspects of Bluetooth systems, and as a consequence is a lot more complex than the higher level Maemo Connectivity subsystem's offerings.

Section [localhost#sec:maemo_connectivity 9.2] describes the high level D-BUS API and its use. More information about the BlueZ API can be found at web site. The maemo-example package also includes example code about both libraries.

OBEX
Bluetooth devices use OBEX protocol to exchange data objects. Maemo includes libraries to help working with this protocol. For OBEX FTP, the easiest way is to use GnomeVFS's OBEX backend. For more granular control, there is libgwobex, which GnomeVFS uses in its implementation, and an even more low level interface can be found in the OpenOBEX library.

More about GnomeVFS is written in the GnomeVFS section of this document. Section [localhost#sec:maemo_connectivity 9.2] contains separate subsections for libgwobex and OpenOBEX. For libgwobexAPI, see Maemo API Reference. Lots of information about OpenOBEX can be found at the project's web site.