Gecko3 - CCC Event Weblog
Gecko3 - CCC Event Weblog
Gecko3 - CCC Event Weblog
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