Changeset cd50486 in mainline for uspace/drv/usbhid/main.c
- Timestamp:
- 2011-02-06T22:03:55Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 25971d2
- Parents:
- 1110ebd (diff), 960ff451 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/usbhid/main.c
r1110ebd rcd50486 47 47 #include <usb/classes/hid.h> 48 48 #include <usb/classes/hidparser.h> 49 #include <usb/ request.h>49 #include <usb/devreq.h> 50 50 #include <usb/descriptor.h> 51 51 #include <io/console.h> … … 56 56 #include "layout.h" 57 57 58 #define BUFFER_SIZE 3258 #define BUFFER_SIZE 8 59 59 #define NAME "usbhid" 60 60 … … 83 83 84 84 if (console_callback_phone != -1) { 85 ipc_answer_0(icallid, ELIMIT);85 async_answer_0(icallid, ELIMIT); 86 86 return; 87 87 } 88 88 89 89 console_callback_phone = callback; 90 ipc_answer_0(icallid, EOK);90 async_answer_0(icallid, EOK); 91 91 return; 92 92 } 93 93 94 ipc_answer_0(icallid, EINVAL);94 async_answer_0(icallid, EINVAL); 95 95 } 96 96 … … 262 262 } 263 263 264 # if 0 264 265 /* 265 266 * Kbd functions … … 280 281 281 282 // 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, 286 286 &actual_size); 287 287 … … 298 298 return EOK; 299 299 } 300 301 300 static int usbkbd_process_descriptors(usb_hid_dev_kbd_t *kbd_dev) 302 301 { … … 304 303 usb_standard_configuration_descriptor_t config_desc; 305 304 306 int rc; 307 rc = usb_request_get_bare_configuration_descriptor(&kbd_dev->ctrl_pipe, 308 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); 309 307 310 308 if (rc != EOK) { … … 320 318 size_t transferred = 0; 321 319 // get full configuration descriptor 322 rc = usb_ request_get_full_configuration_descriptor(&kbd_dev->ctrl_pipe,323 0, descriptors,320 rc = usb_drv_req_get_full_configuration_descriptor( 321 kbd_dev->device->parent_phone, kbd_dev->address, 0, descriptors, 324 322 config_desc.total_length, &transferred); 325 323 … … 365 363 return EOK; 366 364 } 367 365 #endif 368 366 static usb_hid_dev_kbd_t *usbkbd_init_device(device_t *dev) 369 367 { 370 int rc;371 372 368 usb_hid_dev_kbd_t *kbd_dev = (usb_hid_dev_kbd_t *)calloc(1, 373 369 sizeof(usb_hid_dev_kbd_t)); … … 380 376 kbd_dev->device = dev; 381 377 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 382 414 /* 383 415 * Initialize the backing connection to the host controller. … … 393 425 * Initialize device pipes. 394 426 */ 395 rc = usb_endpoint_pipe_initialize_default_control(&kbd_dev->ctrl_pipe,396 &kbd_dev->wire);397 if (rc != EOK) {398 printf("Failed to initialize default control pipe: %s.\n",399 str_error(rc));400 goto error_leave;401 }402 403 427 rc = usb_endpoint_pipe_initialize(&kbd_dev->poll_pipe, &kbd_dev->wire, 404 428 GUESSED_POLL_ENDPOINT, USB_TRANSFER_INTERRUPT, USB_DIRECTION_IN); … … 409 433 } 410 434 411 /*412 * will need all descriptors:413 * 1) choose one configuration from configuration descriptors414 * (set it to the device)415 * 2) set endpoints from endpoint descriptors416 */417 418 // TODO: get descriptors, parse descriptors and save endpoints419 usb_endpoint_pipe_start_session(&kbd_dev->ctrl_pipe);420 usbkbd_process_descriptors(kbd_dev);421 usb_endpoint_pipe_end_session(&kbd_dev->ctrl_pipe);422 435 423 436 return kbd_dev; … … 457 470 458 471 while (true) { 459 async_usleep(1000 * 10 00 * 2);472 async_usleep(1000 * 10); 460 473 461 474 sess_rc = usb_endpoint_pipe_start_session(&kbd_dev->poll_pipe);
Note:
See TracChangeset
for help on using the changeset viewer.