在方法usb_device_new()中,他们使用此函数调用读取usb_device_descriptor
read(fd, device->desc, sizeof(device->desc));
首先,在你打开设备之后,从文件描述符中读取数据。你怎么知道USB设备描述符是什么?我觉得有点困惑。
第二个问题是如何从USB设备读取usb_interface_descriptorusb_endpoint_descriptor
谢谢。

最佳答案

我发现他们如何检索接口和终结点的详细信息:

while ((desc = usb_descriptor_iter_next(&iter)) != NULL)
    {
        if (desc->bDescriptorType == USB_DT_INTERFACE)
        {
            struct usb_interface_descriptor *interface = (struct usb_interface_descriptor *) desc;

            interfaceValues.add(interface->bInterfaceNumber);
            interfaceValues.add(interface->bInterfaceClass);
            interfaceValues.add(interface->bInterfaceSubClass);
            interfaceValues.add(interface->bInterfaceProtocol);
            interfaceValues.add(interface->bNumEndpoints);
        }
        else if (desc->bDescriptorType == USB_DT_ENDPOINT)
        {
            struct usb_endpoint_descriptor *endpoint = (struct usb_endpoint_descriptor *) desc;

            endpointValues.add(endpoint->bEndpointAddress);
            endpointValues.add(endpoint->bmAttributes);
            endpointValues.add(__le16_to_cpu(endpoint->wMaxPacketSize));
            endpointValues.add(endpoint->bInterval);
        }
    }

我只需要在框架中深入一点,在this文件中。

10-07 23:31