diff options
| author | Daniel Rugerio <[email protected]> | 2021-08-13 15:05:12 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-08-13 15:05:12 -0700 |
| commit | 7895dd22785ddba5e973662ed942be3b3452b89d (patch) | |
| tree | 5c4572d5bfd076d3776a88c5757e37f3ed50c0e7 /audio/sysvad/EndpointsCommon/a2dphpspeakertopo.cpp | |
| parent | df47b2d284558fa9aacd19257153037e4ebba60e (diff) | |
audio: Updates for Windows 10 22000 (#655)
* Updates for Windows 10 22000.
* Change how WIL is consumed.
Diffstat (limited to 'audio/sysvad/EndpointsCommon/a2dphpspeakertopo.cpp')
| -rw-r--r-- | audio/sysvad/EndpointsCommon/a2dphpspeakertopo.cpp | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/audio/sysvad/EndpointsCommon/a2dphpspeakertopo.cpp b/audio/sysvad/EndpointsCommon/a2dphpspeakertopo.cpp new file mode 100644 index 00000000..0f24a4dc --- /dev/null +++ b/audio/sysvad/EndpointsCommon/a2dphpspeakertopo.cpp @@ -0,0 +1,120 @@ +/*++ + +Copyright (c) Microsoft Corporation All Rights Reserved + +Module Name: + + a2dphpspeakertopo.cpp + +Abstract: + + Implementation of topology miniport for the A2DP Headphone speaker (external). + +--*/ +#ifdef SYSVAD_A2DP_SIDEBAND + +#pragma warning (disable : 4127) + +#include <sysvad.h> +#include "simple.h" +#include "mintopo.h" +#include "a2dphptopo.h" +#include "a2dphpspeakertopo.h" +#include "a2dphpspeakertoptable.h" + +//============================================================================= +#pragma code_seg("PAGE") +NTSTATUS +PropertyHandler_A2dpHpSpeakerTopoFilter +( + _In_ PPCPROPERTY_REQUEST PropertyRequest +) +/*++ + +Routine Description: + + Redirects property request to miniport object + +Arguments: + + PropertyRequest - + +Return Value: + + NT status code. + +--*/ +{ + PAGED_CODE(); + + ASSERT(PropertyRequest); + + DPF_ENTER(("[PropertyHandler_A2dpHpSpeakerTopoFilter]")); + + // PropertryRequest structure is filled by portcls. + // MajorTarget is a pointer to miniport object for miniports. + // + NTSTATUS ntStatus = STATUS_INVALID_DEVICE_REQUEST; + + if (IsEqualGUIDAligned(*PropertyRequest->PropertyItem->Set, KSPROPSETID_Jack)) + { + switch(PropertyRequest->PropertyItem->Id) + { + case KSPROPERTY_JACK_DESCRIPTION: + ntStatus = PropertyHandler_A2dpHpJackDescription( + PropertyRequest, + ARRAYSIZE(A2dpHpSpeakerJackDescriptions), + A2dpHpSpeakerJackDescriptions); + break; + + case KSPROPERTY_JACK_DESCRIPTION2: + ntStatus = PropertyHandler_A2dpHpJackDescription2( + PropertyRequest, + ARRAYSIZE(A2dpHpSpeakerJackDescriptions), + A2dpHpSpeakerJackDescriptions); + break; + + case KSPROPERTY_JACK_CONTAINERID: + ntStatus = PropertyHandler_A2dpHpJackContainerId( + PropertyRequest, + ARRAYSIZE(A2dpHpSpeakerJackDescriptions), + A2dpHpSpeakerJackDescriptions); + break; + } + } + else if (IsEqualGUIDAligned(*PropertyRequest->PropertyItem->Set, KSPROPSETID_BtAudio)) + { + switch (PropertyRequest->PropertyItem->Id) + { + case KSPROPERTY_ONESHOT_RECONNECT: + ntStatus = PropertyHandler_A2dpHpOneShotReconnect(PropertyRequest); + break; + + case KSPROPERTY_ONESHOT_DISCONNECT: + ntStatus = PropertyHandler_A2dpHpOneShotDisconnect(PropertyRequest); + break; + } + } + + return ntStatus; +} // PropertyHandler_A2dpHpSpeakerTopoFilter + +//============================================================================= +#pragma code_seg() +NTSTATUS +PropertyHandler_A2dpHpSpeakerTopoFilterEvent +( + _In_ PPCEVENT_REQUEST EventRequest +) +{ + ASSERT(EventRequest); + + DPF_ENTER(("[PropertyHandler_A2dpHpSpeakerTopoFilterEvent]")); + + return PropertyHandler_A2dpHpTopoNodeEvent(EventRequest); +} + +#pragma code_seg() +#endif // SYSVAD_A2DP_SIDEBAND + + |
