U.B. Funkeys ist ein Computerspiel fuer Kinder, welches auf die Sammelleidenschaft der Spieler abziehlt. Der Spieler setzt Figuren in den mitgelieferten USB-Leser und ist dann, je nach Figur, im stande entsprechende Abschnitte der Spielwelt zu betreten. Hier werde ich die Entwicklung eines einfachen Linuxtreibers auf basis von libUSB-1.0 beschreiben.


Funktionsweise

Der Funkey-reader ist im grunde ein mehrkanal Widerstandsmessgeraet. Die 5 Kontakte am Fusz jeder Funkey-Figur sind mit einem Widerstandsnetzwerk im Inneren der Figur verbunden. Diese misst der Funkey-Reader und sendet sie an das Spiel.


Protokoll

Man kann hier nicht wirklich von einem Protokoll sprechen. Nach einem Initialen Lesevorgang von 4 bytes sendet das Geraet bei jeder Widerstandsaenderung einen neuen Datensatz von 7 byte. Es wird mindestens alle 10 Sekunden ein Datensatz uebertragen. Da beim Einsetzen einer Figur die Kontakte nicht alle gleichzeitig schlieszen wird eine Reihe von falschen Messdaten an das Spiel gesedet. Diese werden verworfen, da die Messwerte keiner Figur zugeordnet werden koennen.

Die Nutzdaten sind wie folgt aufgebaut:

5 byte: Messdaten
1 byte: ID der figur(?)
1 byte: 0x00

Beispiel: [0x78][0x8C][0x11][0xCE][0x99][0xCD][0x00]


Geraet

USB-Reader
vendor id: 0x0e4c
vendor string: Radica Games, Ltd
product id: 0x7288
product string: Mega Byte
endpoint: 0x81


Todo

  • Unterstuetzung fuer mehr als einen Funkey-Reader gleichzeitig.
  • Nutzen finden
  • Vileicht alle validen Figurenwerte herausfinden.


Treiber

Linux treiber download