Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/usbhid/main.c

    r03197ffc r25971d2  
    4747#include <usb/classes/hid.h>
    4848#include <usb/classes/hidparser.h>
    49 #include <usb/request.h>
     49#include <usb/devreq.h>
    5050#include <usb/descriptor.h>
    5151#include <io/console.h>
     
    262262}
    263263
     264# if 0
    264265/*
    265266 * Kbd functions
     
    280281               
    281282                // get the descriptor from the device
    282                 int rc = usb_request_get_descriptor(&kbd_dev->ctrl_pipe,
    283                     USB_REQUEST_TYPE_CLASS, USB_DESCTYPE_HID_REPORT,
    284                     i, 0,
    285                     kbd_dev->conf->interfaces[i].report_desc, length,
     283                int rc = usb_drv_req_get_descriptor(kbd_dev->device->parent_phone,
     284                    kbd_dev->address, USB_REQUEST_TYPE_CLASS, USB_DESCTYPE_HID_REPORT,
     285                    0, i, kbd_dev->conf->interfaces[i].report_desc, length,
    286286                    &actual_size);
    287287
     
    303303        usb_standard_configuration_descriptor_t config_desc;
    304304       
    305         int rc;
    306         rc = usb_request_get_bare_configuration_descriptor(&kbd_dev->ctrl_pipe,
    307             0, &config_desc);
     305        int rc = usb_drv_req_get_bare_configuration_descriptor(
     306            kbd_dev->device->parent_phone, kbd_dev->address, 0, &config_desc);
    308307       
    309308        if (rc != EOK) {
     
    319318        size_t transferred = 0;
    320319        // get full configuration descriptor
    321         rc = usb_request_get_full_configuration_descriptor(&kbd_dev->ctrl_pipe,
    322             0, descriptors,
     320        rc = usb_drv_req_get_full_configuration_descriptor(
     321            kbd_dev->device->parent_phone, kbd_dev->address, 0, descriptors,
    323322            config_desc.total_length, &transferred);
    324323       
     
    364363        return EOK;
    365364}
    366 
     365#endif
    367366static usb_hid_dev_kbd_t *usbkbd_init_device(device_t *dev)
    368367{
    369         int rc;
    370 
    371368        usb_hid_dev_kbd_t *kbd_dev = (usb_hid_dev_kbd_t *)calloc(1,
    372369            sizeof(usb_hid_dev_kbd_t));
     
    379376        kbd_dev->device = dev;
    380377
     378        // get phone to my HC and save it as my parent's phone
     379        // TODO: maybe not a good idea if DDF will use parent_phone
     380        int rc = kbd_dev->device->parent_phone = usb_drv_hc_connect_auto(dev, 0);
     381        if (rc < 0) {
     382                printf("Problem setting phone to HC.\n");
     383                goto error_leave;
     384        }
     385
     386        rc = kbd_dev->address = usb_drv_get_my_address(dev->parent_phone, dev);
     387        if (rc < 0) {
     388                printf("Problem getting address of the device.\n");
     389                goto error_leave;
     390        }
     391
     392        // doesn't matter now that we have no address
     393//      if (kbd_dev->address < 0) {
     394//              fprintf(stderr, NAME ": No device address!\n");
     395//              free(kbd_dev);
     396//              return NULL;
     397//      }
     398
     399        /*
     400         * will need all descriptors:
     401         * 1) choose one configuration from configuration descriptors
     402         *    (set it to the device)
     403         * 2) set endpoints from endpoint descriptors
     404         */
     405
     406
     407        // TODO: get descriptors, parse descriptors and save endpoints
     408        //usbkbd_process_descriptors(kbd_dev);
     409        usb_drv_req_set_configuration(
     410          kbd_dev->device->parent_phone, kbd_dev->address, 1);
     411
     412
     413
    381414        /*
    382415         * Initialize the backing connection to the host controller.
     
    392425         * Initialize device pipes.
    393426         */
    394         rc = usb_endpoint_pipe_initialize_default_control(&kbd_dev->ctrl_pipe,
    395             &kbd_dev->wire);
    396         if (rc != EOK) {
    397                 printf("Failed to initialize default control pipe: %s.\n",
    398                     str_error(rc));
    399                 goto error_leave;
    400         }
    401 
    402427        rc = usb_endpoint_pipe_initialize(&kbd_dev->poll_pipe, &kbd_dev->wire,
    403             GUESSED_POLL_ENDPOINT, USB_TRANSFER_INTERRUPT, USB_DIRECTION_IN);
     428            GUESSED_POLL_ENDPOINT, USB_TRANSFER_INTERRUPT, 8, USB_DIRECTION_IN);
    404429        if (rc != EOK) {
    405430                printf("Failed to initialize interrupt in pipe: %s.\n",
     
    408433        }
    409434
    410         /*
    411          * will need all descriptors:
    412          * 1) choose one configuration from configuration descriptors
    413          *    (set it to the device)
    414          * 2) set endpoints from endpoint descriptors
    415          */
    416 
    417         // TODO: get descriptors, parse descriptors and save endpoints
    418         usb_endpoint_pipe_start_session(&kbd_dev->ctrl_pipe);
    419         //usb_request_set_configuration(&kbd_dev->ctrl_pipe, 1);
    420         usbkbd_process_descriptors(kbd_dev);
    421         usb_endpoint_pipe_end_session(&kbd_dev->ctrl_pipe);
    422435
    423436        return kbd_dev;
Note: See TracChangeset for help on using the changeset viewer.