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

The following code examples are used in this chapter:

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.


[edit] Acquiring Internet Access

All applications must use the LibConIC library for Internet connectivity. LibConIC takes care of e.g. scanning of available WLAN networks and sets up the IP network after the user selects a connection. The LibConIC API works together with the maemo connectivity daemon (ICd) that handles both WLAN and Bluetooth connections. For more information on LibConIC and ICd, see section Maemo Connectivity.

[edit] 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 Implementing Custom Connection Managers.

[edit] 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, for example, phones, send files over OBEX object push, and create pairings with remote devices. For these tasks, this framework is recommended because it has a much simpler API and 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 on 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 Maemo Connectivity describes the high level D-Bus API and its use. For more information on the BlueZ API, see the BlueZ web site. The maemo example package also includes example code about both libraries.

[edit] 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. The OpenOBEX library provides an lower-level interface.

For more information on libgwobex and OpenOBEX, see section Maemo Connectivity and API references. For more information on OpenOBEX, see the project's web site.