Changeset 945d66c in mainline for uspace/lib/usbdev/src/devdrv.c
- Timestamp:
- 2013-01-25T22:55:22Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9e79a2f
- Parents:
- c39e9fb
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbdev/src/devdrv.c
rc39e9fb r945d66c 233 233 * @return Error code. 234 234 */ 235 int usb_device_retrieve_descriptors(usb_pipe_t *ctrl_pipe, 236 usb_device_descriptors_t *descriptors) 237 { 238 assert(descriptors != NULL); 239 240 descriptors->configuration = NULL; 241 242 int rc; 235 static int usb_device_retrieve_descriptors(usb_device_t *usb_dev) 236 { 237 assert(usb_dev); 238 assert(usb_dev->descriptors.configuration == NULL); 243 239 244 240 /* It is worth to start a long transfer. */ 245 usb_pipe_start_long_transfer( ctrl_pipe);241 usb_pipe_start_long_transfer(&usb_dev->ctrl_pipe); 246 242 247 243 /* Get the device descriptor. */ 248 rc = usb_request_get_device_descriptor(ctrl_pipe, &descriptors->device); 244 int rc = usb_request_get_device_descriptor(&usb_dev->ctrl_pipe, 245 &usb_dev->descriptors.device); 249 246 if (rc != EOK) { 250 247 goto leave; … … 253 250 /* Get the full configuration descriptor. */ 254 251 rc = usb_request_get_full_configuration_descriptor_alloc( 255 ctrl_pipe, 0, (void **) &descriptors->configuration, 256 &descriptors->configuration_size); 252 &usb_dev->ctrl_pipe, 0, 253 (void **) &usb_dev->descriptors.configuration, 254 &usb_dev->descriptors.configuration_size); 257 255 258 256 leave: 259 usb_pipe_end_long_transfer( ctrl_pipe);257 usb_pipe_end_long_transfer(&usb_dev->ctrl_pipe); 260 258 261 259 return rc; … … 266 264 * @param[in] descriptors Where to store the descriptors. 267 265 */ 268 void usb_device_release_descriptors(usb_device_descriptors_t *descriptors) 269 { 270 assert(descriptors); 271 free(descriptors->configuration); 272 descriptors->configuration = NULL; 266 static void usb_device_release_descriptors(usb_device_t *usb_dev) 267 { 268 assert(usb_dev); 269 free(usb_dev->descriptors.configuration); 270 usb_dev->descriptors.configuration = NULL; 271 usb_dev->descriptors.configuration_size = 0; 273 272 } 274 273 … … 394 393 } 395 394 395 const usb_standard_device_descriptor_t * 396 usb_device_get_device_descriptor(usb_device_t *usb_dev) 397 { 398 assert(usb_dev); 399 return &usb_dev->descriptors.device; 400 } 401 402 const void * usb_device_get_configuration_descriptor( 403 usb_device_t *usb_dev, size_t *size) 404 { 405 assert(usb_dev); 406 if (size) 407 *size = usb_dev->descriptors.configuration_size; 408 return usb_dev->descriptors.configuration; 409 } 410 396 411 /** Initialize new instance of USB device. 397 412 * … … 462 477 463 478 /* Retrieve standard descriptors. */ 464 rc = usb_device_retrieve_descriptors( 465 &usb_dev->ctrl_pipe, &usb_dev->descriptors); 479 rc = usb_device_retrieve_descriptors(usb_dev); 466 480 if (rc != EOK) { 467 481 *errstr_ptr = "descriptor retrieval"; … … 489 503 usb_hc_connection_close(&usb_dev->hc_conn); 490 504 /* Full configuration descriptor is allocated. */ 491 usb_device_release_descriptors( &usb_dev->descriptors);505 usb_device_release_descriptors(usb_dev); 492 506 /* Alternate interfaces may be allocated */ 493 507 usb_alternate_interfaces_deinit(&usb_dev->alternate_interfaces); … … 515 529 usb_hc_connection_deinitialize(&dev->hc_conn); 516 530 usb_alternate_interfaces_deinit(&dev->alternate_interfaces); 517 usb_device_release_descriptors( &dev->descriptors);531 usb_device_release_descriptors(dev); 518 532 free(dev->driver_data); 519 533 dev->driver_data = NULL;
Note:
See TracChangeset
for help on using the changeset viewer.