Changeset 2c381250 in mainline for uspace/app/virtusbkbd/kbdconfig.c


Ignore:
Timestamp:
2010-10-13T06:49:48Z (14 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7da3219
Parents:
fd17ab5
Message:

virtusb: add get_descriptor(config) handling

The virtusb framework is now able to handle the standard request for
obtaining configuration descriptor. This includes sending extra data
such as interface or endpoint descriptor.

Using this approach, the virtual keyboard sends also its HID descriptor.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/virtusbkbd/kbdconfig.c

    rfd17ab5 r2c381250  
    3535 */
    3636#include "kbdconfig.h"
     37#include <usb/hcd.h>
     38#include <usb/hid.h>
    3739#include <usb/hidut.h>
    3840#include <usb/classes.h>
    3941
    4042/** Standard device descriptor. */
    41 usb_standard_device_descriptor_t std_descriptor = {
     43usb_standard_device_descriptor_t std_device_descriptor = {
    4244        .length = sizeof(usb_standard_device_descriptor_t),
    43         .descriptor_type = 1,
     45        .descriptor_type = USB_DESCTYPE_DEVICE,
    4446        .usb_spec_version = 0x110,
    45         .device_class = USB_CLASS_HID,
     47        .device_class = USB_CLASS_USE_INTERFACE,
    4648        .device_subclass = 0,
    4749        .device_protocol = 0,
     
    4951        .configuration_count = 1
    5052};
    51 size_t std_descriptor_size = sizeof(std_descriptor);
     53
     54/** Standard interface descriptor. */
     55usb_standard_interface_descriptor_t std_interface_descriptor = {
     56        .length = sizeof(usb_standard_interface_descriptor_t),
     57        .descriptor_type = USB_DESCTYPE_INTERFACE,
     58        .interface_number = 0,
     59        .alternate_setting = 0,
     60        .endpoint_count = 1,
     61        .interface_class = USB_CLASS_HID,
     62        .interface_subclass = 0,
     63        .interface_protocol = USB_HID_PROTOCOL_KEYBOARD,
     64        .str_interface = 0
     65};
    5266
    5367/** USB keyboard report descriptor.
     
    105119        .descriptor1_length = sizeof(report_descriptor)
    106120};
    107 size_t hid_descriptor_size = sizeof(hid_descriptor);
     121
     122/** Endpoint descriptor. */
     123usb_standard_endpoint_descriptor_t endpoint_descriptor = {
     124        .length = sizeof(usb_standard_endpoint_descriptor_t),
     125        .descriptor_type = USB_DESCTYPE_ENDPOINT,
     126        .endpoint_address = 1 | 128,
     127        .attributes = USB_TRANSFER_INTERRUPT,
     128        .max_packet_size = 8,
     129        .poll_interval = 10
     130};
     131
     132/** Standard configuration descriptor. */
     133usb_standard_configuration_descriptor_t std_configuration_descriptor = {
     134        .length = sizeof(usb_standard_configuration_descriptor_t),
     135        .descriptor_type = USB_DESCTYPE_CONFIGURATION,
     136        .total_length =
     137                sizeof(usb_standard_configuration_descriptor_t)
     138                + sizeof(std_interface_descriptor)
     139                + sizeof(hid_descriptor)
     140                + sizeof(endpoint_descriptor)
     141                ,
     142        .interface_count = 1,
     143        .configuration_number = 1,
     144        .str_configuration = 0,
     145        .attributes = 128, /* denotes bus-powered device */
     146        .max_power = 50
     147};
     148
     149
    108150
    109151
Note: See TracChangeset for help on using the changeset viewer.