DE19835647A1 - Computersystem und Verfahren zum Lesen von HID-Dateneinheiten - Google Patents
Computersystem und Verfahren zum Lesen von HID-DateneinheitenInfo
- Publication number
- DE19835647A1 DE19835647A1 DE19835647A DE19835647A DE19835647A1 DE 19835647 A1 DE19835647 A1 DE 19835647A1 DE 19835647 A DE19835647 A DE 19835647A DE 19835647 A DE19835647 A DE 19835647A DE 19835647 A1 DE19835647 A1 DE 19835647A1
- Authority
- DE
- Germany
- Prior art keywords
- hid
- report
- reports
- data
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/038—Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
Description
Die Erfindung betrifft Treiber, die in Verbindung mit
Mensch-Maschine-Schnittstelleneinrichtungen arbeiten, und
Verfahren zum Lesen von und Schreiben in solche Treiber und
Schnittstellen.
Ein universeller, serieller Bus (USB) ist eine Datenübertra
gungsarchitektur, die einem Personal Computer die Fähigkeit
verleiht, sich mit zahlreichen Einrichtungen über ein ein
faches Vierdrahtkabel zu verbinden. USB-Protokolle können
Einrichtungen hochfahren oder auch dann konfigurieren, wenn
sie während der Laufzeit eingesteckt werden. Diese Einrich
tungen werden in verschiedene Geräteklassen aufgeteilt. Jede
Geräteklasse definiert ein gemeinsames Verhalten und Proto
kolle für die Einrichtungen, die ähnlichen Funktionen die
nen.
Die im folgenden beschriebene Erfindung wird in Verbindung
mit der Klasse der Mensch-Maschine-Schnittstelleneinrichtun
gen (HID; human interface device) eingesetzt. Die HID-Klasse
besteht hauptsächlich aus Einrichtungen (die hier als HID-
Einrichtungen oder Einrichtungen der HID-Klasse bezeichnet
sind), die von Menschen dazu verwendet werden, den Betrieb
von Rechnersystemen zu steuern. Typische Beispiele von Ein
richtungen der HID-Klasse sind:
- - Tastaturen und Zeigeeinrichtungen, z. B. übliche Mausein richtungen, Rollkugeln und Joysticks;
- - Einstellmittel oder Steuerelemente eines Bedienfeldes - z. B. Knöpfe, Schalter, Tasten und Schieber;
- - Einstellmittel oder Steuerelemente, die man an Vorrichtun gen, wie Telefonen, Videorekordern, Fernbedienungen, Spiel- der Simulationseinrichtungen findet - z. B.: Daten handschuhe, Drosseln, Steuerräder und Ruderpaddel;
- - Einrichtungen, die nicht zwingend die Zwischenschaltung des Menschen benötigen, die jedoch Daten in einem ähnli chen Format wie die Einrichtungen der HID-Klasse vorsehen, z. B. Strichcodeleser, Thermometer oder Voltmeter.
Die aktuelle HID-Spezifikation, auf die hier Bezug genommen
wird, wurde von einem Verein zusammengestellt, der USB-IF
heißt und in Hillsboro, Oregon liegt, und sie ist von dieser
Organisation erhältlich. Auf diese Spezifikation kann auch
über das Internet unter der Adresse "www.usb.org" zugegrif
fen werden. Die HID-Spezifikation wird sich wahrscheinlich
noch entwickeln, obwohl ihre wesentlichsten Eigenschaften
heute schon weitgehend definiert und akzeptiert sind.
Eine wohldefinierte und akzeptierte Eigenschaft der HID-Ein
richtungen, auf die sich die Erfindung hauptsächlich be
zieht, besteht darin, daß solche Einrichtungen Daten in Da
tenpaketen senden und empfangen, die "Reporte" oder "Be
richte" genannt werden. Den Einrichtungen wird ein großes
Maß an Flexibilität zur Formatierung solcher Reporte zuge
standen.
Reporte enthalten zwei verschiedene Datenarten, die von HID-
Einrichtungen erzeugt werden: Tasten und Werte - die hier
allgemein als Dateneinheiten bezeichnet werden. Jede Daten
einheit wird von einer Steuereinrichtung, wie einer Taste,
einem Schieber, einer einzelnen Achse eines Joysticks etc.,
erzeugt. Eine Dateneinheit des Tastentyps ist binär und hat
einen von zwei Werten: 0 der 1. Tasten-Dateneinheiten werden
von solchen Einrichtungen, wie Tasten oder Schaltern, er
zeugt. Eine Dateneinheit des Wertetyps hat einen Wertebe
reich, der üblicherweise eine analoge Position eines konti
nuierlich veränderbaren Steuerelements angibt, z. B. eines
Schiebers, einer Joystickachse oder einer Drossel. Obwohl
HID-Einrichtungen üblicherweise Eingangsdateneinheiten er
zeugen, können von HID-Einrichtungen auch Reporte empfangen
werden, so daß Rechner LEDs, Lautsprecher oder andere Aus
gabegeräte eine HID-Einrichtung steuern können.
Jedes Steuerelement hat eine zugehörige "Verwendung", die
vom Hersteller der HID-Einrichtung spezifiziert wird. Die
Verwendungen liefern den auf den Rechnern laufenden Anwen
dungsprogrammen Informationen über Parameter, die von ver
schiedenen Steuerelementen gemessen werden, und darüber, was
mit den von den Steuerelementen erzeugten Dateneinheiten
geschehen soll - z. B. mit X-, Y- und Z-Eingangssignalen. Die
HID-Spezifikation selbst umfaßt Verwendungsdefinitionen für
eine Anzahl verschiedener Einrichtungen, wie Tastaturen,
Joysticks, Schieber und andere Einrichtungen.
Eine HID-Verwendung umfaßt zwei Komponenten: eine Verwen
dungsseite und einen Verwendungsindex. Die Verwendungsseite
entspricht einer bestimmten Einrichtung. Die wahrscheinlich
üblichsten Verwendungsseiten sind die Seite "Schreibtisch"
und die Seite "Tastatur". Verwendungsindices entsprechen
bestimmten Steuerelementen innerhalb der Seite, wie Joys
ticktasten, Achsen, Schiebern, Tastaturtasten etc.
In der Praxis bezeichnet der Begriff "Verwendung" manchmal
einen Verwendungsindex. In diesem Dokument bezeichnet "Ver
wendung" jedoch grundsätzlich ein Wertepaar, das eine Ver
wendungsseite und einen Verwendungsindex umfaßt. Der Begriff
"Verwendungsspezifikation" wird dazu verwendet, eine der
beide Komponenten einer Verwendung allgemeiner zu be
zeichnen.
Wie bereits erwähnt, variiert die Anordnung und Formatierung
der HID-Reporte erheblich von Einrichtung zu Einrichtung. Im
allgemeinen enthält jeder Report mehrere Dateneinheiten, die
in einer beliebigen Reihenfolge auftreten, welche von der
Einrichtung spezifiziert wird, wobei jede Einheit eine
willkürliche Anzahl Bits und eine willkürliche Ausrichtung
innerhalb eines Reports umfaßt. Ferner können Dateneinheiten
selbst in verschiedenen Formaten mitgeteilt werden, z. B. als
Bitfeldformate und als Indexbereichsformate.
Eine Einrichtung kann ihre Dateneinheiten auch in zwei oder
mehr Reporte aufteilen, wobei in diesem Fall jeder Report
mit einer Reportidentifikation (Report-ID) beginnt. Die
Reporte selbst haben verschiedene, ungleiche Längen und wer
den von der HID-Einrichtung nur dann erzeugt, wenn sich ein
in dem Report enthaltenes Datenelement ändert.
Zusätzlich kann eine Einrichtung verschiedene Steuerelemente
in verschiedenen "Sammlungen" zusammenfassen, wobei jede
Sammlung ihre eigene spezielle Verwendung hat. Sammlungen
können verschiedene Reporte umfassen. Sammlungen können auch
untereinander verschachtelt sein. Datenelemente, die dersel
ben Verwendung entsprechen, können in verschiedenen Sammlun
gen mitgeteilt werden.
Jede HID-Einrichtung erzeugt einen HID-Reportdeskriptor, der
die von dieser Einrichtung erzeugten Reporte spezifiziert.
Für jeden Report beschreibt der Reportdeskriptor die Anord
nung und Formatierung der in dem Report enthaltenen Daten
elemente sowie die zu jedem Datenelement gehörenden Verwen
dungen.
Die HID-Reportdeskriptoren werden mit einem hochentwickelten
Protokoll codiert. Jedes Anwendungsprogramm, daß HID-Report
daten verwendet, muß zunächst den zugehörigen Reportdeskrip
tor analysieren, um zu ermitteln, wie die einzelnen Reporte
interpretiert werden können und wie die Datenelemente inner
halb der Reporte gefunden werden können. Das Analysieren des
Reportdeskriptors ist eine extrem komplizierte Aufgabe.
Das oben beschriebenen HID-Protokoll ist in Bezug auf die
Bandbreite sehr effizient. Zusätzlich kann es in HID-Ein
richtungen relativ leicht realisiert werden. Das Verfahren
stellt die Entwickler von Anwendungsprogrammen jedoch vor
einige Schwierigkeiten. Diese Schwierigkeiten beziehen sich
hauptsächlich auf die Flexibilität, die den HID-Reporten zu
gestanden wird, und die Komplexität der HID-Reportdeskripto
ren.
Das Schreiben eines Anwendungsprogramms für eine einzelne
bekannte HID-Einrichtung ist nicht schwierig. In diesem Fall
kennt der Entwickler im voraus genau die Art aller verfüg
baren Datenelemente, und er weiß, wie sie innerhalb der HID-
Reporte angeordnet und formatiert sind.
Schwierigkeiten entstehen jedoch, wenn man versucht, ein
Programm zu schreiben, das in Verbindung mit verschiedenen
Peripherieeinrichtungen verwendet werden soll, von denen
theoretisch alle ihre Reporte auf verschiedene und nicht
vorhersehbare Weise realisieren. Ein Peripheriegerät kann
z. B. nur einen einzigen Report verwenden, während ein ande
res seine Datenelemente auf zwei oder drei Reporte aufteilen
kann. Eine Tastatur kann Tastenanschläge als Bitfelder mit
teilen, während eine andere ein Indexfeld verwenden kann.
Ein Joystick kann lediglich sehr einfache Steuerelemente
aufweisen, während ein anderer höher entwickelte Einstell
möglichkeiten hat, wie ein Hutschalter und ein T-Schalter
eines Flugzeuges. Selbst die Größen der Reporte unterschei
den sich von Peripherieeinrichtung zu Peripherieeinrichtung,
weshalb es schwierig ist, die erforderlichen Puffergrößen zu
ermitteln. Genauso können auch die Sammlungen in
verschiedenen Peripherieeinrichtungen auf sehr unterschied
liche Weise realisiert sein.
Obwohl all diese Informationen über den Reportdeskriptor zur
Verfügung stehen, ist das Analysieren der Information ziem
lich schwierig - und das Puffern und Analysieren der tat
sächlichen Reporte ist ähnlich kompliziert, wenn so viele
Formate berücksichtigt werden müssen.
Obwohl die HID-Technologie das Potential hat, zahlreiche
Einrichtungen oder Peripheriegeräte zu einem gegebenen An
wendungsprogramm kompatibel zu machen, kann diese Kompatibi
lität heute nur mit einer ganz erheblichen Investition bei
der Entwicklung des Anwendungsprogramms realisiert werden,
damit sich das Anwendungsprogramm an die verschiedenen For
mate anpassen kann, die von den HID-Peripheriegeräten vor
gesehen werden.
Die Erfindung sieht ein Verfahren und eine Architektur vor,
welche es Klientprogrammen ermöglichen, HID-Dateneinheiten
auf eine konsistente Weise zu empfangen, und zwar unabhängig
von den erzeugenden HID-Einrichtungen und ohne daß die
Klientprogramme eine komplizierte Analyse durchführen müß
ten. Bei einem Ausführungsbeispiel umfaßt die Architektur
eine Transportschicht, aus der HID-Reporte und Report
deskriptoren entnommen und in die sie geschrieben werden
können. Ein Treiber der HID-Klasse ist oberhalb der
Transportschicht realisiert. Klientprogramme, einschließlich
Anwendungsprogrammen und Betriebssystemkomponenten, sind mit
HID-Einrichtungen über den Treiber der HID-Klasse verbunden.
Gemäß eines Aspekts der Erfindung fügt der Treiber der HID-
Klasse Report-IDs an alle Reporte an, die nicht bereits
Report-IDs enthalten. Dieser Schritt macht die HID-Reporte
konsistent, einfacher zu lesen und zu analysieren. Zu
sätzlich ermittelt der Treiber der HID-Klasse den größten
von einer HID-Einrichtung erzeugten Report und füllt alle
anderen Reporte von dieser HID-Einrichtung auf, so daß alle
Reporte von einer gegebenen Einrichtung die gleiche Länge
haben. Dies trägt wiederum zu Konsistenz bei und macht es
für die Anwendungen einfacher, Reporte zu puffern und zu
analysieren. Gemäß eines weiteren Aspekts der Erfindung er
möglicht es eine Gruppe aus Schnittstellen Klientprogrammen,
Dateneinheiten anzufordern, die nur durch ihre Verwendungen
spezifiziert sind.
Während einer Initialisierungsphase ruft das Klientprogramm
einen Reportdeskriptor von dem Treiber über einen normalen
Datei-I/O-Aufruf ab. Es übergibt dann diesen Repordeskriptor
an einen Parser (Syntaxanalysierer), der den Reportdeskrip
tor analysiert und eine Datenstruktur zurückgibt, die eine
analysierte Reportbeschreibung enthält. Bei dem Versuch,
HID-Dateneinheiten zu lesen, ruft das Klientprogramm zu
nächst einen HID-Report von dem Treiber ab. Dann ruft es
eine Schnittstellenfunktion mit Argumenten auf, die den HID-
Report, die Datenstruktur, welche die analysierte Report
beschreibung enthält, und eine Verwendungsspezifikation (wie
eine Verwendungsseite und einen Verwendungsindex) umfassen.
Die Schnittstellenfunktion sucht den HID-Report nach
Dateneinheiten ab, die zu der spezifizierten Verwendung
gehören, wobei die analysierte Reportbeschreibung als ein
Index verwendet wird, der in den HID-Report weist, und sie
gibt die Dateneinheit an den anfragenden Klient zurück, wenn
die Dateneinheit in dem Report gefunden wurde. Optional kann
in den Argumenten der Schnittstellenfunktion ein Samm
lungsidentifikator spezifiziert werden, wobei in diesem Fall
die Schnittstellenfunktion die Datenwerte auf solche Werte
in einer HID-Sammlung begrenzt, die von dem Sammlungsidenti
fikator spezifiziert wurden.
Die Erfindung ist im folgenden anhand bevorzugter Ausfüh
rungsformen in bezug auf die Zeichnungen näher erläutert. In
den Figuren zeigt:
Fig. 1 ein Blockdiagramm einer beispielhaften Be
triebsumgebung für die Erfindung;
Fig. 2 zeigt ein Blockdiagramm eines HID-Datenübertra
gungssystems und einer Architektur gemäß der
Erfindung;
Fig. 3 zeigt ein Blockdiagramm, das die HID-Reportnor
mierung gemäß der Erfindung darstellt; und
Fig. 4 zeigt ein Blockdiagramm, das Parser-Schnitt
stellenfunktionen gemäß der Erfindung dar
stellt.
Fig. 1 und die folgenden Erläuterungen sollen eine kurze
allgemeine Beschreibung einer Rechenumgebung liefern, in der
die Erfindung realisiert werden kann. Obwohl dies nicht er
forderlich ist, wird die Erfindung allgemein im Kontext
rechnerausführbarer Befehle beschrieben, wie Programmodulen,
die von einem Personal Computer ausgeführt werden. Program
module umfassen im allgemeinen Routinen, Programme, Objekte,
Komponenten, Datenstrukturen, Schnittstellen, Schnittstel
lenfunktionen etc., die in einem rechnerlesbaren Speicher
gespeichert sind. Wenn sie ausgeführt werden, führen diese
Module bestimmte Aufgaben aus, implementieren bestimmte ab
strakte Datentypen und bieten oder implementieren verschie
dene Schnittstellen und Schnittstellenfunktionen. Der Fach
mann wird darüberhinaus verstehen, daß die Erfindung noch
bei anderen Rechnersystemkonfigurationen angewendet werden
kann, einschließlich handgehaltener Einrichtungen, Mehrpro
zessorsystemen, mikroprozessorgestützter oder programmier
barer Verbraucherelektronik, Netz-PCs, Minicomputern, Main
framecomputer und dergleichen. Die Erfindung kann auch in
verteilten Rechnerumgebungen eingesetzt werden, in denen
Aufgaben von voneinander entfernten Verarbeitungseinrichtun
gen ausgeführt werden, die über ein Datenübertragungsnetz
verbunden sind. In einer verteilten Rechnerumgebung können
Programmodule sowohl in lokale (zentrale) als auch in ent
fernte (dezentrale) Speichereinrichtungen geladen werden.
Das in Fig. 1 gezeigte beispielhafte System zum Umsetzen
der Erfindung umfaßt eine Allzweck-Recheneinrichtung in der
Form eines üblichen Personal Computers oder Computersystems
20 mit einer Verarbeitungseinheit 21, einem Systemspeicher
22 und einem Systembus 23, der verschiedene Systemkomponen
ten, einschließlich des Systemspeichers, mit der Ver
arbeitungseinheit 21 verbindet. Der Systembus 23 kann eine
von verschiedene Arten von Busstrukturen aufweisen, ein
schließlich einen Speicherbus oder eine Speicher-Steuerein
richtung, einen Peripheriebus und einen lokalen Bus mit
einer von vielen Busarchitekturen. Der Systemspeicher umfaßt
einen Festspeicher (ROM) 24 und einen Arbeitsspeicher (RAM)
25. Ein Basis-Ein-Ausgabesystem (BIOS) 26, das die Basis
routinen enthält, welche die Übertragung von Information
zwischen den Elementen innerhalb des Personal Computers 20
unterstützen, z. B. während des Hochfahrens, ist im ROM 24
gespeichert. Der Personal Computer 20 umfaßt ferner ein
Festplattenlaufwerk 27 zum Lesen von und Schreiben auf eine
Festplatte (nicht gezeigt), ein Mangetplattenlaufwerk 28 zum
Lesen von und Schreiben auf eine entfernbare Magnetplatte 29
und ein optisches Plattenlaufwerk 30 zum Lesen von und
Schreiben auf eine entfernbare optische Platte 31, wie eine
CD-ROM oder ein anderes optisches Medium. Das Festplatten
laufwerk 27, das Magnetplattenlaufwerk 28 und das optische
Plattenlaufwerk 30 sind über eine Festplattenlaufwerk-
Schnittstelle 32, eine Magnetplattenlaufwerk-Schnittstelle
33 bzw. eine optische Laufwerk-Schnittstelle 34 mit dem Sys
tembus 23 verbunden. Die Laufwerke und ihre zugehörigen com
puterlesbaren Medien bilden einen nichtflüchtigen Speicher
für computerlesbare Befehle, Datenstrukturen, Programmodule
und andere Daten für den Personal Computer 20. Obwohl die
hier beschriebene beispielhafte Umgebung eine Festplatte,
eine entfernbare Magnetplatte 29 und eine entfernbare
optische Platte 31 verwendet, wurde der Fachmann auf diesem
Gebiet verstehen, daß in der beispielhaften Betriebsumgebung
auch andere Arten computerlesbarer Medien verwendet werden
können, die Daten speichern können, auf die ein Computer zu
greifen kann, wie Magnetkassetten, Blitzspeicher-Karten
(Flash-Speicherkarte), digitale Bildplatten, Bernoulli-Kas
setten, Arbeitsspeicher (RAM), Festspeicher (ROM) und
dergleichen.
Auf der Festplatte, der Magnetplatte 29, der optischen Plat
te 31, dem ROM 24 oder dem RAM 25 können mehrere Program
module gespeichert werden, einschließlich eines Betriebssy
stems 35, eines oder mehrerer Anwendungsprogramme 36, ande
rer Programmodule 37 und Programmdaten 38. Der Benutzer kann
Befehle und Informationen in dem Personal Computer über Ein
gabeeinrichtungen, wie eine Tastatur 40 und eine Lenkvor
richtung 42, eingeben. Andere Eingabeeinrichtungen (nicht
gezeigt) können ein Mikrophon, einen Joystick, ein Spielpad,
eine Satellitenschüssel, einen Scanner oder dergleichen um
fassen. Diese und andere Eingabevorrichtungen sind mit der
Verarbeitungseinheit 21 häufig über eine serielle Port
schnittstelle 46 verbunden, die mit dem Systembus gekoppelt
ist, sie können jedoch auch über eine andere Schnittstelle
angeschlossen sein, wie einen parallelen Port, einen Game-
Port oder einen universellen, seriellen Bus (USB). Ein Moni
tor 47 oder eine andere Art Anzeigeeinrichtung ist ebenfalls
über eine Schnittstelle mit dem Systembus 23 verbunden, z. B.
über einen Videoadapter 48. Zusätzlich zu dem Monitor weisen
Personal- Computer üblicherweise andere Peripherieausgabege
räte (nicht gezeigt) auf, wie Lautsprecher und Drucker.
Der Personal Computer 20 kann in einer vernetzten Umgebung
arbeiten, die logische Verbindungen zu einem oder mehreren
entfernten Computern nutzt, wie dem entfernten Computer 49.
Der entfernte Computer 49 kann ein anderer Personal-Compu
ter, ein Server, eine Leitwegsteuereinrichtung (Router), ein
Netzwerk-PC, ein gleichrangiges Gerät oder ein anderer übli
cher Netzknoten sein, und er umfaßt üblicherweise viele oder
alle der oben in bezug auf den Personal-Computer 20 be
schriebenen Elemente, obwohl in Fig. 1 nur eine Speicher
vorrichtung 50 abgebildet ist. Die in Fig. 1 gezeigten
logischen Verbindungen umfassen ein lokales Netz (LAN) 51
und ein Fernnetz (WAN) 52. Solche Netzumgebungen sind in
Büros, unternehmensweiten Computernetzen, Intranetzen und
dem Internet allgemein üblich.
Wenn der Personal-Computer 20 in einer LAN-Netzumgebung ein
gesetzt wird, ist er mit dem lokalen Netz 51 über eine Netz
schnittstelle oder einen Adapter 53 verbunden. Wenn er in
einer WAN-Netzumgebung eingesetzt wird, umfaßt der Personal
Computer 20 üblicherweise ein Modem 54 oder eine andere Vor
richtung zum Aufbauen von Datenübertragungen über das Fern
netz 52, z. B. das Internet. Das Modem 54, das in dem oder
außerhalb des Computers liegen kann, ist mit dem Systembus
23 über die serielle Portschnittstelle 46 verbunden. In
einer Netzumgebung können Programmodule, die in bezug auf
den Personal Computer 20 dargestellt sind, oder deren Teile
in der entfernten Speichervorrichtung gespeichert sein. Man
wird verstehen, daß die gezeigten Netzverbindungen lediglich
Beispiele sind und daß auch andere Vorrichtungen zum Ein
richten eines Übertragungsweges zwischen den Computern ein
gesetzt werden können.
Der gezeigte Computer verwendet ein Betriebssystem, z. B. aus
der Windows-Betriebssystemreihe, die von der Microsoft Cor
poration erhältlich ist. Die im folgenden beschriebene Funk
tionsweise wird mit üblichen Programmiertechniken reali
siert, welche die Verwendung von OLE- und COM-Schnittstellen
umfaßt, die z. B. von Kraig Brockschmidt: Inside OLE2; Micro
soft Press, 1994 beschrieben wurde und auf die Bezug genom
men wird.
Fig. 2 zeigt Komponenten, die innerhalb des Computers 20
realisiert sind, um eine Datenübertragung zwischen HID-Ein
richtungen 100 und Klientprogrammen, wie dem gezeigten
Klientprogramm 102, vorzusehen. Der Begriff "HID-Einrich
tung" bezeichnet hier jede Einrichtung, die mit Hilfe des
HID-Protokolls in seiner aktuellen oder einer überarbeiteten
Fassung mit Rechnerkomponenten kommuniziert. Ein Klient
programm ist ein Programm oder eine Programmkomponente, ein
schließlich Komponenten des Betriebssystems, die HID-Daten
einheiten verwendet.
Wie in Fig. 2 gezeigt, sieht eine Transportschicht oder ein
Treiberstapel 104, die ein oder mehrere USB-Geräte oder
Treiber umfaßt, Datenübertragungen zu HID-Einrichtungen
gemäß USB-Normen und -Protokollen auf einer niedrigen Ebene
vor. Ein Treiber der HID-Klasse 106 ist über der Transport
schicht 104 realisiert und erzeugt die funktionsbezogenen
Geräteobjekte, welche die physischen Geräteobjekte steuern,
die von der Transportschicht (wie dem USB-Gerätetreibersta
pel) aufgelistet werden. Der Treiberstapel 104 sieht HID-
Reporte sowie HID-Reportdeskriptoren vor, welche die HID-
Reporte beschreiben. Die HID-Reporte haben, wie im ersten
Abschnitt dieser Anmeldung beschrieben, unterschiedliche
Größen und enthalten Datenelemente, die den Steuerelementen
entsprechen, die von den HID-Einrichtungen vorgesehen wer
den. Die HID-Reportdeskriptoren spezifizieren die Anordnung,
Formatierung und Verwendungsspezifikationen der Datenein
heiten innerhalb der HID-Reporte. Der Treiber der HID-Klasse
106 ist so konfiguriert, daß er die HID-Reporte und die HID-
Reportdeskriptoren anfordert und von dem USB-Gerätetreiber
empfängt.
Betriebssystemklienten können die Treiber der HID-Klasse
aufrufen, um HID-Reporte und Reportdeskriptoren von HID-Ein
richtungen sowie andere Datenarten, die von HID-Einrichtun
gen vorgesehen werden, zu lesen. Diese Komponenten können
auch auf HID-Einrichtungen schreiben, indem sie geeignet
formatierte Reporte vorsehen. Anwendungsprogrammklienten
können ferner mit HID-Einrichtungen über den Treiber der
HID-Klasse kommunizieren, allerdings nur indirekt - Anwen
dungsprogramme kommunizieren in Wirklichkeit mit HID-Ein
richtungen, indem sie Datei-I/O-Aufrufe über das Betriebs
system des Rechners machen, das seinerseits direkt mit den
Treibern der HID-Klasse kommuniziert.
Der Treiber der HID-Klasse 106 wird grundsätzlich mit kon
ventionellen Techniken realisiert, abgesehen von der er
heblichen Verbesserung, daß alle HID-Reporte normiert wer
den, bevor sie an die Klientprogramme weitergegeben werden.
Eine Art der Durchführung dieser Normierung besteht darin,
jedem Report, der nicht bereits eine Report-ID aufweist,
eine HID-Report-ID hinzuzufügen. Gemäß der HID-Spezifikation
müssen Reporte nur dann Report-IDs aufweisen, wenn es mehr
als einen Report gibt, der von einer Einrichtung stammt;
wenn es von einer Einrichtung nur einen Report gibt, ist die
Report ID optional.
In einem weiteren Schritt zum Normieren der HID-Berichte
verleiht der Treiber allen Reporten von einer gegebenen HID-
Einrichtung die gleiche Größe. Im einzelnen ermittelt der
Treiber die Größe des größten Reports, der von einer bestim
mten Einrichtung erzeugt wurde (zusätzlich möglicherweise
zugefügter Report-IDs), und er füllt alle Reporte von dieser
Einrichtung auf, so daß ihre Größe gleich der Größe des
größten Reports ist.
Die Erfindung schlägt somit ein Verfahren vor, daß von einem
Treiber der HID-Klasse durchgeführt wird und HID-Reporte an
anfragende Klientprogramme erst nach deren Normierung zu
rückgibt. Dieses Verfahren umfaßt die Schritte: Empfangen
von HID-Reporten von einer HID-Einrichtung und anschließen
des Normieren der Reporte durch Auffüllen der Reporte (mit
Bytes, die beliebige Werte haben können), um sie gleich groß
zu machen.
Dieser Prozeß ist in Fig. 3 gezeigt. Mehrere verschiedene
Reporte 108, die alle eine andere Länge haben, werden von
einer bestimmten HID-Einrichtung abgerufen. Bevor sie zu den
anfragenden Programmen weitergegeben werden, füllt der
Treiber der HID-Klasse 108 sie auf, so daß sie alle dieselbe
Länge haben. Die normierten Reporte werden in Fig. 3 durch
das Bezugszeichen 109 bezeichnet - wobei der aufgefüllte
Teil durch gestrichelte Linien angedeutet ist. Ahnlich wird
ein einzelner Report 110 von einer anderen Einrichtung ab
gerufen. Der Report 110 weist, so wie er von dem
Transportstapel wiedergewonnen wurde, keine Report-ID auf.
Der Treiber der HID-Klasse 106 fügt daher eine Report-ID als
das erste Bite des Reports hinzu, so daß sich ein normierter
Report 111 ergibt.
Das Normieren der Reporte bietet wichtige Vorteile. Einer
der wichtigsten Vorteile ist, daß dadurch Anwendungs
programme sicherstellen können, daß bei jedem Lesen von dem
Treiber 106 ein und nur ein HID-Report zurückgegeben wird.
Man betrachte z. B. den Fall, der sich ergibt, wenn eine HID-
Einrichtung zwei HID-Reporte unterschiedlicher Länge er
zeugt. Jeder dieser Berichte kann zu jeder beliebigen Zeit
erzeugt werden; ein anfragender Klient weiß nicht, welcher
der beiden Reporte als nächster kommt. Wenn zum Lesen des
nächsten Reports eine Datei-Ein/Ausgabe (I/O) durchgeführt
wird, weiß der Klient (ohne Normierung) nicht, wieviel Byte
er lesen sollte. Es ist daher wahrscheinlich, daß entweder
zwei Lesevorgänge notwendig sind oder daß beim ersten
Lesevorgang ein Teil des nächsten Reports gelesen wird.
Dieses Problem ergibt sich bei der oben beschriebenen Nor
mierung nicht, weil alle Reporte dieselbe Länge haben. Ein
Klient kann sich dafür entscheiden, entweder einen gesamten
Report oder ein ganzzahliges Vielfaches einer Reportlänge zu
lesen.
Wenn man sicherstellt, daß alle Reporte mit einer Report-ID
beginnen, kann ein Klient ähnlich erwarten, daß die nachfol
genden Daten immer bei einer bestimmten Stelle beginnen.
Obwohl die Normierungsprozedur hier mit Bezug auf Leseopera
tionen beschrieben wurde, wird sie auch bei Schreiboperatio
nen eingesetzt. Wenn auf eine HID-Einrichtung geschrieben
wird, sieht ein anfragender Klient Reporte vor, die alle die
gleiche Größe haben und Datenelemente enthalten, welche auf
die HID-Einrichtung geschrieben werden sollen. Bevor der
Treiber auf die Einrichtung schreibt, entfernt er die
zusätzliche Länge aus einem normierten Bericht sowie die Re
port-ID, wenn die Einrichtung keine solche ID erwartet. Wie
derum ermöglicht dies Klientprogrammen Reporte und entspre
chende Puffer mit gleicher Größe einzusetzen.
Das System der Fig. 2 umfaßt eine Parserkomponente 130, die
Parser- oder Analysedienste für Klientprogramme vorsieht.
Der Parser 130 wird mit einer dynamischen Bibliothek DLL
(dynamically loadable library) realisiert. Der Parser und
seine zugehörigen Funktionen werden mittels Befehlen
definiert und realisiert, die in einem Computerspeicher lie
gen und von dem Prozessor des Computers ausgeführt werden.
Die für die Erfindung wichtigsten Aspekte der Schnittstellen
und Schnittstellenfunktionen eines beispielhaften Parsers
gemäß der Erfindung sind mit Bezug auf Fig. 4 beschrieben.
Fig. 4 zeigt ein Klientprogramm 102 und einen Parser (Syn
taxanalysierer) 130. Der Parser 130 definiert und bietet
mehrere Schnittstellenfunktionen an, die über übliche Mittel
von dem Klientprogramm 102 aufrufbar sind. Diese Funktionen
sind in Fig. 4 durch Kreise dargestellt, die über Linien
mit dem Parserblock 130 verbunden sind. Die Funktionen um
fassen eine Deskriptoranalysefunktion 132, eine oder mehrere
Dateneinheiten-Wiedergewinnungsfunktionen 133 und eine Samm
lungsidentifkationsfunktion 134. Die Funktionen werden mit
üblichen Programmiertechniken realisiert, z. B. durch
Programmieren der Funktionen in einer höheren, kompilierten
Sprache, wie C. Jede Funktion empfängt ein oder mehrere
Argumente und gibt einen oder mehrere Werte oder Datenein
heiten an das aufrufende Programm zurück. Fig. 4 zeigt die
Argumente, die für die Erfindung am relevantesten sind.
Die Deskriptoranalysefunktion 132 empfängt Funktionsargumen
te, die einen tatsächlichen HID-Reportdeskriptor umfassen,
der von einem Treiber der HID-Klasse 106 erhalten wurde.
Abhängig von dem Aufruf mit diesem Argument analysiert die
Deskriptoranalysefunktion 132 den Reportdeskriptor und er
zeugt eine Datenstruktur, die einen analysierten Report
deskriptor enthält. Die Datenstruktur wird an das Klient
programm zurückgegeben, vorzugsweise durch Weitergeben eines
Zeigers an die Datenstruktur.
Im allgemeinen ist die Datenstruktur eine erweiterte Version
des rohen Reportdeskriptors. Die Datenstruktur ist im all
gemeinen als eine Anordnung aus Beschreibungen von Datenein
heiten aufgebaut, die einzelnen Tasten-Steuerelemente, Wert-
Einstellmitteln oder regelmäßig angeordneten Dateneinheiten
entsprechen. Die Beschreibungen der Dateneinheiten, die je
weils einer bestimmten Dateneinheit entsprechen, geben an,
in welchem Report die Dateneinheit vorhanden ist, sowie ihre
Position und Größe in dem Report und ihre HID-Eigenschaften
(einschließlich der physischen Min/Max, logischen Min/Max,
Einheiten etc.). Weitere Information in der Beschreibung
einer Dateneinheit umfaßt die Verwendung (Seite und Index)
der entsprechenden Dateneinheit, ob sie einer Taste oder
einem Wert entspricht, ob sie als eine einzelne Datenein
heit, ein Bitfeld oder Teil einer Matrix mitgeteilt wird, ob
die Einheit Teil einer Sammlung ist, und wenn ja, welcher
Sammlung, etc.
Die analysierte Reportbeschreibung gibt auch die maximale
Länge der Reporte an, die von einer bestimmten Einrichtung
erzeugt wurden und ob Report-IDs an die jeweiligen Reporte
angefügt werden sollen. Diese Information wird von dem
Treiber der HID-Klasse 106 bei der Durchführung seiner Nor
mierungsschritte verwendet.
Kurz gesagt erhält jedes Element der Datenstruktur eine
vollständigen Beschreibung eines Steuerelementes oder einer
Anordnung aus Steuerelementen. Dies steht in direktem
Gegensatz zu dem rohen Reportdeskriptor, bei dem sich die
Beschreibungen der Steuerelemente weitgehend auf den Kontext
verlassen, in dem sie auftreten (wegen des möglichen Vorhan
denseins von globalen Variablen und Zustands-Speicher/Wie
derherstellungs-Befehlen), was eine ausführliche Analyse
erfordert, um verständliche Beschreibungen gegebener Daten
einheiten zu extrahieren. Die genaue Anordnung und das Pro
tokoll, die bei der von der Deskriptoranalysefunktion 132
zurückgegebenen Datenstruktur verwendet werden, ist nicht
entscheidend, abgesehen davon, daß sie die erforderliche
Information über die Reporte unkompliziert und verständlich
wiedergibt.
Ferner hat die spezielle Struktur, die in der analysierten
Reportbeschreibung verwendet wird, nur für den Parser selbst
eine Bedeutung. Obwohl die Reportbeschreibung von der Des
kriptoranalysefunktion 132 an den anfragenden Klienten zu
rückgegeben wird, umfassen die Schritte zum Wiedergewinnen
der Dateneinheiten gemäß der Erfindung weitere Funktionen,
die von dem Parser 130 ausgeführt werden und für die der
Parser die analysierte Reportbeschreibung verwendet. Bei der
Erfindung muß das aufrufende Klientprogramm die analysierten
Reportbeschreibungen nie verwenden, außer um sie als Argu
mente in Dateneinheit-Wiedergewinnungsfunktionen vorzusehen.
Die Dateneinheit-Wiedegewinnungsfunktionen 133 werden von
Klientprogrammen 130 aufgerufen, um Dateneinheiten wieder
zugewinnen, die bestimmten Verwendungen entsprechen. Jede
Dateneinheit-Wiedergewinnungsfunktion 133 empfängt Argumen
te, einschließlich folgender Argumente:
- - eine analysierte Reportbeschreibung (die mit der Des kriptoranalysefunktion 132 erhalten wird);
- - einen HID-Bericht (der von dem Treiber der HID-Klasse 106 erhalten wird);
- - eine HID-Verwendungsspezifikation; und
- - eine optionale Sammlungs-ID, welche eine HID-Sammlung spezifiziert, auf die sich der Reportdeskriptor be zieht.
Abhängig von diesen Argumenten untersucht eine Dateneinheit-
Wiedergewinnungsfunktion den bezeichneten HID-Report, findet
eine oder mehrere Dateneinheiten, welche dieselbe Verwen
dungsspezifikation haben wie die in den Argumenten, und gibt
die Dateneinheit(en) an den anfragenden Klient zurück. Die
analysierte Reportbeschreibung wird dazu verwendet, Daten
einheiten zu lokalisieren, die den gegebenen Verwendungs
spezifikationen entsprechen. Wenn eine Sammlungs-ID in die
sen Argumenten enthalten ist, grenzt die Dateneinheit-Wie
dergewinnungsfunktion die zurückgegebenen Dateneinheiten auf
solche in der spezifizierten Sammlung ein.
Ein Beispiel einer Dateneinheit-Wiedergewinnungs-Schnitt
stellenfunktion wird als "HidP_GetUsages" bezeichnet. Dies
ist ein Beispiel einer Tasten-Wiedergewinnungsfunktion. Die
HID-Verwendungsspezifikation in diesem Beispiel umfaßt nur
eine Verwendungsseite. Die Funktion sucht den HID-Report
nach Dateneinheiten ab, welche einem Verwendungsindex inner
halb der gegebenen Verwendungsseite entsprechen, und gibt
eine Anordnung aus Verwendungsindices zurück, die HID-Tasten
entsprechen, welche gedrückt wurden - und zwar unabhängig
davon, ob der HID-Report Indexfelder oder Bitfelder enthält.
"HidP-GetUsageValue" ist ein anderes Beispiel für eine Da
teneinheit-Wiedergewinnungsfunktion. Bei dieser Funktion be
steht die Verwendungsspezifikation sowohl aus einer Verwen
dungsseite als auch aus einem Verwendungsindex. Die Funktion
sucht innerhalb des bezeichneten HID-Reports nach einer Da
teneinheit, welche der spezifizierten Verwendungsseite und
dem Verwendungsindex entspricht, und gibt diese Dateneinheit
(in diesem Fall einen Mehrbitwert) zurück, wenn sie in dem
Report gefunden wurde.
"HidP-GetUsageValueArray" ist noch ein weiteres Beispiel für
eine Dateneinheit-Wiedergewinnungsfunktion. Diese Funktion
empfängt Argumente, einschließlich einer Verwendungsseite
und eines Verwendungsindex, und gibt eine Anordnung aus ent
sprechenden Dateneinheiten des Wert-Typs zurück. Diese
Funktion wird in Verbindung mit den Verwendungen eingesetzt,
die mehrere Dateneinheiten einer einzelnen Verwendung ent
halten.
Man beachte, daß alle diese Dateneinheiten-Wiedergewinnungs
funktionen so gewählt sind, daß sie normierte HID-Berichte
erwarten. Die analysierte Reportbeschreibung, die an die
Dateneinheit-Wiedergewinnungsfunktion weitergegeben wird,
stützt sich auf normierte Reporte. Man beachte auch, daß
jede Dateneinheit-Wiedergewinnungsfunktion eine von zwei
verschiedenen Optionen zurückgibt: Dateneinheit(en) oder
einen Fehlercode, der anzeigt, ob ein Steuerelement inner
halb der empfangenen Verwendungsspezifikation bei der Ein
richtung existiert, welche den bezeichneten Report erzeugt
hatte. Genauer gesagt gibt der Fehlercode entweder an, daß
eine Steuerung bei der spezifizierten Verwendung für die
fragliche Einrichtung nicht vorhanden ist, oder daß die
Steuerung bei der Einrichtung vorhanden ist, jedoch in dem
vorgelegten Report fehlt (möglicherweise ist sie in nachfol
genden Reporten vorhanden).
Schnittstellenfunktionen, die von dem Parser 130 vorgesehen
werden, umfassen ferner eine Sammlungsidentifikation 134.
Diese Funktion wird vorgesehen, um Anwendungsprogrammen das
Arbeiten mit HID-Sammlungen zu erleichtern. Wie oben er
wähnt, sind Sammlungs-IDs optionale Parameter für die Daten
einheit-Wiedergewinnungsfunktion. Die Sammlungs-IDs werden
über die Sammlungsidentifikationsfunktion 134 erhalten.
Die Sammlungsidentifikationsfunktion 134 empfängt ein Argu
ment, das eine analysierte Reportbeschreibung umfaßt, die
zuvor mit der Deskriptoranalysefunktion 132 erhalten wurde.
Gestützt auf diese Beschreibung gibt die Funktion eine An
ordnung aus Datenstrukturen zurück, welche HID-Sammlungen,
deren HID-Verwendungen und ihre Beziehungen spezifizieren.
Die Reihenfolge der Sammlungen in der Anordnung gibt für
jede Sammlung eindeutige Sammlungs-IDs an. Jede Datenstruk
tur in der Anordnung stellt eine Sammlung dar und
spezifiziert deren Verwendung sowie einen Index zu ver
wandten Sammlungen in der Anordnung. Die Datenstruktur be
zeichnet z. B. eine Stammsammlung (wenn es eine gibt), einen
nächsten Nachkommen in einer verknüpften Liste aus Nachkom
men und ein erstes Kind in einer verknüpften Liste aus
Kindern. Dadurch kann ein Klient leicht die Struktur ver
schachtelter Sammlungen ermitteln und seinerseits
zusätzliche Bedeutungen in Erfahrung bringen, die zu ver
schiedenen Steuerelementen gehören - wenn es doppelte Daten
einheiten gibt, können sie gestützt auf die Sammlungen
unterschieden werden, zu denen sie gehören. Als ein
konkretes Beispiel einer Sammlungsidentifikationsfunktion
seien die Funktion "HidP_GetLinkCollectionNodes" und die
Struktur "HIDP_LINK_COLLECTION_NODE" genannt.
Diese Funktionen vereinfachen erheblich den Prozeß zum Wie
dergewinnen von Datenelementen aus HID-Einrichtungen. Ein
Verfahren zum Lesen von HID-Daten gemäß der Erfindung umfaßt
einen Anfangsschritt, bei dem ein HID-Reportdeskriptor er
halten wird und dieser über die Deskriptoranalysefunktion
132 an den Parser 130 weitergegeben wird. Der Parser analy
siert (parsed) den Deskriptor und gibt eine analysierte
Reportbeschreibung gestützt auf den Reportdeskriptor zurück.
Diese Schritte werden während einer Initialisierungssequenz
durchgeführt.
Zum Lesen von Daten von der HID-Einrichtung erhält das
Klientprogramm einen HID-Report von dem Treiber der HID-
Klasse 106 und ruft eine Dateneinheit-Wiedergewin
nungsfunktion 133 mit Argumenten auf, die den HID-Report,
die analysierte Reportbeschreibung, eine Verwendungs
spezifikation und eine optionale Sammlungs-ID umfassen. Die
Dateneinheit-Wiedergewinnungsfunktion (die vom Parser 130
realisiert wird) sucht den angegebenen HID-Report nach einem
oder mehreren Datenelementen ab, welche dieselbe Ver
wendungsspezifikation haben, die in den Argumenten der
Funktion angegeben sind, und gibt diese Elemente an das
aufrufende Klientprogramm zurück. Wenn eine Sammlungs-ID
spezifiziert ist, wird die Suche auf die angegebene Sammlung
der Datenelemente begrenzt. Dieser Prozeß wird für nachfol
gende HID-Reporte wiederholt, um weitere Eingangsdaten zu
lesen.
Das Schreiben wird auf ähnliche Weise durchgeführt. Der Par
ser umfaßt eine oder mehrere Datenelement-Schreibschnitt
stellenfunktionen, welche Reporte zum Schreiben auf HID-Ein
richtungen vorbereiten. Jede Dateneinheit-Schreibfunktion
hat Argumente, welche eine Dateneinheit (oder mehrere Daten
einheiten), eine analysierte Reportbeschreibung, einen HID-
Report, eine Verwendungsspezifikation und eine optionale
Sammlungs-ID umfassen. Am Anfang wird der HID-Report auf
lauter Nullen initialisiert. Die Datenelement-Schreib
funktion ermittelt die geeignete Stelle in dem Report und
positioniert und formatiert die Datenelemente gestützt auf
die angegebene Verwendung richtig in dem Report. Wenn eine
Sammlungs-ID spezifiziert ist, werden die Datenelemente für
diese Sammlung richtig positioniert. Die Datenelement-
Schreibfunktion schreibt auch die richtige Report-ID in den
Report, der dem Report entspricht, in dem die angegebene
Verwendung liegt. Die Funktion gibt dann den Report an das
anfragende Klientprogramm zurück, das seinerseits den Report
über den Treiber 106 in eine HID-Einrichtung schreibt. Wenn
mehrere Verwendungen geschrieben werden sollen, kann der
Klient die Datenelement-Schreibfunktion mehrmals mit demsel
ben Report aufrufen (und verschiedene Verwendungen angeben),
bevor der Report in die HID-Einrichtung geschrieben wird -
solange alle spezifizierten Verwendungen in demselben Report
liegen. Ein Fehlercode wird zurückgeben, wenn eine der Ver
wendungen zu einem anderen Report gehört. Zusätzlich wird
ein Fehlercode zurückgegeben, wenn die angegebene Verwendung
in einem Report nicht vorhanden ist oder wenn Beschränkungen
des HID-Reportformats es verbieten, in den vorgelegten
Report weitere spezifizierte Verwendungen zu schreiben.
Die Erfindung bietet eine erhebliche Verbesserung im Ver
gleich zum Stand der Technik. In der Vergangenheit waren
Anwendungsprogramme für das Verschlüsseln von HID-Report
daten verantwortlich. Da sich Reporte von unterschiedlichen
Geräten sehr voneinander unterscheiden, war dies eine sehr
schwierige Aufgabe. Mit der Erfindung wird jedoch die Ar
beit, die zum Unterstützen verschiedener HID-Einrichtungen
notwendig ist, erheblich vermindert. Sobald die Initialisie
rung abgeschlossen ist, muß ein anfragender Klient wenig
mehr als eine HID-Verwendung spezifizieren - die Datenele
ment-Wiedergewinnungsfunktionen analysieren die HID-Reporte
und geben die angeforderte Verwendung ohne weitere Arbeit
durch den Klienten zurück. Der Klient verwendet denselben
Wiedergewinnungsmechanismus, wenn Datenelemente in den HID-
Reporten als Indexfelder oder Bitfelder definiert werden.
Die Vorteile dieser Funktionsweise sind erheblich. Man nehme
an, daß ein relativ einfaches Spielprogramm nur die X- und
Y-Werte eines Joysticks verwendet. In der Vergangenheit
konnte das Spiel entweder mit einer einzigen Art eines HID-
Joysticks konfiguriert werden, oder es konnte mit einer sehr
komplizierten Parserkomponente aufgebaut werden, um zu be
stimmen, wie die X- und Y-Werte von jedem HID-Joystick er
mittelt werden sollen. Mit der Erfindung holt sich das Spiel
jedoch einfach die Reporte und fordert dann X- und Y-Joy
stickverwendungen von einer Datenelement-Wiedergewinnungs
funktion an. Aus der Perspektive des Programms sind die fol
genden variablen Faktoren irrelevant. Die Anzahl der Repor
te, die von dem Joystick erzeugt werden; die Größe der Re
porte; ob diese Reporte Report-IDs enthalten; und die Anord
nung und Formatierung der Datenelemente innerhalb der Re
port. Das Spielprogramm kann alle diese Faktoren ignorieren
und funktioniert dennoch mit jedem HID-Joystick, der X- und
Y-Joystickelemente aufweist. Dies gilt sogar dann, wenn der
Joystick mehrere zusätzliche Steuereinrichtungen hat, die
von dem Spielprogramm nicht verwendet werden. Neue Joysticks
mit zusätzlichen Steuerelementen mit neuen Verwendungen kön
nen noch immer mit dem Spielprogramm arbeiten (auch dann,
wenn die neuen Steuerelemente nicht verwendet werden).
Ferner sieht die Erfindung eine einfache und bequeme Weise
vor, wie die Anwendungsprogramme mit neuen Einrichtungen
arbeiten können, die weniger Steuereinrichtungen haben, als
das Programm optimal nutzen kann. Wenn eine solche Einrich
tung angeschlossen wird, geben die Datenelement-Wiedergewin
nungsfunktionen immer dann einen Fehlerwert zurück, wenn ein
Datenelement angefordert wird, das einer Verwendung ent
spricht, die bei der Einrichtung nicht existiert. Das Anwen
dungsprogramm kann dann Schritte unternehmen, um äquivalente
Funktionsweisen mit anderen Mitteln vorzusehen.
Ähnlich schafft die Reportnormierung erhebliche Vorteile
sowohl für Klientprogramme als auch für den Parser. Durch
die Reportnormierung können Klienten leicht einzelne Reporte
lesen. Zusätzlich macht diese Größennormierung es einfacher,
an Parser-Funktionen weiterzugeben. Das durchgängige Hinzu
fügen von Report-IDs zu den Reporten macht es einfacher,
Datenelemente innerhalb der Reporte zu Indexieren - Daten
beginnen immer bei dem zweiten Byte des Reports.
Ein weiterer Vorteil der Erfindung besteht darin, daß Samm
lungsbeschreibungen für Klientprogramme in einem einfach
entschlüsselbaren Feldformat zur Verfügung stehen. Dies er
möglicht es den Klienten, einfache Listen der Sammlungs
knoten zusammen mit ihren jeweiligen Verwendungen zu erhal
ten. Dadurch können die Klienten wiederum optional Sammlun
gen für die Datenelement-Wiedergewinnungsfunktion
spezifizieren, um die angeforderten Datenelemente genauer zu
beschreiben.
Obwohl die Erfindung in bezug auf bestimmte strukturelle
Merkmale und/oder Verfahrensschritte beschrieben wurde, muß
man verstehen, daß die in den folgenden Ansprüchen definier
te Beschreibung nicht notwendig auf diese speziellen Merkma
le und Schritte beschränkt ist. Die in der vorstehenden Be
schreibung, den Ansprüchen und der Zeichnung offenbarten
Merkmale können sowohl einzeln als auch in beliebiger Kom
bination für die Verwirklichung der Erfindungen in ihren
verschiedenen Ausgestaltungen von Bedeutung sein. Die spezi
fischen Merkmale und Schritte sind lediglich Beispiele zur
Realisierung.
Claims (53)
1. Computersystem mit
einem Gerätetreiber, der HID-Reporte, die Datenein heiten enthalten, und einen HID-Reportdeskriptor vorsieht, der die HID-Reporte und die Anordnung, Formatierung und Verwendungsspezifikationen inner halb der HID-Reporte beschreibt;
einem Treiber der HID-Klasse, der so konfiguriert ist, daß er die HID-Reporte und den HID-Reportdes kriptor von dem Gerätetreiber anfordert und emp fängt; und
einer ersten Schnittstellenfunktion, die von einem Klientprogramm aufrufbar ist, wobei die erste Schnittstellenfunktion eine Verwendungsspezifikation von dem Klientprogramm empfängt und, abhängig davon, eine oder mehrere Dateneinheiten von einem spezif zierten HID-Report, welche dieselben Verwendungsspe zifikationen wie die von dem Klientprogramm empfan gen haben, findet und zurückbringt.
einem Gerätetreiber, der HID-Reporte, die Datenein heiten enthalten, und einen HID-Reportdeskriptor vorsieht, der die HID-Reporte und die Anordnung, Formatierung und Verwendungsspezifikationen inner halb der HID-Reporte beschreibt;
einem Treiber der HID-Klasse, der so konfiguriert ist, daß er die HID-Reporte und den HID-Reportdes kriptor von dem Gerätetreiber anfordert und emp fängt; und
einer ersten Schnittstellenfunktion, die von einem Klientprogramm aufrufbar ist, wobei die erste Schnittstellenfunktion eine Verwendungsspezifikation von dem Klientprogramm empfängt und, abhängig davon, eine oder mehrere Dateneinheiten von einem spezif zierten HID-Report, welche dieselben Verwendungsspe zifikationen wie die von dem Klientprogramm empfan gen haben, findet und zurückbringt.
2. Computersystem nach Anspruch 1, bei dem die erste
Schnittstellenfunktion zusätzlich den spezifizierten
HID-Report von dem Klientprogramm empfängt.
3. Computersystem nach Anspruch 1, bei dem die erste
Schnittstellenfunktion zusätzlich den spezifizierten
HID-Report und eine Datenstruktur von dem Klientpro
gramm empfängt, wobei die Datenstruktur eine analy
sierte Reportbeschreibung gestützt auf den HID-Re
portdeskriptor enthält.
4. Computersystem nach einem der vorangehenden Ansprü
che, bei dem die erste Schnittstellenfunktion zu
sätzlich einen Sammlungsidentifikator empfängt und
abhängig davon, die Datenelemente auf solche
Elemente in einer HID-Sammlung begrenzt, die der
Sammlungsidentifikator spezifiziert.
5. Computersystem nach einem der vorangehenden Ansprü
che mit einer zweiten Schnittstellenfunktion, die
den HID-Reportdeskriptor empfängt und abhängig davon
eine Datenstruktur zurückgibt, die eine analysierte
Reportbeschreibung enthält, wobei die erste Schnitt
stellenfunktion zusätzlich die Datenstruktur emp
fängt und diese Datenstruktur zum Auffinden der
Dateneinheiten verwendet.
6. Computersystem nach Anspruch 5, bei dem die zweite
Schnittstellenfunktion den HID-Reportdeskriptor von
dem Klientprogramm empfängt.
7. Computersystem nach einem der vorangehenden Ansprü
che, bei dem die erste Schnittstellenfunktion einen
ersten Fehlercode zurückgibt, wenn es keine Daten
einheit mit der empfangenen Verwendungsspezifikation
in dem spezifizierten HID-Report gibt, wobei der
spezifizierte HID-Report von einer bestimmten Ein
richtung erzeugt worden ist und der Fehlercode an
gibt, ob ein Steuerelement mit der empfangenen Ver
wendungsspezifikation auf dieser Einrichtung vorhan
den ist.
8. Computersystem nach einem der vorangehenden Ansprü
che, bei dem der Treiber der HID-Klasse ferner so
konfiguriert ist, daß er HID-Reporte von einer be
stimmten HID-Einrichtung normiert, indem er sie
gleich groß macht.
9. Computersystem nach einem der vorangehenden Ansprü
che, bei der Treiber der HID-Klasse so konfiguriert
ist, daß er HID-Reporte normiert, indem er jedem
HID-Report, der nicht bereits eine Report-ID ent
hält, eine Report-ID hinzufügt.
10. Computersystem nach einem der vorangehenden Ansprü
che, bei dem die empfangene Verwendungsspezifikation
eine Verwendungsseite identifiziert, wobei die zu
rückgegebenen Dateneinheiten eine Anordnung aus Ver
wendungsindices umfassen, die HID-Tasten entspre
chen, die gedrückt werden, und zwar unabhängig da
von, ob der spezifizierte HID-Report Indexfelder
oder Bitfelder enthält.
11. Computersystem nach einem der vorangehenden Ansprü
che, bei dem die zurückgegebenen Dateneinheiten meh
rere HID-Werte umfassen.
12. Computersystem nach einem der vorangehenden Ansprü
che, mit einer weiteren Schnittstellenfunktion, die
eine Anordnung aus Datenstrukturen zurückgibt, wel
che HID-Sammlungen und deren Beziehungen zueinander
gestützt auf den HID-Reportdeskriptor angeben.
13. Computersystem nach Anspruch 12, bei dem die erste
Schnittstellenfunktion zusätzlich einen Sammlungs
identifikator empfängt und abhängig davon Datenele
mente in einer HID-Sammlung findet, die von dem
Sammlungsidentifikator spezifiziert sind.
14. Computersystem nach einem der vorangehenden Ansprü
che, bei dem der Gerätetreiber auch HID-Report in
HID-Einrichtungen schreibt, und mit einer weiteren
Schnittstellenfunktion, die eine Dateneinheit und
eine Verwendungsspezifikation annimmt und abhängig
davon die Dateneinheit in einem HID-Report, der in
eine HID-Einrichtung geschrieben wird, positioniert
und formatiert.
15. Computerlesbares Speichermedium enthaltend von einem
Computer ausführbare Befehle, die eine erste
Schnittstellenfunktion in einem Computersystem defi
nieren, mit einer HID-Einrichtung, die HID-Reporte
vorsieht, welche Dateneinheiten und einen HID-Re
portdeskriptor zum Beschreiben der HID-Reporte und
der Anordnung, Formatierung und Verwendungsspezi
fikationen der Datenelemente innerhalb der HID-
Reporte enthalten; wobei die erste Schnittstellen
funktion einen HID-Report und eine Verwendungsspe
zifikation von einem Klientprogramm empfängt und
abhängig davon eine oder mehrere Dateneinheiten aus
dem HID-Report, welche dieselben Verwendungsspezi
fikationen wie die von dem Klientprogramm empfange
nen haben, findet und zurückgibt.
16. Computerlesbares Speichermedium nach Anspruch 15,
bei dem die erste Schnittstellenfunktion zusätzlich
eine analysierte Reportbeschreibung gestützt auf den
HID-Reportdeskriptor von dem Klientprogramm emp
fängt.
17. Computerlesbares Speichermedium nach Anspruch 15
oder 16, bei dem die erste Schnittstellenfunktion
zusätzlich einen Sammlungsidentifikator empfängt und
abhängig davon die zurückgegebenen Datenelemente auf
solche Elemente in einer HID-Sammlung beschränkt,
die von dem Sammlungsidentifikator spezifiziert
sind.
18. Computerlesbares Speichermedium nach einem der An
sprüche 15 bis 17, bei dem die Befehle eine zweite
Schnittstellenfunktion definieren, die den HID-Re
portdeskriptor empfängt und abhängig davon eine ana
lysierte Reportbeschreibung zurückgibt, wobei die
erste Schnittstellenfunktion zusätzlich die analy
sierte Reportbeschreibung empfängt und diese analy
sierte Reportbeschreibung zum Finden der Datenele
mente verwendet.
19. Computerlesbares Speichermedium nach einem der An
sprüche 15 bis 18, bei dem die erste Schnittstellen
funktion einen Fehlercode zurückgibt, wenn es kein
Datenelement mit der empfangenen Verwendungsspezifi
kation in dem empfangenen HID-Report gibt, wobei der
spezifizierte HID-Report von einer bestimmten Ein
richtung erzeugt wurde, und wobei der Fehlercode
anzeigt, ob ein Steuerelement mit der empfangenen
Verwendungsspezifikation in dieser Einrichtung vor
handen ist.
20. Computerlesbares Speichermedium nach einem der An
sprüche 15 bis 19, bei dem die Befehle eine zweite
Schnittstellenfunktion definieren, welche den HID-
Reportdeskriptor empfängt und abhängig davon eine
Datenstruktur zurückgibt, die eine analysierte Re
portbeschreibung enthält, wobei die erste Schnitt
stellenfunktion zusätzlich die Datenstruktur emp
fängt und die Datenstruktur zum Finden der Datenein
heiten verwendet.
21. Computerlesbares Speichermedium nach einem der An
sprüche 15 bis 20, bei dem die empfangene Verwen
dungsspezifikation eine Verwendungsseite identifi
ziert und die zurückgegebenen Dateneinheiten eine
Anordnung aus Verwendungsindices umfassen, die HID-
Tasten entsprechen, die gedrückt werden, und zwar
unabhängig davon, ob der HID-Report Indexfelder oder
Bitfelder enthält.
22. Computerlesbares Speichermedium nach einem der An
sprüche 15 bis 21, bei dem die zurückgegebenen Da
teneinheiten mehrere HID-Werte umfassen.
23. Computerlesbares Speichermedium nach einem der An
sprüche 15 bis 22, bei dem die Befehle eine weitere
Schnittstellenfunktion definieren, die eine Anord
nung aus Datenstrukturen zurückgibt, welche gestützt
auf einen HID-Reportdeskriptor HID-Sammlungen und
ihre Beziehungen zueinander spezifizieren.
24. Computerlesbares Speichermedium nach einem der An
sprüche 15 bis 23, bei dem die Befehle eine weitere
Schnittstellenfunktion definieren, die eine Daten
einheit und eine Verwendungsspezifikation annimmt
und abhängig davon die Dateneinheit in einem HID-
Report zum Schreiben in eine HID-Einrichtung posi
tioniert und formatiert.
25. Verfahren zum Lesen von HID-Dateneinheiten mit fol
genden Verfahrensschritten:
Erhalten eines HID-Reportdeskriptors, der zugehörige HID-Reporte und die Anordnung, Formatierung und Ver wendungsspezifikationen der Dateneinheiten innerhalb dieser HID-Reporte beschreibt;
Übergeben des HID-Reportdeskriptors über eine Schnittstelle an einen Parser;
Analysieren des HID-Reportdeskriptors mit dem Parser und Zurückgeben einer analysierten Reportbeschrei bung gestützt auf den HID-Reportdeskriptor;
Erhalten eines HID-Reports, der Dateneinheiten ent hält, die von dem HID-Deskriptor beschrieben werden;
Aufrufen einer ersten Schnittstellenfunktion mit Argumenten, die den HID-Report, die analysierte Re portbeschreibung und eine Verwendungsspezifikation umfassen;
wobei die ersten Schnittstellenfunktion eine oder mehrere Dateneinheiten von dem HID-Report zurück gibt, welche die Verwendungsspezifikationen haben, die in den Argumenten der ersten Schnittstellen funktion spezifiziert sind.
Erhalten eines HID-Reportdeskriptors, der zugehörige HID-Reporte und die Anordnung, Formatierung und Ver wendungsspezifikationen der Dateneinheiten innerhalb dieser HID-Reporte beschreibt;
Übergeben des HID-Reportdeskriptors über eine Schnittstelle an einen Parser;
Analysieren des HID-Reportdeskriptors mit dem Parser und Zurückgeben einer analysierten Reportbeschrei bung gestützt auf den HID-Reportdeskriptor;
Erhalten eines HID-Reports, der Dateneinheiten ent hält, die von dem HID-Deskriptor beschrieben werden;
Aufrufen einer ersten Schnittstellenfunktion mit Argumenten, die den HID-Report, die analysierte Re portbeschreibung und eine Verwendungsspezifikation umfassen;
wobei die ersten Schnittstellenfunktion eine oder mehrere Dateneinheiten von dem HID-Report zurück gibt, welche die Verwendungsspezifikationen haben, die in den Argumenten der ersten Schnittstellen funktion spezifiziert sind.
26. Verfahren nach Anspruch 25, bei dem die erste
Schnittstellenfunktion einen Fehlercode zurückgibt,
wenn sie das eine oder die mehreren Datenelemente in
dem HID-Report nicht finden kann, wobei der Fehler
code angibt, ob ein Steuerelement mit der Verwen
dungsspezifikation in dem von dem HID-Reportdeskrip
tor beschriebenen Report vorhanden ist.
27. Verfahren nach Anspruch 25 oder 26, bei dem HID-Re
porte von einer bestimmten HID-Einrichtung normiert
werden, indem sie gleich groß gemacht werden.
28. Verfahren nach einem der Ansprüche 25 bis 27, bei
dem HID-Reporte durch Hinzufügen einer Report-ID zu
jedem HID-Report, der nicht bereits eine Report-ID
aufweist, normiert werden.
29. Verfahren nach einem der Ansprüche 25 bis 28, bei
dem die Argumente der ersten Schnittstellenfunktion
einen Sammlungsidentifikator umfassen, wobei die
zurückgegebenen Dateneinheiten auf die Einheiten in
einer HID-Sammlung begrenzt werden, die von dem
Sammlungsidentifikator spezifiziert werden.
30. Verfahren nach einem der Ansprüche 25 bis 29 mit
folgenden weiteren Verfahrensschritten:
Aufrufen einer zweiten Schnittstellenfunktion mit einem Argument, das die analysierte Reportbeschrei bung umfaßt;
Zurückgeben einer Anordnung aus Datenstrukturen, welche HID-Sammlungen und ihre Beziehungen zuein ander spezifizieren, durch die zweite Schnittstel lenfunktion.
Aufrufen einer zweiten Schnittstellenfunktion mit einem Argument, das die analysierte Reportbeschrei bung umfaßt;
Zurückgeben einer Anordnung aus Datenstrukturen, welche HID-Sammlungen und ihre Beziehungen zuein ander spezifizieren, durch die zweite Schnittstel lenfunktion.
31. Verfahren nach einem der Ansprüche 25 bis 30, bei
dem die Verwendungsspezifikation eine Verwendungs
seite ist und die zurückgegebenen Dateneinheiten
mehrere HID-Werte umfassen.
32. Verfahren nach einem der Ansprüche 35 bis 30, bei
dem die Verwendungsspezifikation eine Verwendungs
seite ist und die zurückgegebenen Dateneinheiten
eine Anordnung aus Verwendungsindices umfassen, die
HID-Tasten entsprechen, die gedrückt werden, und
zwar unabhängig davon, ob der HID-Report Indexfelder
oder Bitfelder enthält.
33. Computerlesbares Speichermedium enthaltend von einem
Computer ausführbare Befehle, die einen Gruppe aus
Schnittstellenfunktionen definieren, die in einem
Computersystem aufrufbar sind, das einen HID-Ein
richtung aufweist, die HID-Reporte enthaltend Daten
einheiten und einen HID-Reportdeskriptor aufweist,
welcher die HID-Reporte und Anordnung, Formatierung
und Verwendungsspezifikationen der Dateneinheiten
innerhalb der HID-Reporte beschreibt, wobei die
Gruppe aus Schnittstellenfunktionen durch folgende
Befehle definiert ist:
eine Deskriptoranalysefunktion, die ein Funktions argument umfassend einen HID-Reportdeskriptor emp fängt und abhängig davon den HID-Reportdeskriptor analysiert und eine analysierte Reportbeschreibung gestützt auf den HID-Reportdeskriptor zurückgibt;
eine oder mehrere Dateneinheit-Wiedergewinnungs funktionen, welche Funktionsargumente umfassend einen HID-Report, die analysierte Reportbeschreibung und eine Verwendungsspezifikation empfangen; wobei die eine oder mehreren Dateneinheit-Wiedergewin nungsfunktionen eine oder mehrere Dateneinheiten aus dem HID-Report wiedergewinnen und zurückgeben, wel che die Verwendungsspezifikationen haben, die in den Argumenten für die Dateneinheit-Wiedergewin nungsfunktionen angegeben sind.
eine Deskriptoranalysefunktion, die ein Funktions argument umfassend einen HID-Reportdeskriptor emp fängt und abhängig davon den HID-Reportdeskriptor analysiert und eine analysierte Reportbeschreibung gestützt auf den HID-Reportdeskriptor zurückgibt;
eine oder mehrere Dateneinheit-Wiedergewinnungs funktionen, welche Funktionsargumente umfassend einen HID-Report, die analysierte Reportbeschreibung und eine Verwendungsspezifikation empfangen; wobei die eine oder mehreren Dateneinheit-Wiedergewin nungsfunktionen eine oder mehrere Dateneinheiten aus dem HID-Report wiedergewinnen und zurückgeben, wel che die Verwendungsspezifikationen haben, die in den Argumenten für die Dateneinheit-Wiedergewin nungsfunktionen angegeben sind.
34. Computerlesbares Speichermedium nach Anspruch 33,
bei dem die Dateneinheit-Wiedergewinnungsfunktionen
eine Tastenwiedergewinnungsfunktion umfassen, wobei
die Verwendungsspezifikation eine Verwendungsseite
umfaßt; wobei die Tastenwiedergewinnungsfunktion
eine Anordnung aus Verwendungsindices zurückgibt,
welche HID-Tasten entsprechen, die gedrückt werden,
und zwar unabhängig davon, ob der HID-Report Index
felder oder Bitfelder enthält.
35. Computerlesbares Speichermedium nach Anspruch 33
oder 34, bei dem die Dateneinheit-Wiedergewinnungs
funktionen eine Wertwiedergewinnungsfunktion umfas
sen, wobei die Verwendungsspezifikation eine Verwen
dungsseite und einen Verwendungsindex aufweist; und
wobei die Wertwiedergewinnungsfunktion einen HID-
Wert zurückgibt, welcher der Verwendungs
spezifikation entspricht.
36. Computerlesbares Speichermedium nach einem der An
sprüche 33 bis 35, bei dem die Dateneinheit-Wieder
gewinnungsfunktion eine Anordnung aus HID-Werten zu
rückgibt, welche der Verwendungsspezifikation ent
sprechen.
37. Computerlesbares Speichermedium nach Anspruch 33,
bei dem die Dateneinheit-Wiedergewinnungsfunktionen
folgende Merkmale aufweisen:
eine Tastenwiedergewinnungsfunktion, welche eine Anordnung aus Verwendungsindices zurückgibt, die HID-Tasten entsprechen, die gedrückt werden, und zwar unabhängig davon, ob der HID-Report Indexfelder oder Bitfelder enthält;
eine Wertwiedergewinnungsfunktion, die einen oder mehrere HID-Werte zurückgibt.
eine Tastenwiedergewinnungsfunktion, welche eine Anordnung aus Verwendungsindices zurückgibt, die HID-Tasten entsprechen, die gedrückt werden, und zwar unabhängig davon, ob der HID-Report Indexfelder oder Bitfelder enthält;
eine Wertwiedergewinnungsfunktion, die einen oder mehrere HID-Werte zurückgibt.
38. Computerlesbares Speichermedium nach einem der An
sprüche 33 bis 37, bei dem die Gruppe aus Schnitt
stellenfunktionen, die von den computerausführbaren
Befehlen definiert werden, ferner eine Sammlungs
identifikationsfunktion definieren, die Funktions
argumente einschließlich der analysierten Reportbe
schreibung empfängt und abhängig davon eine Anord
nung aus Datenstrukturen zurückgibt, welche HID-
Sammlungen und deren Beziehungen zueinander spe
zifizieren.
39. Computerlesbares Speichermedium nach Anspruch 38,
bei dem die von den Dateneinheit-Wiedergewinnungs
funktionen empfangenen Argumente einen optionalen
Sammlungsidentifikator umfassen;
die Dateneinheit-Wiedergewinnungsfunktion die zu rückgegebenen Dateneinheiten auf solche Einheiten in einer HID-Sammlung begrenzen, die von dem Sammlungs identifikator spezifiziert werden, wenn ein solcher Sammlungsidentifikator vorgesehen wird.
die Dateneinheit-Wiedergewinnungsfunktion die zu rückgegebenen Dateneinheiten auf solche Einheiten in einer HID-Sammlung begrenzen, die von dem Sammlungs identifikator spezifiziert werden, wenn ein solcher Sammlungsidentifikator vorgesehen wird.
40. Computerlesbares Speichermedium nach einem der An
sprüche 33 bis 39, bei dem die Gruppe aus Schnitt
stellenfunktionen, die von den computerausführbaren
Befehlen definiert werden, ferner eine oder mehrere
Dateneinheiten-Schreibfunktionen definiert, welche
Funktionsargumente einschließlich einer oder
mehrerer Dateneinheiten und einer Verwendungs
spezifikation empfangen, wobei die eine oder
mehreren Dateneinheiten-Schreibfunktionen die Daten
einheiten in einem HID-Report positionieren und for
matieren, der in eine HID-Einrichtung geschrieben
werden soll.
41. Computerlesbares Speichermedium nach einem der An
sprüche 33 bis 40, bei dem die Dateneinheit-Wieder
gewinnungsfunktionen so definiert sind, daß sie be
züglich ihrer Größe normierte HID-Reporte empfangen.
42. Verfahren zum Zurückgeben von HID-Reporte an an
fragende Klientprogramme mit einem Treiber der HID-
Klasse, der HID-Reporte unterschiedlicher Größe von
einer oder mehrere Einrichtungen empfängt, mit fol
genden Verfahrensschritten:
Empfangen von HID-Reporten von HID-Einrichtungen;
Normieren der HID-Reporte von einer HID-Einrichtung durch Angleichen der Größen der HID-Reporte;
Zurückgeben der HID-Reporte an die anfragenden Klientprogramme.
Empfangen von HID-Reporten von HID-Einrichtungen;
Normieren der HID-Reporte von einer HID-Einrichtung durch Angleichen der Größen der HID-Reporte;
Zurückgeben der HID-Reporte an die anfragenden Klientprogramme.
43. Verfahren nach Anspruch 42, bei dem die gleiche Grö
ße wenigstens so groß wie der größte HID-Report ist,
der von der HID-Einrichtung erzeugt wird.
44. Verfahren nach Anspruch 42 oder 43, bei dem das Nor
mieren die Hinzufügung einer Report-ID zu jedem HID-
Report umfaßt, der nicht bereits eine Report-ID auf
weist.
45. Verfahren nach Anspruch 43 und 44, bei dem die glei
che Größe gleich der Größe des größten HID-Reports,
der von der HID-Einrichtung erzeugt wird, ein
schließlich einer möglicherweise hinzugefügten Re
port-ID ist.
46. Computersystem mit
einem HID-Treiber, der HID-Reporte unterschiedlicher Größe von einer oder mehreren HID-Einrichtungen vor sieht;
einem Treiber der HID-Klasse, der so konfiguriert ist, daß er die HID-Reporte von dem HID-Treiber an fordert und empfängt und die HID-Reporte abhängig von Anfragen von Klientprogrammen zurückgibt;
wobei der Treiber der HID-Klasse HID-Reporte von einer bestimmten HID-Einrichtung normiert, indem er sie gleich groß macht.
einem HID-Treiber, der HID-Reporte unterschiedlicher Größe von einer oder mehreren HID-Einrichtungen vor sieht;
einem Treiber der HID-Klasse, der so konfiguriert ist, daß er die HID-Reporte von dem HID-Treiber an fordert und empfängt und die HID-Reporte abhängig von Anfragen von Klientprogrammen zurückgibt;
wobei der Treiber der HID-Klasse HID-Reporte von einer bestimmten HID-Einrichtung normiert, indem er sie gleich groß macht.
47. Computersystem nach Anspruch 46, bei dem die gleiche
Größe wenigstens so groß wie der größte HID-Report
ist, der von der HID-Einrichtung erzeugt wird.
48. Computersystem nach einem der Ansprüche 46 oder 47,
bei dem das Normieren die Hinzufügung einer Report-
ID zu jedem HID-Report umfaßt, der nicht bereits
eine Report-ID aufweist.
49. Computersystem nach Anspruch 47 und 48, bei dem die
gleiche Größe gleich der Größe des größten HID-Re
ports, der von der HID-Einrichtung erzeugt wird,
einschließlich einer möglicherweise hinzugefügten
Report-ID ist.
50. Computerlesbares Speichermedium enthaltend Befehle,
die einen Treiber der HID-Klasse realisieren, wobei
die Befehle von einem Computer ausführbar sind, um
folgende Schritte durchzuführen:
Empfangen von HID-Reporten von einer oder mehreren HID-Einrichtungen;
Hinzufügen einer Report-ID zu jedem HID-Report, der nicht bereits eine Report-ID aufweist;
Normieren der HID-Reporte von einer bestimmten HID- Einrichtung durch Angleichen ihrer Größe;
Zurückgeben der normierten HID-Reporte an anfragende Klientprogramme.
Empfangen von HID-Reporten von einer oder mehreren HID-Einrichtungen;
Hinzufügen einer Report-ID zu jedem HID-Report, der nicht bereits eine Report-ID aufweist;
Normieren der HID-Reporte von einer bestimmten HID- Einrichtung durch Angleichen ihrer Größe;
Zurückgeben der normierten HID-Reporte an anfragende Klientprogramme.
51. Computerlesbares Speichermedium nach Anspruch 50,
bei dem die gleiche Größe wenigstens so groß wie der
größte HID-Report ist, der von der HID-Einrichtung
erzeugt wird.
52. Computerlesbares Speichermedium nach Anspruch 50
oder 52, bei dem das Normieren die Hinzufügung einer
Report-ID zu jedem HID-Report umfaßt, der nicht be
reits eine Report-ID aufweist.
53. Computerlesbares Speichermedium nach einem der An
sprüche 50-52 bei dem die gleiche Größe gleich der
Größe des größten HID-Reports, der von der HID-Ein
richtung erzeugt wird, einschließlich einer
möglicherweise hinzugefügten Report-ID ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/907,200 US6311228B1 (en) | 1997-08-06 | 1997-08-06 | Method and architecture for simplified communications with HID devices |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19835647A1 true DE19835647A1 (de) | 1999-02-11 |
Family
ID=25423683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19835647A Ceased DE19835647A1 (de) | 1997-08-06 | 1998-08-06 | Computersystem und Verfahren zum Lesen von HID-Dateneinheiten |
Country Status (5)
Country | Link |
---|---|
US (1) | US6311228B1 (de) |
JP (1) | JP4298817B2 (de) |
DE (1) | DE19835647A1 (de) |
FR (1) | FR2767210B1 (de) |
GB (1) | GB2330225B (de) |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7116310B1 (en) | 1999-04-06 | 2006-10-03 | Microsoft Corporation | Application programming interface that maps input device controls to software actions |
US6965368B1 (en) * | 1999-04-06 | 2005-11-15 | Microsoft Corporation | Game control device having genre data |
US6895588B1 (en) * | 1999-04-09 | 2005-05-17 | Sun Microsystems, Inc. | Remote device access over a network |
US6628607B1 (en) | 1999-07-09 | 2003-09-30 | Apple Computer, Inc. | Method and apparatus for loop breaking on a serial bus |
US6691096B1 (en) | 1999-10-28 | 2004-02-10 | Apple Computer, Inc. | General purpose data container method and apparatus for implementing AV/C descriptors |
US6959343B1 (en) | 1999-11-01 | 2005-10-25 | Apple Computer, Inc. | Method and apparatus for dynamic link driver configuration |
US6671768B1 (en) | 1999-11-01 | 2003-12-30 | Apple Computer, Inc. | System and method for providing dynamic configuration ROM using double image buffers for use with serial bus devices |
US6813663B1 (en) | 1999-11-02 | 2004-11-02 | Apple Computer, Inc. | Method and apparatus for supporting and presenting multiple serial bus nodes using distinct configuration ROM images |
US6631426B1 (en) | 1999-11-02 | 2003-10-07 | Apple Computer, Inc. | Automatic ID allocation for AV/C entities |
US8762446B1 (en) * | 1999-11-02 | 2014-06-24 | Apple Inc. | Bridged distributed device control over multiple transports method and apparatus |
US6618750B1 (en) | 1999-11-02 | 2003-09-09 | Apple Computer, Inc. | Method and apparatus for determining communication paths |
US6587904B1 (en) | 1999-11-05 | 2003-07-01 | Apple Computer, Inc. | Method and apparatus for preventing loops in a full-duplex bus |
US6636914B1 (en) * | 1999-11-05 | 2003-10-21 | Apple Computer, Inc. | Method and apparatus for arbitration and fairness on a full-duplex bus using dual phases |
US6457086B1 (en) | 1999-11-16 | 2002-09-24 | Apple Computers, Inc. | Method and apparatus for accelerating detection of serial bus device speed signals |
US6639918B1 (en) | 2000-01-18 | 2003-10-28 | Apple Computer, Inc. | Method and apparatus for border node behavior on a full-duplex bus |
US7266617B1 (en) | 2000-01-18 | 2007-09-04 | Apple Inc. | Method and apparatus for border node behavior on a full-duplex bus |
US7421507B2 (en) | 2000-02-16 | 2008-09-02 | Apple Inc. | Transmission of AV/C transactions over multiple transports method and apparatus |
US6831928B1 (en) | 2000-02-17 | 2004-12-14 | Apple Computer, Inc. | Method and apparatus for ensuring compatibility on a high performance serial bus |
US7050453B1 (en) | 2000-02-17 | 2006-05-23 | Apple Computer, Inc. | Method and apparatus for ensuring compatibility on a high performance serial bus |
US6643721B1 (en) * | 2000-03-22 | 2003-11-04 | Intel Corporation | Input device-adaptive human-computer interface |
US6618785B1 (en) | 2000-04-21 | 2003-09-09 | Apple Computer, Inc. | Method and apparatus for automatic detection and healing of signal pair crossover on a high performance serial bus |
US6718497B1 (en) | 2000-04-21 | 2004-04-06 | Apple Computer, Inc. | Method and apparatus for generating jitter test patterns on a high performance serial bus |
US20050078089A1 (en) * | 2002-01-23 | 2005-04-14 | Wen-Hsiu Kuo | Computer mouse with multimedia hotkeys and processing method thereof |
US20030204654A1 (en) * | 2002-04-26 | 2003-10-30 | Nathan Robert H. | Keyboard lock data transfer |
KR100464349B1 (ko) * | 2002-08-08 | 2005-01-03 | 삼성전자주식회사 | 디바이스 드라이버 제어 공통화 방법 |
US7139761B2 (en) * | 2002-12-11 | 2006-11-21 | Leader Technologies, Inc. | Dynamic association of electronically stored information with iterative workflow changes |
US7222348B1 (en) | 2002-12-16 | 2007-05-22 | Unisys Corporation | Universal multi-path driver for storage systems |
US7457302B1 (en) | 2002-12-31 | 2008-11-25 | Apple Inc. | Enhancement to loop healing for malconfigured bus prevention |
US7417973B1 (en) | 2002-12-31 | 2008-08-26 | Apple Inc. | Method, apparatus and computer program product for ensuring node participation in a network bus |
JP2004213430A (ja) * | 2003-01-06 | 2004-07-29 | Sankyo Seiki Mfg Co Ltd | Hid仕様のusb通信方法およびhid仕様のusb通信回線を有するコンピュータ・システム |
US7194662B2 (en) | 2003-02-28 | 2007-03-20 | International Business Machines Corporation | Method, apparatus and program storage device for providing data path optimization |
US7668099B2 (en) | 2003-06-13 | 2010-02-23 | Apple Inc. | Synthesis of vertical blanking signal |
US7353284B2 (en) | 2003-06-13 | 2008-04-01 | Apple Inc. | Synchronized transmission of audio and video data from a computer to a client via an interface |
US8275910B1 (en) | 2003-07-02 | 2012-09-25 | Apple Inc. | Source packet bridge |
US7167934B1 (en) | 2003-09-09 | 2007-01-23 | Microsoft Corporation | Peripheral device data transfer protocol |
US8151280B2 (en) * | 2003-10-27 | 2012-04-03 | Microsoft Corporation | Simple and dynamic configuration of network devices |
US7788567B1 (en) | 2003-11-18 | 2010-08-31 | Apple Inc. | Symbol encoding for tolerance to single byte errors |
US7995606B1 (en) | 2003-12-03 | 2011-08-09 | Apple Inc. | Fly-by and ack-accelerated arbitration for broadcast packets |
US7237135B1 (en) | 2003-12-29 | 2007-06-26 | Apple Inc. | Cyclemaster synchronization in a distributed bridge |
US7308517B1 (en) | 2003-12-29 | 2007-12-11 | Apple Inc. | Gap count analysis for a high speed serialized bus |
US7660611B1 (en) * | 2004-03-25 | 2010-02-09 | Cypress Semiconductor Corporation | Wireless human interface device packet compression system and method for reducing power consumption |
US7356635B2 (en) * | 2004-09-24 | 2008-04-08 | Cypress Semiconductor Corp. | Compressed report descriptors for USB devices |
CN100409150C (zh) * | 2006-09-07 | 2008-08-06 | 北京飞天诚信科技有限公司 | 一种提高hid设备通讯速度的方法 |
KR101355779B1 (ko) | 2006-12-19 | 2014-01-24 | 엘지전자 주식회사 | 휴대용 단말기기 및 이의 호스트 제어방법 |
US20090037610A1 (en) * | 2007-07-31 | 2009-02-05 | Krancher Robort E | Electronic device interface control system |
US8260985B2 (en) * | 2007-10-05 | 2012-09-04 | Pano Logic, Inc. | Universal serial bus assistance engine |
CN101655823B (zh) * | 2009-06-12 | 2012-12-19 | 中兴通讯股份有限公司 | 免安装数据卡驱动的实现方法、操作方法及系统 |
JP2012014426A (ja) | 2010-06-30 | 2012-01-19 | Optoelectronics Co Ltd | データ送信方法及びデータ送信システム |
US9787725B2 (en) | 2011-01-21 | 2017-10-10 | Qualcomm Incorporated | User input back channel for wireless displays |
US10135900B2 (en) | 2011-01-21 | 2018-11-20 | Qualcomm Incorporated | User input back channel for wireless displays |
US9413803B2 (en) * | 2011-01-21 | 2016-08-09 | Qualcomm Incorporated | User input back channel for wireless displays |
US8521942B2 (en) | 2011-03-21 | 2013-08-27 | Microsoft Corporation | HID over simple peripheral buses |
CN102331943B (zh) * | 2011-09-08 | 2014-09-17 | 威盛电子股份有限公司 | 在线更新存储器系统与方法 |
US9106651B2 (en) * | 2011-09-19 | 2015-08-11 | Qualcomm Incorporated | Sending human input device commands over internet protocol |
US8725916B2 (en) * | 2012-01-07 | 2014-05-13 | Microsoft Corporation | Host side implementation for HID I2C data bus |
CN114253892B (zh) * | 2021-12-20 | 2023-02-07 | 深圳市拔超科技股份有限公司 | 一种usb hid信号延长传输方法及系统 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5475836A (en) * | 1987-04-01 | 1995-12-12 | Lotus Development Corporation | Interface for providing access to external data sources/sinks |
EP0419064A3 (en) * | 1989-09-22 | 1992-08-05 | International Business Machines Corporation | Computer system having apparatus for providing pointing device independent support in an operating environment |
US5265252A (en) * | 1991-03-26 | 1993-11-23 | International Business Machines Corporation | Device driver system having generic operating system interface |
JPH0573195A (ja) * | 1991-07-18 | 1993-03-26 | Personal Joho Kankyo Kyokai | 操作方法変換装置 |
FR2696258B1 (fr) * | 1992-09-25 | 1994-10-28 | Sextant Avionique | Dispositif de gestion d'un système d'interaction homme-machine. |
US5375241A (en) * | 1992-12-21 | 1994-12-20 | Microsoft Corporation | Method and system for dynamic-link library |
US5581461A (en) * | 1993-02-08 | 1996-12-03 | Itt Sheraton Corporation | Computerized system and method for storage, processing and transfer of inventory and other data among a central processor/database and a number of remote locations |
US5526358A (en) * | 1994-08-19 | 1996-06-11 | Peerlogic, Inc. | Node management in scalable distributed computing enviroment |
US5727212A (en) * | 1995-04-12 | 1998-03-10 | International Business Machines Corporation | Object oriented device driver system for procedural device drivers |
US5926636A (en) * | 1996-02-21 | 1999-07-20 | Adaptec, Inc. | Remote procedural call component management method for a heterogeneous computer network |
US5974234A (en) * | 1997-04-15 | 1999-10-26 | Xerox Corporation | Centralized print server for interfacing one or more network clients with a plurality of printing devices |
US6014511A (en) * | 1997-08-29 | 2000-01-11 | Intel Corporation | O/S abstraction architecture for HID PC applications |
US6085265A (en) * | 1998-01-09 | 2000-07-04 | Toshiba America Information Systems, Inc. | System for handling an asynchronous interrupt a universal serial bus device |
-
1997
- 1997-08-06 US US08/907,200 patent/US6311228B1/en not_active Expired - Lifetime
-
1998
- 1998-07-29 GB GB9816523A patent/GB2330225B/en not_active Expired - Lifetime
- 1998-08-04 FR FR9810006A patent/FR2767210B1/fr not_active Expired - Lifetime
- 1998-08-06 JP JP22262998A patent/JP4298817B2/ja not_active Expired - Lifetime
- 1998-08-06 DE DE19835647A patent/DE19835647A1/de not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
GB2330225A (en) | 1999-04-14 |
GB2330225B (en) | 1999-09-29 |
FR2767210A1 (fr) | 1999-02-12 |
JP4298817B2 (ja) | 2009-07-22 |
JPH11194988A (ja) | 1999-07-21 |
US6311228B1 (en) | 2001-10-30 |
FR2767210B1 (fr) | 2005-05-27 |
GB9816523D0 (en) | 1998-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19835647A1 (de) | Computersystem und Verfahren zum Lesen von HID-Dateneinheiten | |
DE19842688B4 (de) | Verfahren zum Filtern von Daten, die von einem Datenanbieter stammen | |
DE10135445B4 (de) | Integriertes Verfahren für das Schaffen einer aktualisierbaren Netzabfrage | |
DE69932344T2 (de) | Zugriff zu hierarchischem datenspeicher via sql-eingabe | |
DE60126016T2 (de) | Serverseitige Kontrollobjekte zur Verarbeitung von kundenseitigen Benutzerschnittstellenelementen | |
DE60030181T2 (de) | System, Verfahren und hergestellter Gegenstand zum Zugriff auf und Verarbeitung von Chipkartendaten | |
DE60218160T2 (de) | Verfahren und systeme zur datenübertragung über ein netz | |
DE60006845T2 (de) | Verfahren und vorrichtung zur zusammenarbeit bei multimediaerzeugung über einem netzwerk | |
DE69636887T2 (de) | System und Verfahren,um verschiedenen Anbietern von Namen zu ermöglichen,sich dynamisch einer Namensföderation anzuschliessen | |
DE60028561T2 (de) | Bereitstellung von kundendiensten, die daten aus datenquellen abrufen, wobei die datenquellen die vom kunden geforderten formate nicht notwendigerweise unterstützen | |
DE602005005924T2 (de) | Einheitliches Datenformat für Messgeräte | |
DE10358834A1 (de) | Verfahren, Einrichtung und Computer-Produkt zum Analysieren von Binärdaten | |
DE69628374T2 (de) | Datenverwaltungssystem | |
DE19742804A1 (de) | Computer-Verfahren und -Vorrichtung für interaktive Objektsteuerungen | |
DE10048940A1 (de) | Erzeugen von Dokumenteninhalten durch Transcodierung mit Hilfe von Java Server Pages | |
DE19800423A1 (de) | Rechnerverfahren und -vorrichtung zur Vorabansicht von Dateien außerhalb eines Andwendungsprogramms | |
DE10309620A1 (de) | Dynamisches Expertenschnittstellensystem und Verfahren | |
DE10300545A1 (de) | Vorrichtung, Verfahren, Speichermedium und Datenstruktur zur Kennzeichnung und Speicherung von Daten | |
DE60122671T2 (de) | Anforderungsbedingte dynamische Schnittstellengenerierung | |
DE69932524T2 (de) | Verfahren zum handhaben von datenobjekten in vom benutzer definierten datentypen | |
EP1211099A2 (de) | Verfahren zum digitalen Drucken von zusammengesetzten Dokumenten | |
DE10054001A1 (de) | Automatisierte Schnittstellengenerierung für Computerprogramme in unterschiedlichen Umgebungen | |
WO2000038084A2 (de) | Verfahren zur behandlung von datenobjekten | |
DE10325843B4 (de) | Verfahren, Drucksystem, Computer und Computerprogramm zum Verwalten von Resourcen zur Verwendung in einem resourcenbasierten Dokumentendatenstrom | |
EP1754171A1 (de) | Verfahren und system zur automatisierten erzeugung von computergestützten steuerungs- und analysevorrichtungen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8125 | Change of the main classification |
Ipc: G06F 1310 |
|
R082 | Change of representative |
Representative=s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE |
|
R081 | Change of applicant/patentee |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, REDMOND, US Free format text: FORMER OWNER: MICROSOFT CORP., REDMOND, WASH., US Effective date: 20150122 |
|
R082 | Change of representative |
Representative=s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE Effective date: 20150122 |
|
R003 | Refusal decision now final | ||
R011 | All appeals rejected, refused or otherwise settled |