Hello
I tried to go up the code and compare between the good and bad key.
When the function usb_host_cntrl_transaction_done is called, the pointer dev_inst_ptr, which is assigned to handle->pipe_ptr->DEV_INSTANCE have the following value:
With the good key: dev_inst_ptr.dev_descriptor.bDeviceClass / SubClass / Protocol = 0x00, 0x00, 0x00 (Like in the LOG file obtained with the USB tool):
Device Qualifier Descriptor:
------------------------------
0x0A bLength
0x06 bDescriptorType
0x0200 bcdUSB
0x00 bDeviceClass
0x00 bDeviceSubClass
0x00 bDeviceProtocol
0x40 bMaxPacketSize0 (64 Bytes)
0x01 bNumConfigurations
0x00 bReserved
With the bad key, these values are 0x09, 0x00, 0x00 but the Log file is Ok (like the good key):
Then due to these values, later in function usb_host_driver_info_match, the following test is TRUE:
if ((info_ptr->bDeviceSubClass == 0xFF) &&
(info_ptr->bDeviceProtocol ==
intf_ptr->bInterfaceProtocol))
{
#ifdef _HOST_DEBUG_
DEBUG_LOG_TRACE("usb_host_driver_info_match interface class, match interface protocol");
#endif
return TRUE;
}
With the good key, it is this test which is TRUE:
if ((info_ptr->bDeviceSubClass ==
intf_ptr->bInterfaceSubClass) &&
(info_ptr->bDeviceProtocol ==
intf_ptr->bInterfaceProtocol))
{
#ifdef _HOST_DEBUG_
DEBUG_LOG_TRACE("usb_host_driver_info_match interface class, match interface subclass, match interface protocol");
#endif
return TRUE;
} /* Endif */
Now, it difficult for me to know why the Class value is 09 instead of 00. It is difficult to me to understand the code executed before with the "PIPE"
