diff options
Diffstat (limited to 'audio/sysvad/EndpointsCommon/usbhsspeakertoptable.h')
| -rw-r--r-- | audio/sysvad/EndpointsCommon/usbhsspeakertoptable.h | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/audio/sysvad/EndpointsCommon/usbhsspeakertoptable.h b/audio/sysvad/EndpointsCommon/usbhsspeakertoptable.h new file mode 100644 index 00000000..2f79024f --- /dev/null +++ b/audio/sysvad/EndpointsCommon/usbhsspeakertoptable.h @@ -0,0 +1,176 @@ +/*++ + +Copyright (c) Microsoft Corporation All Rights Reserved + +Module Name: + + usbhsspeakertoptable.h + +Abstract: + + Declaration of topology tables for the USB Headset speaker (external). + +--*/ + +#ifndef _SYSVAD_USBHSSPEAKERTOPTABLE_H_ +#define _SYSVAD_USBHSSPEAKERTOPTABLE_H_ + +#include "usbhsspeakertopo.h" + +//============================================================================= +static +KSDATARANGE UsbHsSpeakerTopoPinDataRangesBridge[] = +{ + { + sizeof(KSDATARANGE), + 0, + 0, + 0, + STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO), + STATICGUIDOF(KSDATAFORMAT_SUBTYPE_ANALOG), + STATICGUIDOF(KSDATAFORMAT_SPECIFIER_NONE) + } +}; + +//============================================================================= +static +PKSDATARANGE UsbHsSpeakerTopoPinDataRangePointersBridge[] = +{ + &UsbHsSpeakerTopoPinDataRangesBridge[0] +}; + +//============================================================================= +static +PCPIN_DESCRIPTOR UsbHsSpeakerTopoMiniportPins[] = +{ + // KSPIN_TOPO_WAVEOUT_SOURCE + { + 0, + 0, + 0, // InstanceCount + NULL, // AutomationTable + { // KsPinDescriptor + 0, // InterfacesCount + NULL, // Interfaces + 0, // MediumsCount + NULL, // Mediums + SIZEOF_ARRAY(UsbHsSpeakerTopoPinDataRangePointersBridge),// DataRangesCount + UsbHsSpeakerTopoPinDataRangePointersBridge, // DataRanges + KSPIN_DATAFLOW_IN, // DataFlow + KSPIN_COMMUNICATION_NONE, // Communication + &KSCATEGORY_AUDIO, // Category + NULL, // Name + 0 // Reserved + } + }, + // KSPIN_TOPO_LINEOUT_DEST + { + 0, + 0, + 0, // InstanceCount + NULL, // AutomationTable + { // KsPinDescriptor + 0, // InterfacesCount + NULL, // Interfaces + 0, // MediumsCount + NULL, // Mediums + SIZEOF_ARRAY(UsbHsSpeakerTopoPinDataRangePointersBridge),// DataRangesCount + UsbHsSpeakerTopoPinDataRangePointersBridge, // DataRanges + KSPIN_DATAFLOW_OUT, // DataFlow + KSPIN_COMMUNICATION_NONE, // Communication + &KSNODETYPE_HEADSET_SPEAKERS, // Category + NULL, // Name + 0 // Reserved + } + } +}; + +//============================================================================= +static +KSJACK_DESCRIPTION UsbHsSpeakerJackDesc = +{ + KSAUDIO_SPEAKER_STEREO, + 0, // color + eConnTypeOtherDigital, + eGeoLocBottom, + eGenLocPrimaryBox, + ePortConnJack, + FALSE // run-time code sets this value. +}; + +// Only return a KSJACK_DESCRIPTION for the physical bridge pin. +static +PKSJACK_DESCRIPTION UsbHsSpeakerJackDescriptions[] = +{ + NULL, + &UsbHsSpeakerJackDesc +}; + +//============================================================================= +static +PCCONNECTION_DESCRIPTOR UsbHsSpeakerTopoMiniportConnections[] = +{ + // FromNode, FromPin, ToNode, ToPin + { PCFILTER_NODE, KSPIN_TOPO_WAVEOUT_SOURCE, PCFILTER_NODE, KSPIN_TOPO_LINEOUT_DEST } +}; + +//============================================================================= +static +PCPROPERTY_ITEM UsbHsSpeakerPropertiesTopoFilter[] = +{ + { + &KSPROPSETID_Jack, + KSPROPERTY_JACK_DESCRIPTION, + KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, + PropertyHandler_UsbHsSpeakerTopoFilter + }, + { + &KSPROPSETID_Jack, + KSPROPERTY_JACK_DESCRIPTION2, + KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, + PropertyHandler_UsbHsSpeakerTopoFilter + }, + { + &KSPROPSETID_Jack, + KSPROPERTY_JACK_CONTAINERID, + KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, + PropertyHandler_UsbHsSpeakerTopoFilter + } +}; + +static +PCEVENT_ITEM UsbHsSpeakerPropertiesTopoFilterEvent[] = +{ + { + &KSEVENTSETID_PinCapsChange, // Something changed! + KSEVENT_PINCAPS_JACKINFOCHANGE, // The only event-property defined. + KSEVENT_TYPE_ENABLE | KSEVENT_TYPE_BASICSUPPORT, + PropertyHandler_UsbHsSpeakerTopoFilterEvent + } +}; + +DEFINE_PCAUTOMATION_TABLE_PROP_EVENT(AutomationUsbHsSpeakerTopoFilterWithEvent, + UsbHsSpeakerPropertiesTopoFilter, + UsbHsSpeakerPropertiesTopoFilterEvent); + +//============================================================================= +static +PCFILTER_DESCRIPTOR UsbHsSpeakerTopoMiniportFilterDescriptor = +{ + 0, // Version + &AutomationUsbHsSpeakerTopoFilterWithEvent, // AutomationTable + sizeof(PCPIN_DESCRIPTOR), // PinSize + SIZEOF_ARRAY(UsbHsSpeakerTopoMiniportPins), // PinCount + UsbHsSpeakerTopoMiniportPins, // Pins + sizeof(PCNODE_DESCRIPTOR), // NodeSize + 0, // NodeCount + NULL, // Nodes + SIZEOF_ARRAY(UsbHsSpeakerTopoMiniportConnections), // ConnectionCount + UsbHsSpeakerTopoMiniportConnections, // Connections + 0, // CategoryCount + NULL // Categories +}; + +#endif // _SYSVAD_USBHSSPEAKERTOPTABLE_H_ + + |
