Wednesday, December 15, 2010
I'm back. (Hopefully) For good.
Monday, October 25, 2010
H4ckb33r
Sunday, September 19, 2010
Farewell, Spain. Hello, São Paulo.
Wednesday, September 15, 2010
Solid Sprint at Madrid
Wednesday, September 8, 2010
Pong
Sunday, August 22, 2010
emit remmus
Friday, August 6, 2010
Moving out
Sunday, July 25, 2010
(GSoC) And god said: "Let there be an Internet Gateway"
Sunday, July 18, 2010
No, I'm not dead ;-)
Monday, May 31, 2010
GSoC Code Week #1: Prologue
Tuesday, May 18, 2010
GSoC: Discovering Solids
Well, this community bonding period aims to get students aware of technologies involved on the projects, documentation and, of course, the code. Since I'm pretty new with Solid, Kevin told me that a Techbase page explaining the libsolid architecture would be a good exercise of my current understanding about the project. So, the document is ready and the Techbase page will be up as soon as I discover how to create one. :-D
Besides that I've decided to put it here too, for the posterity and, of course, for any feedback you can give me. Any comments would be really appreciated. It's really simple and small, as you can see right below.
Cheers.
--
Solid (kdelibs/solid)
The KDE 4 provides seamless hardware integration through Solid framework. Using its API, developers become able to easily write applications with hardware interaction features, through a hardware discovery layer which allows the detection and use of devices regardless of operating system or architecture.
Solid was implemented using a frontend/backend approach aiming portability among platforms like Linux and Windows. The frontend provides the high-level API for developers using Solid and backends deal with the specific hardware issues for the different platforms.
Frontend View
The frontend classes provide the API for developers and are also wrappers for several kinds of devices. All frontend clases are available in kdelibs/solid/solid.
- Solid::DeviceNotifier
Solid::DeviceManager
This (private) class maintains the state of all devices currently available on the system. Through it is possible to get, for example, the list of all devices or a list of device matching with some criteria (using Solid::Predicate).
Solid::Device
This class represents a general hardware device. A device contains one or more device interfaces (capabilities).
Solid::DeviceInterface
A device interface represents a certain feature that a device contains. This class is on the top of the device interfaces inheritance tree. All specialized device interfaces implement it.
Specialized classes (Solid::Processor, Solid::OpticalDrive, Solid::Battery, etc.)
These classes actually represent the capabilities that a device can have. All classes extend Solid::DeviceInterface.
Backend View
A Solid backend deal with the platform-specific ways of handle devices. Developers using libsolid do not use the backend classes directly. Applications do it through frontend/wrapping classes in the Solid namespace.
All backends have to implement the interfaces in kdelibs/solid/solid/ifaces (namespace Solid::Ifaces) correspondent to its devices. These interfaces are the basics of which API a given device has to provide to the frontend classes.
UML Diagram
This diagram shows the relationships between the Solid frontend classes and the platform-specific backend classes (Foo backend example).