How has SHR been built?


Please refer to the attached picture explaining how we built this architecture.

There's a central daemon called phonefsod which handles events. It's using libframeworkd-glib which is mainly a glib wrapper for dbus calls to frameworkd. There's a libphone-ui package which describes primitives of what we consider "views" having to be shown to the user.

These screens are called either by phonefsod on events (e.g. incoming calls) or by the user when he initiates things (e.g. dialer, contacts... - via  phoneui-apps).

phoneuid caches those views to speed up those applications.

There can be as many libraries implementing libphone-ui as you can think about. The one SHR is based on right now is libphone-ui-shr. It's an implementation of the libphone-ui headers, and it uses libframeworkd-glib.

Updated Version of the SHR Architecture


SHR is build from the following parts:

  •  OE - build environment, linux base
  •  FSO - implementation of the FreeSmartPhone? API, does the lowlevel telephony work
  • SHR-specific code - talks to FSO, provides GUI

There are currently two implementations of the FSO API:

  • Frameworkd - the original, mostly python implementation
  •  Cornucopia/FSO2 - Vala/C implementation

SHR is in the process of progressively replacing parts of Frameworkd with parts from Cornucopia/FSO2.


Daemon Origin Name Responsibility Links
frameworkd FSO Original FSO API implementation  src
fso-gpsd FSO FSO gpsd-compatibility  src
fsodeviced FSO2 FSO device daemon  info  src
fsotdld FSO2 FSO time, data and location daemon  info  src
fsogsmd FSO2 GSM Communications Manager  info  src
fsousaged FSO2 Resource Manager  info  src
phonefsod SHR FSO client  src
phoneuid SHR UI daemon  src