Changeset 45019865 in mainline for uspace/drv/usbkbd/descparser.c


Ignore:
Timestamp:
2011-01-14T13:35:14Z (13 years ago)
Author:
Lubos Slovak <lubos.slovak@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0a9ea4a
Parents:
f401312
Message:

Fixed descriptor parsing.

  • Properly parses standard descriptors.
  • Properly gets report descriptor.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/usbkbd/descparser.c

    rf401312 r45019865  
    5252                        free(config->interfaces[i].endpoints);
    5353                }
    54                 if (iface->class_desc_info != NULL) {
     54                /*if (iface->class_desc_info != NULL) {
    5555                        free(iface->class_desc_info);
    5656                }
     
    6464                                }
    6565                        }
    66                 }
     66                }*/
    6767        }
    6868       
     
    152152                        }
    153153                        ep_i = 0;
     154
     155                        printf("Remaining size: %d\n", size - (size_t)(pos - data));
    154156                       
    155157                        break;
     
    184186                        break;
    185187                case USB_DESCTYPE_HID:
    186                         if (desc_size < sizeof(usb_standard_hid_descriptor_t)
    187                            + sizeof(usb_standard_hid_class_descriptor_info_t)) {
     188                        if (desc_size < sizeof(usb_standard_hid_descriptor_t)) {
     189                                printf("Wrong size of descriptor: %d (should be %d)\n",
     190                                    desc_size, sizeof(usb_standard_hid_descriptor_t));
    188191                                ret = EINVAL;
    189192                                goto end;
     
    195198                        pos += sizeof(usb_standard_hid_descriptor_t);
    196199                       
    197                         if (actual_iface->hid_desc.class_desc_count
     200                        /*if (actual_iface->hid_desc.class_desc_count
    198201                            * sizeof(usb_standard_hid_class_descriptor_info_t)
    199202                            != desc_size
     
    203206                                ret = EINVAL;
    204207                                goto end;
    205                         }
     208                        }*/
    206209
    207210                        printf("Parsed HID descriptor header: \n");
     
    209212                       
    210213                        // allocate space for all class-specific descriptor info
    211                         actual_iface->class_desc_info =
     214                        /*actual_iface->class_desc_info =
    212215                            (usb_standard_hid_class_descriptor_info_t *)malloc(
    213216                            actual_iface->hid_desc.class_desc_count
     
    216219                                ret = ENOMEM;
    217220                                goto end;
    218                         }
     221                        }*/
    219222                       
    220223                        // allocate space for all class-specific descriptors
     
    317320                dump_standard_hid_descriptor_header(&iface_d->hid_desc);
    318321                printf("\n");
     322                dump_hid_class_descriptor(0, USB_DESCTYPE_HID_REPORT,
     323                    iface_d->report_desc, iface_d->hid_desc.report_desc_info.length);
     324                printf("\n");
    319325//              printf("%d class-specific descriptors\n",
    320326//                  iface_d->hid_desc.class_desc_count);
    321                 for (j = 0; j < iface_d->hid_desc.class_desc_count; ++j) {
     327                /*for (j = 0; j < iface_d->hid_desc.class_desc_count; ++j) {
    322328                        dump_standard_hid_class_descriptor_info(
    323329                            &iface_d->class_desc_info[j]);
     
    329335                            iface_d->class_descs[j],
    330336                            iface_d->class_desc_info[j].length);
    331                 }
     337                }*/
    332338        }
    333339}
Note: See TracChangeset for help on using the changeset viewer.