For communications with the outside world 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.
7.1 Acquiring internet access
LibConIC is the library that all applications that want to use internet connectivity must
use. It takes care of e.g. scanning of available WLAN networks and setting up the
IP network after 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 the maemo connectivity
7.2 VoIP, Instant Messaging and Presence
The Telepathy communications framework provides an 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 more
deeply in in ”implementing custom connection managers”.
7.3 Address Book and Contacts
The maemo platform features a centralized storage for address book data which is
implemented using the Evolution Data Server (EDS). This allows different applications
to effortlessly share contacts in a standardized form so that the user doesn’t have to
specify them in every program separately.
For accessing an EDS contact from an application data maemo has the libossoabook
library which has powerful widgets that enable consistent user interface for accessing
and managing the contact information.
Good reading to quickly start using libosso-abook is the Using Maemo Address
Book APIs document. More in depth information can be found at the Maemo API
Reference and the Evolution project’s web site. maemo-examples package also
includes commented example code that covers using the address book APIs.
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’s recommended for 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 aren’t 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 its a lot more complex than the
higher level Maemo Connectivity subsystem’s offerings.
The Maemo Connectivity Guide describes the high level D-BUS API and its
usage. More information about the BlueZ API can be found at BlueZ web site. The
maemo-example package also includes example code about both libraries.
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 even more low level interface is
the OpenOBEX library.
More about GnomeVFS is written in this document’s GnomeVFS section. Maemo
Connectivity Guide has chapters for libgwobex and OpenOBEX. For libgwobex
API see Maemo API Reference and lots of information about OpenOBEX can be
found at the project’s web site.