Changes in uspace/drv/usbhid/usbhid.c [054537b:4125b7d] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/usbhid/usbhid.c
r054537b r4125b7d 136 136 137 137 // set the init callback 138 hid_dev->subdrivers[0].init = usb_generic_hid_init;138 hid_dev->subdrivers[0].init = NULL; 139 139 140 140 // set the polling callback … … 158 158 const usb_hid_subdriver_mapping_t *mapping) 159 159 { 160 assert(hid_dev != NULL); 161 assert(hid_dev->usb_dev != NULL); 162 163 return (hid_dev->usb_dev->descriptors.device.vendor_id 164 == mapping->vendor_id 165 && hid_dev->usb_dev->descriptors.device.product_id 166 == mapping->product_id); 160 return false; 167 161 } 168 162 … … 198 192 } 199 193 200 assert(hid_dev-> report!= NULL);194 assert(hid_dev->parser != NULL); 201 195 202 196 usb_log_debug("Compare flags: %d\n", mapping->compare); 203 size_t size = usb_hid_report_input_length(hid_dev-> report, usage_path,197 size_t size = usb_hid_report_input_length(hid_dev->parser, usage_path, 204 198 mapping->compare); 205 199 usb_log_debug("Size of the input report: %zuB\n", size); … … 257 251 while (count < USB_HID_MAX_SUBDRIVERS && 258 252 (mapping->usage_path != NULL 259 || mapping->vendor_id >= 0 || mapping->product_id >= 0)) {253 || mapping->vendor_id != 0 || mapping->product_id != 0)) { 260 254 // check the vendor & product ID 261 if (mapping->vendor_id >= 0 && mapping->product_id <0) {262 usb_log_warning("Missing Product ID for Vendor ID % d\n",255 if (mapping->vendor_id != 0 && mapping->product_id == 0) { 256 usb_log_warning("Missing Product ID for Vendor ID %u\n", 263 257 mapping->vendor_id); 264 258 return EINVAL; 265 259 } 266 if (mapping->product_id >= 0 && mapping->vendor_id <0) {267 usb_log_warning("Missing Vendor ID for Product ID % d\n",260 if (mapping->product_id != 0 && mapping->vendor_id == 0) { 261 usb_log_warning("Missing Vendor ID for Product ID %u\n", 268 262 mapping->product_id); 269 263 return EINVAL; … … 273 267 matched = false; 274 268 275 if (mapping->vendor_id >= 0) {276 assert(mapping->product_id >= 0);269 if (mapping->vendor_id != 0) { 270 assert(mapping->product_id != 0); 277 271 usb_log_debug("Comparing device against vendor ID %u" 278 272 " and product ID %u.\n", mapping->vendor_id, … … 347 341 } 348 342 349 hid_dev-> report = (usb_hid_report_t *)(malloc(sizeof(350 usb_hid_report_ t)));351 if (hid_dev-> report== NULL) {343 hid_dev->parser = (usb_hid_report_parser_t *)(malloc(sizeof( 344 usb_hid_report_parser_t))); 345 if (hid_dev->parser == NULL) { 352 346 usb_log_fatal("No memory!\n"); 353 347 free(hid_dev); … … 388 382 return rc; 389 383 } 390 384 385 /* Initialize the report parser. */ 386 rc = usb_hid_parser_init(hid_dev->parser); 387 if (rc != EOK) { 388 usb_log_error("Failed to initialize report parser.\n"); 389 //usb_hid_free(&hid_dev); 390 return rc; 391 } 392 391 393 /* Get the report descriptor and parse it. */ 392 394 rc = usb_hid_process_report_descriptor(hid_dev->usb_dev, 393 hid_dev-> report);395 hid_dev->parser); 394 396 395 397 bool fallback = false; … … 490 492 usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)arg; 491 493 492 int allocated = (hid_dev->input_report != NULL);493 494 if (!allocated495 || hid_dev->input_report_size < buffer_size) {496 uint8_t *input_old = hid_dev->input_report;497 uint8_t *input_new = (uint8_t *)malloc(buffer_size);498 499 if (input_new == NULL) {500 usb_log_error("Failed to allocate space for input "501 "buffer. This event may not be reported\n");502 memset(hid_dev->input_report, 0,503 hid_dev->input_report_size);504 } else {505 memcpy(input_new, input_old,506 hid_dev->input_report_size);507 hid_dev->input_report = input_new;508 if (allocated) {509 free(input_old);510 }511 }512 }513 514 /*! @todo This should probably be atomic. */515 memcpy(hid_dev->input_report, buffer, buffer_size);516 hid_dev->input_report_size = buffer_size;517 518 494 bool cont = false; 519 495 … … 554 530 /*----------------------------------------------------------------------------*/ 555 531 556 //const char *usb_hid_get_function_name(const usb_hid_dev_t *hid_dev)557 //{558 //switch (hid_dev->poll_pipe_index) {559 //case USB_HID_KBD_POLL_EP_NO:560 //return HID_KBD_FUN_NAME;561 //break;562 //case USB_HID_MOUSE_POLL_EP_NO:563 //return HID_MOUSE_FUN_NAME;564 //break;565 //default:566 //return HID_GENERIC_FUN_NAME;567 //}568 //}569 570 /*----------------------------------------------------------------------------*/ 571 572 //const char *usb_hid_get_class_name(const usb_hid_dev_t *hid_dev)573 //{574 //// this means that only boot protocol keyboards will be connected575 //// to the console; there is probably no better way to do this576 577 //switch (hid_dev->poll_pipe_index) {578 //case USB_HID_KBD_POLL_EP_NO:579 //return HID_KBD_CLASS_NAME;580 //break;581 //case USB_HID_MOUSE_POLL_EP_NO:582 //return HID_MOUSE_CLASS_NAME;583 //break;584 //default:585 //return HID_GENERIC_CLASS_NAME;586 //}587 //}532 const char *usb_hid_get_function_name(const usb_hid_dev_t *hid_dev) 533 { 534 switch (hid_dev->poll_pipe_index) { 535 case USB_HID_KBD_POLL_EP_NO: 536 return HID_KBD_FUN_NAME; 537 break; 538 case USB_HID_MOUSE_POLL_EP_NO: 539 return HID_MOUSE_FUN_NAME; 540 break; 541 default: 542 return HID_GENERIC_FUN_NAME; 543 } 544 } 545 546 /*----------------------------------------------------------------------------*/ 547 548 const char *usb_hid_get_class_name(const usb_hid_dev_t *hid_dev) 549 { 550 // this means that only boot protocol keyboards will be connected 551 // to the console; there is probably no better way to do this 552 553 switch (hid_dev->poll_pipe_index) { 554 case USB_HID_KBD_POLL_EP_NO: 555 return HID_KBD_CLASS_NAME; 556 break; 557 case USB_HID_MOUSE_POLL_EP_NO: 558 return HID_MOUSE_CLASS_NAME; 559 break; 560 default: 561 return HID_GENERIC_CLASS_NAME; 562 } 563 } 588 564 589 565 /*----------------------------------------------------------------------------*/ … … 615 591 616 592 // destroy the parser 617 if ((*hid_dev)-> report!= NULL) {618 usb_hid_free_report ((*hid_dev)->report);593 if ((*hid_dev)->parser != NULL) { 594 usb_hid_free_report_parser((*hid_dev)->parser); 619 595 } 620 596
Note:
See TracChangeset
for help on using the changeset viewer.