0x00,\r
0x00 // bInterval\r
};\r
-const char BOSDescriptor[] = {\r
- // BOS descriptor header\r
- 0x05, 0x0F, 0x39, 0x00, 0x02,\r
-\r
- // Microsoft OS 2.0 Platform Capability Descriptor\r
- 0x1C, // Descriptor size (28 bytes)\r
- 0x10, // Descriptor type (Device Capability)\r
- 0x05, // Capability type (Platform)\r
- 0x00, // Reserved\r
-\r
- // MS OS 2.0 Platform Capability ID (D8DD60DF-4589-4CC7-9CD2-659D9E648A9F)\r
- 0xDF, 0x60, 0xDD, 0xD8,\r
- 0x89, 0x45,\r
- 0xC7, 0x4C,\r
- 0x9C, 0xD2,\r
- 0x65, 0x9D, 0x9E, 0x64, 0x8A, 0x9F,\r
-\r
- 0x00, 0x00, 0x03, 0x06, // Windows version (8.1) (0x06030000)\r
- 0x1e, 0x00,\r
- 252, // Vendor-assigned bMS_VendorCode\r
- 0x00 // Doesn’t support alternate enumeration\r
-};\r
\r
static const char StrDescLanguageCodes[] = {\r
4, // Length\r
};\r
\r
static const char StrDescProduct[] = {\r
- 8, // Length\r
+ 9, // Length\r
0x03, // Type is string\r
'P', 0x00,\r
'M', 0x00,\r
- '3', 0x00\r
+ '3', 0x00,\r
+ 0x00\r
};\r
\r
const char* getStringDescriptor(uint8_t idx)\r
AT91F_USB_SendData(pUdp, devDescriptor, MIN(sizeof(devDescriptor), wLength));\r
else if (wValue == 0x200) // Return Configuration Descriptor\r
AT91F_USB_SendData(pUdp, cfgDescriptor, MIN(sizeof(cfgDescriptor), wLength));\r
- else if ((wValue & 0xF00) == 0xF00) // Return BOS Descriptor\r
- AT91F_USB_SendData(pUdp, BOSDescriptor, MIN(sizeof(BOSDescriptor), wLength));\r
- else if ((wValue & 0x300) == 0x300) // Return Manufacturer Descriptor - this is needed by Android\r
- AT91F_USB_SendData(pUdp, StrDescManufacturer, MIN(sizeof(StrDescManufacturer), wLength));\r
else if ((wValue & 0xF00) == 0x300) { // Return String Descriptor\r
const char *strDescriptor = getStringDescriptor(wValue & 0xff);\r
if (strDescriptor != NULL) {\r