Я пытаюсь понять, как xhci_urb_enqueue()
выясняет, какой адрес конечной точки направляет запросы управления. Из кода он вызывает ep_index = xhci_get_endpoint_index(&urb->ep->desc)
для получения ep_index, который в конечном итоге использует epd->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK
для определения адреса конечной точки.
Насколько я понимаю, на управляющие запросы для получения device/configuration/interface /endpoint descriptors
отвечает только ep0, и после этого хост выдает на устройство Set_Address/Set_configuration
, с этого момента все управляющие запросы должны отправляться на адрес фактической конечной точки, упомянутый в конечной точке. дескриптор.
Мои вопросы:
Должно ли USB-устройство вызывать конечные точки после получения запроса Set_configuration?
Как и когда устанавливается epd->bEndpointAddress
на этапе настройки, упомянутом выше?