© prettyboy80/Shutterstock.com
Ein Blick auf das Update des Pebble-Betriebssystems

Kieselstein mit Kompass


Während Google noch an der flächendeckenden Verfügbarkeit seiner Smartwatches arbeitet, kann man sich im Hause Pebble der Verbesserung des Betriebssystems zuwenden. Die vor kurzer Zeit erschienene Version 2.5 wird von einigen neuen Features in den Entwicklerwerkzeugen begleitet.

Bevor wir uns Hals über Kopf in die Programmierung stürzen, sei noch ein kleiner Hinweis für Quereinsteiger angebracht: Der Erfolg der Pebble steht in direktem Zusammenhang zu ihrer spartanisch-rudimentären Hardware. Pebbles sind Tentakel, die die am Handy befindlichen Informationen anzeigen. Wer diese Smartwatch mit komplexen Algorithmen belastet, sollte wissen, dass ihre Hardware das Leistungsniveau eines Palm III mit beschränktem Speicher bietet.

Wohin des Wegs?

Auf GPS basierende Navigationsapplikationen können die Bewegungsrichtung des Nutzers durch differenziale Positionierung ermitteln. Aufgrund des systemimmanenten Rauschens ist diese Vorgehensweise nicht sonderlich genau – sich nicht bewegende User lassen sich nicht tracken. Die Nutzung eines magnetischen Kompasses behebt diese Probleme. Alle Pebble-Smartwatches enthalten die dazu notwendige Hardware von Haus aus, Version 2.5 bringt Entwicklern die Möglichkeit zum Zugriff auf die von dort angelieferten Daten.

Wir wollen in unserem Beispiel ein Monitorprogramm realisieren, das die aktuellen Werte am Bildschirm anzeigt. Aus diesem Grund brauchen wir regelmäßige Updates. Wenn Ihr Programm mit „einmaligen“ Datenpunkten auskommt, so können Sie auf die hier nicht weiter besprochene Funktion compass_service_peek() zurückgreifen.

Unser Programm meldet sich stattdessen beim Kompassdienst an, um so permanent aktualisierte Informationen über die Ausrichtung der Uhr zu bekommen (Listing 1).

Listing 1

void handle_init(void) { ... compass_service_subscribe(compass_handler); compass_service_set_heading_filter(TRIG_MAX_ANGLE / (36*2)); }

compass_service_set_heading_filter erlaubt das Festlegen der minimalen Aktualisierungsschwelle. Wir wollen bei Änderungen informiert werden, deren „Größe“ mehr als fünf Grad überschreitet. service_subscribe bekommt einen Zeiger auf eine Methode übergeben, deren Prototyp so aussieht:

static void compass_handler(CompassHeadingData data) { }

Zurückgelieferte Daten liegen in einer Struktur namens CompassHeadingData, deren Inhalt so aussieht wie in Listing 2 zu sehen.

Listing 2

typedef struct { CompassStatus compass_status, bool is_declination_valid; CompassHeading magnetic_heading; CompassHeading true_heading; } CompassHeadingData;

CompassStatus legt fest, ob der Kompass kalibriert, unkalibriert oder durch Störungen aus der Umgebung blockiert ist. Bei der Arbeit mit Kompassdaten gibt es au...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang