25.12.2013 Aufrufe

Gecko3 - CCC Event Weblog

Gecko3 - CCC Event Weblog

Gecko3 - CCC Event Weblog

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

7.3. Gecko Library<br />

bisher Root Rechte nötig sind. Es existieren unter Linux mehrere Möglichkeiten um die<br />

Zugriffsrechte von USB Geräten zu beeinflussen. Die derzeit aktuelle und flexibelste Lösung<br />

in diesem Zusammenhang ist der udev Dämon, der alle zur Laufzeit hinzugefügten bzw.<br />

entfernten Geräte verwaltet. Einer der nächsten Schritte in der Entwicklung der Hostsoftware<br />

unter Linux sollte es sein, udev so zu konfigurieren, dass alle Studenten auf den Gecko<br />

zugreiffen können.<br />

7.3. Gecko Library<br />

In diesem Unterkapitel werden die von der Gecko Library zur Verfügung gestellten Funktionen<br />

beschrieben und erklärt wie sie das Gecko Board ansteuern. Die Namen der Funktionen<br />

sind so gewählt, dass man sofort sieht ob sie zur Kommunikation oder Administration (beginnen<br />

immer mit adm) dienen. Alle Funktionen liefern als Rückgabewert einen Binärwert<br />

zurück der aussagt, ob die Funktion erfolgreich war oder nicht.<br />

• bool open()<br />

Diese Funktion öffnet eine Kommunikationsverbindung zum Gecko Board.<br />

Sie entspricht mehrheitlich dem Beispiel in der libusb Dokumentation zum Suchen und<br />

Öffnen eines USB Gerätes. Als erstes werden alle USB Busse und dann alle Geräte neu<br />

eingelesen. Danach wird mit den so erhaltenen Informationen nach der Vendor und<br />

Product ID des Gecko Boards gesucht. Bei Erfolg wird ein allfälliger Linux Kernel<br />

Treiber entfernt und das Interface zur Kommunikation geöffnet. Die Funktion bricht<br />

nach dem ersten Fund ab, es ist mit dieser Funktion nicht möglich mehrere Gecko<br />

Boards am gleichen Rechner parallel zu betreiben.<br />

• bool close()<br />

Schliesst eine geöffnete Kommunikationsverbindung mit dem Gecko Board, wenn eine<br />

solche existiert.<br />

• bool read(QByteArray *readData, int byteCount)<br />

Funktion um die im Parameter byteCount angegebene Anzahl Bytes vom Gecko Board<br />

zu lesen und setzt diese Daten ans Ende des zur Verfügung gestellten QByteArrays.<br />

Das ByteArray muss existieren.<br />

Die Funktion führt einen einfachen Bulkread auf dem Kommunikationsinterface aus.<br />

• bool write(QByteArray data)<br />

Funktion um die Daten in einem QByteArray an das Gecko Board zu senden.<br />

Die Funktion führt einen einfachen Bulkwrite auf dem Kommunikationsinterface aus.<br />

• bool write(QFile &data)<br />

Funktion um den Inhalt eines ganzen Files an das Gecko Board zu übertragen. Das<br />

File muss existieren und geöffnet sein. Am Ende der Funktion zeigt der Filepointer auf<br />

das Ende des Files.<br />

Da die Bulkwrite Funktion der libusb nur einen Integerwert für die Anzahl Bytes<br />

benutzt, muss die Übertragung eines ganzen Files in mehrere Transaktionen aufgeteilt<br />

werden.<br />

• bool admOpen()<br />

Funktion zum Öffnen einer Administrationsverbindung zum Gecko Board.<br />

Project Report 39

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!