freesmartphone.org - middleware for embedded devices
Geschrieben von MMind am Sonntag, 19. Dezember 2010 in Software
Ein Nebenprodukt der Entwicklung der Openmoko-Platform war das Projekt freesmartphone.org . Dieses hat sich zum Ziel gesetzt eine sogenannte Middleware für mobile Geräte zu entwicklen.
Auch nach dem Ende der Openmoko Telefonproduktion besteht freesmartphone.org fort und bietet momentan Unterstützung nicht nur für Openmoko-Telefone sondern unter anderem auch für den Palm Pre und das Nokia N900.
Middleware bezeichnet Software die zwischen den rohen Treibern des Kernels und Anwendungsprogrammen sitzt und den Zugriff auf die Hardwarekomponenten abstrahiert. So sollte sich zum Beispiel idealerweise eine Telefonie-Anwendung nicht dafür interessieren müssen was für ein GSM-Modem die eigentliche Arbeit tut.
Das ofono-Projekt tut ähnliches aber eben nur auf dem Gebiet der GSM-Kommunikation. freesmartphone.org geht hier aber noch einen Schritt weiter und möchte alle Features eines mobilen Gerätes kapseln.
Die Kommunikation der Komponenten untereinander und mit den Anwendungsprogrammen erfolgt dabei über DBus.
Einzelkomponenten
Der Software-Stack besteht dabei aus mehreren Einzelkomponenten die sich um die verschiedenen Themenbereiche kümmern. Die bisher am weitesten fortgeschrittenen Komponenten sind dabei:
fsousaged - Resourcenmanagement
Der fsousaged kümmert sich um die Verwaltung der Resourcen. In einem mobilen Gerät ist der Stromverbrauch sehr wichtig. Deswegen sollten Komponenten nur aktiviert sein wenn sie auch benötigt werden.
Hier fordern also die Anwendungen den Zugriff auf eine Resource des Gerätes an und der usage-Daemon kümmert sich darum dass das Gerät aktiviert wird. Wenn die letzte Anwendung ihren Zugriff auf die Resource wieder freigibt deaktiviert fsusaged dieses auch wieder.
Ein weiterer wichtiger Aspekt des usage-Daemons ist das sogenannte "suspend-handling". Bei mobilen Geräten ist der Schlaf-Modus (suspend) sehr wichtig um die Akku-Laufzeit annehmbar zu halten. Der Akku würde zum Beispiel schnell schlapp machen wenn das Gerät normal läuft, obwohl es in einer Tasche steckt und höchstens auf einen Anruf wartet. Der fsousaged kümmert sich dabei auch um das Ermitteln des Aufwachgrundes. Dies kann zum Beispiel ein druck auf den Anschaltknopf sein, aber auch ein ankommender Anruf.
fsodeviced - Gerätemanagement
Hier erfolgt die eigentliche Kapselung der Einzelkomponenten der Geräte. D.h. die verschiedenen Eigenarten einzelner Geräte werden ausgeglichen und das ganze dann per DBus-API verfügbar gemacht.
Hier sitzen dann auch Funktionen um manche Geräte das Schlafengehen zu erleichtern. Vor allem GSM-Modems, benötigen viel Hilfe um schlafen zu gehen und trotzdem empfangsbereit zu bleiben und das Gerät bei einem Anruf aufzuwecken.
fsogsmd - Management von GSM-Verbindungen
Der GSM-Daemon kuemmert sich darum Sprach und Datenverbindungen ueber ein GSM-Modem zu ermöglichen. Hier gibt es dann Module die die Eigenarten der verschiedenen GSM-Module überdecken und vor den Telefonieanwendungen verstecken.
GSM-Modems arbeiten zwar im Allgemeinen mit normalen AT-Befehlen, es scheint aber so, dass Hersteller oft eigene Erweiterungen entwicklen oder die Modems manche Befehle nicht korrekt unterstützen.
fsodtld - Zeit- und Ortsverwaltung
Der date-time-location-Daemon kümmert sich um die Bestimmung von Orts- und Zeitwerten. Er nutzt dabei GPS-Empfänger und verschiedene Zeitresourcen zur Bestimmung der Werte.