2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS BDA Proxy
4 * FILE: dll/directx/bdaplgin/frequencyfilter.cpp
5 * PURPOSE: IBDA_FrequencyFilter interface
7 * PROGRAMMERS: Johannes Anderwald (johannes.anderwald@reactos.org)
13 const GUID IID_IBDA_SignalStatistics
= {0x1347d106, 0xcf3a, 0x428a, {0xa5, 0xcb, 0xac, 0x0d, 0x9a, 0x2a, 0x43, 0x38}};
14 const GUID KSPROPSETID_BdaSignalStats
= {0x1347d106, 0xcf3a, 0x428a, {0xa5, 0xcb, 0xac, 0xd, 0x9a, 0x2a, 0x43, 0x38}};
17 class CBDASignalStatistics
: public IBDA_SignalStatistics
20 STDMETHODIMP
QueryInterface( REFIID InterfaceId
, PVOID
* Interface
);
22 STDMETHODIMP_(ULONG
) AddRef()
24 InterlockedIncrement(&m_Ref
);
27 STDMETHODIMP_(ULONG
) Release()
29 InterlockedDecrement(&m_Ref
);
38 // IBDA_SignalStatistics methods
39 HRESULT STDMETHODCALLTYPE
put_SignalStrength(LONG lDbStrength
);
40 HRESULT STDMETHODCALLTYPE
get_SignalStrength(LONG
*plDbStrength
);
41 HRESULT STDMETHODCALLTYPE
put_SignalQuality(LONG lPercentQuality
);
42 HRESULT STDMETHODCALLTYPE
get_SignalQuality(LONG
*plPercentQuality
);
43 HRESULT STDMETHODCALLTYPE
put_SignalPresent(BOOLEAN fPresent
);
44 HRESULT STDMETHODCALLTYPE
get_SignalPresent(BOOLEAN
*pfPresent
);
45 HRESULT STDMETHODCALLTYPE
put_SignalLocked(BOOLEAN fLocked
);
46 HRESULT STDMETHODCALLTYPE
get_SignalLocked(BOOLEAN
*pfLocked
);
47 HRESULT STDMETHODCALLTYPE
put_SampleTime(LONG lmsSampleTime
);
48 HRESULT STDMETHODCALLTYPE
get_SampleTime(LONG
*plmsSampleTime
);
50 CBDASignalStatistics(IKsPropertySet
* pProperty
, ULONG NodeId
) : m_Ref(0), m_pProperty(pProperty
), m_NodeId(NodeId
){};
51 ~CBDASignalStatistics(){};
55 IKsPropertySet
* m_pProperty
;
61 CBDASignalStatistics::QueryInterface(
67 if (IsEqualGUID(refiid
, IID_IUnknown
))
69 *Output
= PVOID(this);
70 reinterpret_cast<IUnknown
*>(*Output
)->AddRef();
74 if (IsEqualGUID(refiid
, IID_IBDA_SignalStatistics
))
76 *Output
= (IBDA_SignalStatistics
*)(this);
77 reinterpret_cast<IBDA_SignalStatistics
*>(*Output
)->AddRef();
85 CBDASignalStatistics::put_SignalStrength(LONG lDbStrength
)
92 CBDASignalStatistics::get_SignalStrength(LONG
*plDbStrength
)
99 Node
.NodeId
= (ULONG
)-1;
104 hr
= m_pProperty
->Get(KSPROPSETID_BdaSignalStats
, KSPROPERTY_BDA_SIGNAL_STRENGTH
, &Node
.NodeId
, sizeof(KSP_NODE
)-sizeof(KSPROPERTY
), plDbStrength
, sizeof(LONG
), &BytesReturned
);
107 #ifdef BDAPLGIN_TRACE
109 swprintf(Buffer
, L
"CBDASignalStatistics::get_SignalStrength: m_NodeId %lu hr %lx, BytesReturned %lu plDbStrength %ld\n", m_NodeId
, hr
, BytesReturned
, *plDbStrength
);
110 OutputDebugStringW(Buffer
);
118 CBDASignalStatistics::put_SignalQuality(LONG lPercentQuality
)
120 return E_NOINTERFACE
;
125 CBDASignalStatistics::get_SignalQuality(LONG
*plPercentQuality
)
132 Node
.NodeId
= (ULONG
)-1;
136 hr
= m_pProperty
->Get(KSPROPSETID_BdaSignalStats
, KSPROPERTY_BDA_SIGNAL_QUALITY
, &Node
.NodeId
, sizeof(KSP_NODE
)-sizeof(KSPROPERTY
), plPercentQuality
, sizeof(LONG
), &BytesReturned
);
138 #ifdef BDAPLGIN_TRACE
140 swprintf(Buffer
, L
"CBDASignalStatistics::get_SignalQuality: m_NodeId %lu hr %lx, BytesReturned %lu plPercentQuality %lu\n", m_NodeId
, hr
, BytesReturned
, *plPercentQuality
);
141 OutputDebugStringW(Buffer
);
149 CBDASignalStatistics::put_SignalPresent(BOOLEAN fPresent
)
151 return E_NOINTERFACE
;
156 CBDASignalStatistics::get_SignalPresent(BOOLEAN
*pfPresent
)
164 Node
.NodeId
= (ULONG
)-1;
168 hr
= m_pProperty
->Get(KSPROPSETID_BdaSignalStats
, KSPROPERTY_BDA_SIGNAL_PRESENT
, &Node
.NodeId
, sizeof(KSP_NODE
)-sizeof(KSPROPERTY
), &Present
, sizeof(ULONG
), &BytesReturned
);
171 *pfPresent
= Present
;
173 #ifdef BDAPLGIN_TRACE
175 swprintf(Buffer
, L
"CBDASignalStatistics::get_SignalPresent: m_NodeId %lu hr %lx, BytesReturned %lu Present %lu\n", m_NodeId
, hr
, BytesReturned
, Present
);
176 OutputDebugStringW(Buffer
);
184 CBDASignalStatistics::put_SignalLocked(BOOLEAN fLocked
)
186 return E_NOINTERFACE
;
191 CBDASignalStatistics::get_SignalLocked(BOOLEAN
*pfLocked
)
199 Node
.NodeId
= (ULONG
)-1;
203 hr
= m_pProperty
->Get(KSPROPSETID_BdaSignalStats
, KSPROPERTY_BDA_SIGNAL_LOCKED
, &Node
.NodeId
, sizeof(KSP_NODE
)-sizeof(KSPROPERTY
), &Locked
, sizeof(ULONG
), &BytesReturned
);
207 #ifdef BDAPLGIN_TRACE
209 swprintf(Buffer
, L
"CBDASignalStatistics::get_SignalLocked: m_NodeId %lu hr %lx, BytesReturned %lu Locked %lu\n", m_NodeId
, hr
, BytesReturned
, Locked
);
210 OutputDebugStringW(Buffer
);
218 CBDASignalStatistics::put_SampleTime(LONG lmsSampleTime
)
224 Node
.NodeId
= (ULONG
)-1;
228 hr
= m_pProperty
->Set(KSPROPSETID_BdaSignalStats
, KSPROPERTY_BDA_SAMPLE_TIME
, &Node
.NodeId
, sizeof(KSP_NODE
)-sizeof(KSPROPERTY
), &lmsSampleTime
, sizeof(LONG
));
230 #ifdef BDAPLGIN_TRACE
232 swprintf(Buffer
, L
"CBDASignalStatistics::put_SampleTime: m_NodeId %lu hr %lx\n", m_NodeId
, hr
);
233 OutputDebugStringW(Buffer
);
241 CBDASignalStatistics::get_SampleTime(LONG
*plmsSampleTime
)
248 Node
.NodeId
= (ULONG
)-1;
252 hr
= m_pProperty
->Get(KSPROPSETID_BdaSignalStats
, KSPROPERTY_BDA_SAMPLE_TIME
, &Node
.NodeId
, sizeof(KSP_NODE
)-sizeof(KSPROPERTY
), plmsSampleTime
, sizeof(LONG
), &BytesReturned
);
254 #ifdef BDAPLGIN_TRACE
256 swprintf(Buffer
, L
"CBDASignalStatistics::get_SampleTime: m_NodeId %lu hr %lx, BytesReturned %lu \n", m_NodeId
, hr
, BytesReturned
);
257 OutputDebugStringW(Buffer
);
265 CBDASignalStatistics_fnConstructor(
266 IKsPropertySet
* pProperty
,
271 // construct device control
272 CBDASignalStatistics
* handler
= new CBDASignalStatistics(pProperty
, NodeId
);
274 #ifdef BDAPLGIN_TRACE
275 OutputDebugStringW(L
"CBDASignalStatistics_fnConstructor\n");
279 return E_OUTOFMEMORY
;
281 if (FAILED(handler
->QueryInterface(riid
, ppv
)))
285 return E_NOINTERFACE
;