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