1. Free your phone
Shaastra 2008 – IIT Madras
Sudharshan 'Sup3rkiddo' S
2. Agenda
● Software development in mobile phones
● Freesmartphone.org framework
● FSO and freedesktop.org
● D-Bus primer (a gooey chocolate)
● Framework daemon components
● Code walkthrough, zhone
● A bit about Openmoko
3. Mobile Software Development
● Variety of software stacks
– Symbian
– Windows CE/Mobile
– EZX
– Android
– J2ME
– And a lot more
4. Mobile Software development
● Variety of hardware capabilities
– Camera
– GPS
– Music player
– Touch screen
– USB
– Accelerometers
– And many more
5. The problem
● We solve the problem with hardware
abstraction layers
– Neod for Openmoko
– Ohm for Maemo
– Zaurusd for OpenZaurus
– Machined for GPE
8. What is freesmartphone.org?
“freesmartphone.org is a collaboration platform
for opensource and open discussion software
projects working on interoperability and shared
technology for Linux-based Smartphones”
--
http://wiki.freesmartphone.org
9. Design goals
● Be platform agnostic, doesn't matter where you are
running the code
● Be language agnostic as well. If it has Dbus bindings you
are home.
● Be simple and small. Example, HAL vs. Device subsystem
of the FSO framework
● Integrate tightly with the hardware for performance
● Lastly, “re-use existing technologies, but not overdo it”
10. Why re-invent something that freedesktop.org is
already doing?
● FDO focuses on interoperability and standards between
different Desktop Environments, ex: KDE, Gnome, XFCE
● FSO focuses on interoperability between entire software
platforms for Smartphones and similar devices
● (Well, we still use Dbus and thats from FDO)
● As, the name implies freedesktop.org is for Desktops.
And Desktops != Mobile phones
11. D-Bus Primer
● One of the coolest things to have happened in the
FOSS world.
● Inter-process Communication for mortals
12. D-Bus in one line
Expose an object with an interface on a System
or Session Bus
13. D-Bus in FSO framework
● Use system bus. So only one instance of the code will run.
● Example. GetCapacity method from
org.freesmartphone.Device.PowerSupply interface running
on org.freesmartphone.odeviced system bus
14. How it all comes together, a quick demonstration
15. Zhone, walkthrough
Because APIs
without a consumer
suck. A code
walkthrough of
zhone (Zen Phone)