Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset c694b7e in mainline


Ignore:
Timestamp:
2010-12-12T16:38:27Z (11 years ago)
Author:
Lubos Slovak <lubos.slovak@…>
Branches:
lfn, master
Children:
ca038b4
Parents:
a3b1107
Message:

Structures for holding HID device configuration.

One structure for holding the configuration descriptor and

info about all interfaces (second structure).

Second structure for holding interface descriptor, and info

about it (list of endpoint descriptors, HID descriptors
and HID class-specific descriptors).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usb/include/usb/classes/hid.h

    ra3b1107 rc694b7e  
    3939#include <driver.h>
    4040#include <usb/classes/hidparser.h>
     41#include <usb/descriptor.h>
    4142
    4243/** USB/HID device requests. */
     
    6364 */
    6465typedef struct {
    65         /** Type of class descriptor (Report or Physical). */
    66         uint8_t class_descriptor_type;
    67         /** Length of class descriptor. */
    68         uint16_t class_descriptor_length;
    69 } __attribute__ ((packed)) usb_standard_hid_descriptor_class_item_t;
     66        /** Type of class-specific descriptor (Report or Physical). */
     67        uint8_t type;
     68        /** Length of class-specific descriptor in bytes. */
     69        uint16_t length;
     70} __attribute__ ((packed)) usb_standard_hid_class_descriptor_info_t;
    7071
    7172/** Standard USB HID descriptor.
     
    7374 * (See HID Specification, p.22)
    7475 *
    75  * It is actually only the "header" of the descriptor, as it may have arbitrary
    76  * length if more than one class descritor is provided.
     76 * It is actually only the "header" of the descriptor, it does not contain
     77 * the last two mandatory fields (type and length of the first class-specific
     78 * descriptor).
    7779 */
    7880typedef struct {
    79         /** Size of this descriptor in bytes. */
     81        /** Total size of this descriptor in bytes.
     82         *
     83         * This includes all class-specific descriptor info - type + length
     84         * for each descriptor.
     85         */
    8086        uint8_t length;
    8187        /** Descriptor type (USB_DESCTYPE_HID). */
     
    8591        /** Country code of localized hardware. */
    8692        uint8_t country_code;
    87         /** Total number of class (i.e. Report and Physical) descriptors. */
    88         uint8_t class_count;
    89         /** First mandatory class descriptor info. */
    90         usb_standard_hid_descriptor_class_item_t class_descriptor;
     93        /** Total number of class-specific (i.e. Report and Physical)
     94         * descriptors.
     95         */
     96        uint8_t class_desc_count;
     97//      /** First mandatory class descriptor info. */
     98//      usb_standard_hid_descriptor_class_item_t class_descriptor;
    9199} __attribute__ ((packed)) usb_standard_hid_descriptor_t;
    92100
     101/**
     102 *
     103 */
     104typedef struct {
     105        usb_standard_interface_descriptor_t iface_desc;
     106        usb_standard_endpoint_descriptor_t *endpoints;
     107        usb_standard_hid_descriptor_t hid_desc;
     108        usb_standard_hid_class_descriptor_info_t *class_desc_info;
     109        uint8_t **class_descs;
     110} usb_hid_iface_t;
     111
     112/**
     113 *
     114 */
     115typedef struct {
     116        usb_standard_configuration_descriptor_t config_descriptor;
     117        usb_hid_iface_t *interfaces;
     118} usb_hid_configuration_t;
    93119
    94120/**
     
    99125typedef struct {
    100126        device_t *device;
     127        usb_hid_configuration_t *conf;
    101128        usb_address_t address;
    102129        usb_endpoint_t default_ep;
Note: See TracChangeset for help on using the changeset viewer.