Ich hab das Programm mal debugged:
Es kommt bis dort hin, wo er die Deskriptoren senden sollte (aufteilung
in 8er Paketen). Ich hab aber so das gefühlt, dass nichts gesendet wird.
Vielleicht wisst ihr, wo in diesem Bereich die Standardfehler sind.
Meine Deskriptoren
DeviceDescriptor:
DB 18 ;Größe des Deskriptors in Bytes
DB 01H ;die Konstante DEVICE (01H)
DW 0110H ;USB-Spezifikation
DB 00H ;Klassencode
DB 00H ;Unterklassencode
DB 00H ;Protokollcode
DB 08H ;Maximale Paketgröße für den Endpunkt 0
DW 0FFFFH ;Anbieter ID
DW 000CH ;Produkt ID
DW 0110H ;Release-Nummer des Geräts
DB 01H ;Index des String-Deskriptors für den Hersteller
DB 02H ;Index des String-Deskriptors für das Produkt
DB 03H ;Index des String-Deskriptors mit der Seriennummer
DB 01H ;Anzahl möglicher Konfigurationen
ConfigurationDescriptor:
DB 09H ;Größe des Deskriptors in Bytes
DB 02H ;Die Konstate KONFIGURATION (02H)
DB CONF_L ;Größe aller für diese Konfiguration zurückgegebenen
Daten in Bytes
DB 00H ;HighBit von Länge
DB 01H ;Anzahl der Schnittstellen, die die Konfiguration
unterstützt
DB 01H ;Identifizierer für Set_Configuration- und
Get_Configuration-Requests
DB 00H ;Index des String-Deskriptors für die Konfiguration
DB 40H ;Eigenstrom/Busstrom- und Remote-Wakeup-Einstellungen
DB 50 ;Erforderlicher Busstrom (mA/2)
InterfaceDescriptor:
DB 09H ;Größe des Deskriptors in Bytes
DB 04H ;Die Konstante INTERFACE (04H)
DB 00H ;Eine Nummer zur Identifizierung dieser Schnittstelle
DB 00H ;Eine Nummer zur Auswahl einer alternativen Einstellung
verwendeter Werte
DB 01H ;Die Anzahl der unterstützten Endpunkte mit Ausnahme
des EP0
DB 03H ;Klassen-Code
DB 01H ;Unterklassen-Code
DB 01H ;Protokoll-Code
DB 00H ;Index des String-Deskriptors für die Schnittstelle
HIDDescriptor: DB 09H ;Deskriptorgröße in Byte
DB 21H ;21H zeigt die HID-Klasse an
DW 0001H ;Versionsnummer der HID-Spezifikation
DB 21H ;Numerischer Ausdruck, der für das Land der
lokalisierten Hardware steht
DB 01H ;Anzahl der unterstützten untergeordneten
Klassendeskriptoren
DB 22H ;Der Typ des Klassendeskriptors
DB 50,0 ;Gesamtlänge des Berichtsdeskriptors
Endpoint1Descriptor: DB 07H ;Größe des Deskriptors in Bytes
DB 05H ;die Konstante ENDPOINT (05H)
DB 81H ;Endpunktnummer und -richtung
DB 03H ;unterstützter Transfer-Typ
DW 0800H ;maximal unterstützte Paketgröße
DB 0AH ;Abfrageintervall in Millisekunden
ConfigurationEnd:
CONF_L EQU ConfigurationEnd-ConfigurationDescriptor
ReportDescriptor:
DB 005H,001H ;USAGE_PAGE (Generic Desktop)
DB 009H,002H ;USAGE (Mouse)
DB 0A1H,001H ;COLLECTION (Application)
DB 009H,001H ;USAGE (Pointer)
DB 0A1H,000H ;COLLECTION (Physical)
DB 005H,009H ;USAGE_PAGE (Button)
DB 019H,001H ;USAGE_MINIMUM (Button 1)
DB 029H,003H ;USAGE_MAXIMUM (Button 3)
DB 015H,000H ;LOGICAL_MINIMUM (0)
DB 025H,001H ;LOGICAL_MAXIMUM (1)
DB 095H,003H ;REPORT_COUNT (3)
DB 075H,001H ;REPORT_SIZE (1)
DB 081H,002H ;INPUT (Data,Var,Abs)
DB 095H,001H ;REPORT_COUNT (1)
DB 075H,005H ;REPORT_SIZE (5)
DB 081H,003H ;INPUT (Cnst,Var,Abs)
DB 005H,001H ;USAGE_PAGE (Generic Desktop)
DB 009H,030H ;USAGE (X)
DB 009H,031H ;USAGE (Y)
DB 015H,081H ;LOGICAL_MINIMUM (-127)
DB 025H,07FH ;LOGICAL_MAXIMUM (127)
DB 075H,008H ;REPORT_SIZE (8)
DB 095H,002H ;REPORT_COUNT (2)
DB 081H,006H ;INPUT (Data,Var,Rel)
DB 0C0H ;END_COLLECTION
DB 0C0H ;END_COLLECTION
LangIDDescriptor: DB 04H
DB 03H
DW 0009H