Ignore:
File:
1 edited

Legend:

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

    rc694b7e r1b29d6fa  
    3939#include <driver.h>
    4040#include <usb/classes/hidparser.h>
    41 #include <usb/descriptor.h>
    4241
    4342/** USB/HID device requests. */
     
    6463 */
    6564typedef struct {
    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;
     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;
    7170
    7271/** Standard USB HID descriptor.
     
    7473 * (See HID Specification, p.22)
    7574 *
    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).
     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.
    7977 */
    8078typedef struct {
    81         /** Total size of this descriptor in bytes.
    82          *
    83          * This includes all class-specific descriptor info - type + length
    84          * for each descriptor.
    85          */
     79        /** Size of this descriptor in bytes. */
    8680        uint8_t length;
    8781        /** Descriptor type (USB_DESCTYPE_HID). */
     
    9185        /** Country code of localized hardware. */
    9286        uint8_t country_code;
    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;
     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;
    9991} __attribute__ ((packed)) usb_standard_hid_descriptor_t;
    10092
    101 /**
    102  *
    103  */
    104 typedef 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  */
    115 typedef struct {
    116         usb_standard_configuration_descriptor_t config_descriptor;
    117         usb_hid_iface_t *interfaces;
    118 } usb_hid_configuration_t;
    11993
    12094/**
     
    12599typedef struct {
    126100        device_t *device;
    127         usb_hid_configuration_t *conf;
    128101        usb_address_t address;
    129         usb_endpoint_t default_ep;
     102        usb_endpoint_t poll_endpoint;
    130103        usb_hid_report_parser_t *parser;
    131104} usb_hid_dev_kbd_t;
Note: See TracChangeset for help on using the changeset viewer.