USBEngineeringChangeNoticeUSBECN:InterfaceAssociationDescriptor1USBENGINEERINGCHANGENOTICETitle:InterfaceAssociationDescriptorsAppliesto:UniversalSerialBusSpecification,Revision2.0SummaryofECNThisECNdefinesanewstandarddescriptorandinterfacenumberingrulesthatallowadevicetodescribewhichinterfacesareassociatedwiththesamedevicefunction.Thisallowstheoperatingsystemtobindalloftheappropriateinterfacestothesamedriverinstance.ReasonsforECNThebaseconfigurationmodelassumedbythecoreUSBframeworkwasthattherewasalwaysa1:1associationbetweenaninterfaceandafunctiononadevice.Systemsoftwarewasdesignedtotheintentofthecorespecificationandassumesonedriverperfunction(andoneinterface)(seefigurebelow).ConfigurationFunctionDeviceDriverAInterface0DeviceFunction0FunctionDeviceDriverBInterface1DeviceFunction1SystemSoftwareUSBDeviceSeveraldeviceclassspecificationshaveexceededthecoreUSBspecificationframeworkanddefineddevicefunctionsthatutilizemultipleinterfaces(i.e.multipleinterfacedescriptors).Themodeltosupportthisstillrequiresonlyonefunctiondriverperfunction,butalsorequiresmultipleinterfacesgettingboundtothesamedriverinstance(seefigurebelow).Unfortunately,thereisnostandardmethodtoallowadevice,viathedeviceframework,todescribewhichinterfacesinaconfigurationshouldbeassociatedwiththesamefunction.ConfigurationFunctionDeviceDriverAInterface0DeviceFunction0Interface1SystemSoftwareUSBDeviceUSBEngineeringChangeNoticeUSBECN:InterfaceAssociationDescriptor2Thischangenoticedefinesthenecessaryextensionstothedeviceframeworkthatallowthedevicetoannotatewhichinterfacesareassociatedwiththesamefunction.Thisdeviceframeworkextensionwillbeeventuallyrequiredforalldevicesthatutilizemultipleinterfacesperdevicefunction.ImpactonExistingPeripheralsandSystems:NoImpact.HardwareImplications:None.SoftwareImplications:Noimpacttoexistingoperatingsystemversionsandexistingdeviceclasses.Thenewdescriptorsareignoredbysystemsoftware.Theinterfacestheydescribedon’tchange.Thisfeaturemustbesupportedbyfutureimplementationsofdevicesthatusemultipleinterfacestomanageasingledevicefunction.Thereexistsanimpacttofuture/newdeviceimplementationsfordeviceclassesthatarenotcurrentlysupportedbytheOS.Specifically,ifadeviceimplementationincludesmultiplefunctionalunits(withmultipleinterfacesperunit)thenthedevicewillonlybecorrectlyenumeratedonanOSimplementationthatsupportsthisnewdescriptor.InordertomoreeasilyenhanceexistingOSimplementationswiththecapabilitytohandledevicesthatusethisdescriptor,adeviceclasscodewillbeallocatedwiththeintentthatalldevicesthatusetheinterfaceassociationdescriptorwillusethisclasscodeintheirdevicedescriptor.Thiswillalloweasyinstallationofanewdriverthatknowshowtoparseandenumerateconfigurationsthatincludetheinterfaceassociationdescriptor.TheclasscodefortheIADwillbedocumentedontheusb.orgwebsite.ItisundertheresponsibilityoftheexistingDeviceClassworkinggroupstodeterminewhethertheirindividualspecificationsneedtobemodifiedtoworkwithortakeadvantageofthisnewframeworkextension.ComplianceTestingImplications:Thestandardcompliancetoolset(USBCV)mustbeeventuallyupdatedtochecktheformat(anduse)ofthesenewdescriptors.Inaddition,somerulesmustbeestablishedforthecompliancetoolstodeterminewhichdeviceshouldbeusingthesedescriptorsandfailthemfornotusingthem.USBEngineeringChangeNoticeUSBECN:InterfaceAssociationDescriptor3SpecificationChangesThefollowingproposalisbackwardcompatiblewithpreviousoperatingsystems.Itleavescurrentinterfacedefinitionsaloneandaddsanewdescriptortype.Forolderoperatingsystemsversions,thenewdescriptorswillbeignoredandtheoldmechanismswillprevail.Fornewoperatingsystemversions,thenewdescriptorswillbeineffect.Addthefollowingtotable9-6(note,thecorespecificationcurrentlydefinesvalues1-8.Sincepublication,values9&10havebeenallocatedasnotedbelow).DescriptorTypesValueDEVICE1CONFIGURATION2STRING3INTERFACE4ENDPOINT5DEVICE_QUALIFIER6OTHER_SPEED_CONFIGURATION7INTERFACE_POWER8OTG9DEBUG10INTERFACE_ASSOCIATION11USBEngineeringChangeNoticeUSBECN:InterfaceAssociationDescriptor4ThefollowingisthedefinitionofanInterfaceAssociationDescriptor.Atthenextspecrevisionupdate,itshouldbeincludedasanewsection9.6.6(movingthecurrentsection9.6.6to9.6.7,andso-on).9.X.YInterfaceAssociationTheInterfaceAssociationDescriptorisusedtodescribethattwoormoreinterfacesareassociatedtothesamefunction.An‘association’includestwoormoreinterfacesandalloftheiralternatesettinginterfaces.AdevicemustuseanInterfaceAssociationdescriptorforeachdevicefunctionthatrequiresmorethanoneinterface.AnInterfaceAssociationdescriptorisalwaysreturnedaspartoftheconfigurationinformationreturnedbyaGetDescriptor(Configuration)request.AninterfaceassociationdescriptorcannotbedirectlyaccessedwithaGetDescriptor()orSetDescriptor()request.Aninterfaceassociationdescriptormustbelocatedbeforethesetofinterfacedescriptors(includingallalternatesettings)fortheinterfacesitassociates.Alloftheinterfacenumbersinthesetofassociatedinterfacesmustbecontiguous.Table9-Zshowsthestandardinterfaceassociationdescriptor.Theinterfaceassociationdescriptorincludesfunctionclass,subclass