IOWarrior HID-Deskriptor

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
shine47
Posts: 1
Joined: Mon Dec 01, 2008 8:52 pm

IOWarrior HID-Deskriptor

Post by shine47 »

Hallo,

ich möchte für das vvvv-Multimedia-Framework einen Knoten schreiben, der alle möglichen HID-Geräte ansprechen kann.
Das Verschicken/Empfangen von Reports zum/vom Gerät klappt auch Dank der HID-Suite von Robert Marquardt gut.
Jetzt möchte ich aus dem HID-Deskriptor erfahren, welche Bits zu welcher Control gehören, um dem Nutzer eine komfortable Eingabemöglichkeit zu geben. Beispiel für den IOWarrior:

Der Input ist 4 Bytes lang und es gibt (DataIndexMax - DataIndexMin) + 1 Buttons und Bitfield ist gleich 2.
Daraus folgen 32 Buttons die jeweils ein Bit in dem 32 Bit langen Report belegen.


"Code Mercenaries" "Plain I/O" VID=$07C0 PID=$1500
Input Report Size=4
Output Report Size=4
Feature Report Size=0

Button Input
============

0)
UsagePage: Button ($0009)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 0
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: True
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
UsageMin: 1 UsageMax: 32
StringMin: 0 StringMax: 0
DesignatorMin: 0 DesignatorMax: 0
DataIndexMin: 0 DataIndexMax: 31


Das gleiche für den Output zu machen gelingt mir aber nicht. Ich weiss zwar, dass die Nachricht auch 4 Bytes lang ist,
und 255 255 255 254 ein LED aufleuchten läßt, aber am Report-Deskriptor konnte ich das leider nicht nachvollziehen:

Button Output
=============

0)
UsagePage: LED ($0008)
ReportID: 0
IsAlias: False
BitField: 32
LinkCollection: 0
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: False
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
Usage: Generic Indicator ($004B)
StringIndex: 0
DesignatorIndex: 0
DataIndex: 0

Data Index ist hier 0, daher hätte ich jetzt gedacht, es gibt nur ein Element. Bitfield ist 32 daher steht alles bis auf No Preferred State auf false.
Oder soll man einfach sagen : Es gibt 4 Bytes und ein Element das genau ein Bit belegt, daher gibt es 4*8=32 Elemente? Aber dann müsste in Bitfield auch Variable true sein.

Kann man anhand der HID-Report-Deskriptoren tatsächlich genau wissen, welche Control zu welchen Bits gehört oder geht
das nur über probieren oder die technische Dokumentation?

Danke im Voraus, Jens
Guido Körber
Site Admin
Posts: 2883
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: IOWarrior HID-Deskriptor

Post by Guido Körber »

Also die Descriptoren stellen beim IO-Warrior gewissermaßen nur Container da mit denen die Daten von und zum Chip transportiert werden können. Die Funktion der einzelnen Bits kann und soll sich nicht aus den Descriptoren ergeben.
Post Reply