VirtualBox

Changeset 43960 in vbox


Ignore:
Timestamp:
Nov 26, 2012 12:01:53 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
82305
Message:

VUSB: interface association descriptor for emulated devices.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vusb.h

    r37807 r43960  
    5555#define VUSB_DT_OTHER_SPEED_CFG         0x07
    5656#define VUSB_DT_INTERFACE_POWER         0x08
     57#define VUSB_DT_INTERFACE_ASSOCIATION   0x0B
    5758/** @} */
    5859
     
    163164
    164165/**
     166 * USB interface association descriptor (from USB ECN Interface Association Descriptors)
     167 */
     168typedef struct VUSBDESCIAD
     169{
     170    uint8_t bLength;
     171    uint8_t bDescriptorType;
     172    uint8_t bFirstInterface;
     173    uint8_t bInterfaceCount;
     174    uint8_t bFunctionClass;
     175    uint8_t bFunctionSubClass;
     176    uint8_t bFunctionProtocol;
     177    uint8_t iFunction;
     178} VUSBDESCIAD;
     179/** Pointer to a USB interface association descriptor. */
     180typedef VUSBDESCIAD *PVUSBDESCIAD;
     181/** Pointer to a readonly USB interface association descriptor. */
     182typedef const VUSBDESCIAD *PCVUSBDESCIAD;
     183
     184
     185/**
    165186 * USB interface descriptor (from spec)
    166187 */
     
    257278     * Core.bNumEndpoints in size. */
    258279    const struct VUSBDESCENDPOINTEX *paEndpoints;
     280    /** Interface association descriptor, which prepends a group of interfaces,
     281     * starting with this interface. */
     282    PCVUSBDESCIAD pIAD;
     283    /** Size of interface association descriptor. */
     284    uint16_t cbIAD;
    259285} VUSBDESCINTERFACEEX;
    260286/** Pointer to an prased USB interface descriptor. */
  • trunk/src/VBox/Devices/Input/UsbKbd.cpp

    r40392 r43960  
    299299    /* .pvClass = */    &g_UsbHidIfHidDesc,
    300300    /* .cbClass = */    sizeof(g_UsbHidIfHidDesc),
    301     &g_aUsbHidEndpointDescs[0]
     301    &g_aUsbHidEndpointDescs[0],
     302    /* .pIAD = */ NULL,
     303    /* .cbIAD = */ 0
    302304};
    303305
  • trunk/src/VBox/Devices/Input/UsbMouse.cpp

    r43780 r43960  
    379379    /* .pvClass = */    &g_UsbHidMIfHidDesc,
    380380    /* .cbClass = */    sizeof(g_UsbHidMIfHidDesc),
    381     &g_aUsbHidMEndpointDescs[0]
     381    &g_aUsbHidMEndpointDescs[0],
     382    /* .pIAD = */ NULL,
     383    /* .cbIAD = */ 0
    382384};
    383385
     
    398400    /* .pvClass = */    &g_UsbHidTIfHidDesc,
    399401    /* .cbClass = */    sizeof(g_UsbHidTIfHidDesc),
    400     &g_aUsbHidTEndpointDescs[0]
     402    &g_aUsbHidTEndpointDescs[0],
     403    /* .pIAD = */ NULL,
     404    /* .cbIAD = */ 0
    401405};
    402406
  • trunk/src/VBox/Devices/Storage/UsbMsd.cpp

    r43815 r43960  
    350350    /* .pvClass = */    NULL,
    351351    /* .cbClass = */    0,
    352     &g_aUsbMsdEndpointDescsFS[0]
     352    &g_aUsbMsdEndpointDescsFS[0],
     353    /* .pIAD = */ NULL,
     354    /* .cbIAD = */ 0
    353355};
    354356
     
    369371    /* .pvClass = */    NULL,
    370372    /* .cbClass = */    0,
    371     &g_aUsbMsdEndpointDescsHS[0]
     373    &g_aUsbMsdEndpointDescsHS[0],
     374    /* .pIAD = */ NULL,
     375    /* .cbIAD = */ 0
    372376};
    373377
  • trunk/src/VBox/Devices/USB/VUSBDevice.cpp

    r37359 r43960  
    716716        for (uint32_t j = 0; j < pIf->cSettings; j++)
    717717        {
     718            cbTotal += pIf->paSettings[j].cbIAD;
    718719            cbTotal += pIf->paSettings[j].Core.bLength;
    719720            cbTotal += pIf->paSettings[j].cbClass;
     
    743744            PCVUSBDESCINTERFACEEX pIfDesc = &pIf->paSettings[j];
    744745
     746            COPY_DATA(pbBuf, cbLeft, pIfDesc->pIAD, pIfDesc->cbIAD);
    745747            COPY_DATA(pbBuf, cbLeft, pIfDesc, VUSB_DT_INTERFACE_MIN_LEN);
    746748            COPY_DATA(pbBuf, cbLeft, pIfDesc->pvMore, pIfDesc->Core.bLength - VUSB_DT_INTERFACE_MIN_LEN);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette