[BDAPLGIN]
[reactos.git] / reactos / dll / directx / bdaplgin / signalstatistics.cpp
1 /*
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
6 *
7 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
8 */
9
10 #include "precomp.h"
11
12 const GUID IID_IBDA_SignalStatistics = {0x1347d106, 0xcf3a, 0x428a, {0xa5, 0xcb, 0xac, 0x0d, 0x9a, 0x2a, 0x43, 0x38}};
13
14 class CBDASignalStatistics : public IBDA_SignalStatistics
15 {
16 public:
17 STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
18
19 STDMETHODIMP_(ULONG) AddRef()
20 {
21 InterlockedIncrement(&m_Ref);
22 return m_Ref;
23 }
24 STDMETHODIMP_(ULONG) Release()
25 {
26 InterlockedDecrement(&m_Ref);
27
28 if (!m_Ref)
29 {
30 delete this;
31 return 0;
32 }
33 return m_Ref;
34 }
35
36 // IBDA_SignalStatistics methods
37 HRESULT STDMETHODCALLTYPE put_SignalStrength(LONG lDbStrength);
38 HRESULT STDMETHODCALLTYPE get_SignalStrength(LONG *plDbStrength);
39 HRESULT STDMETHODCALLTYPE put_SignalQuality(LONG lPercentQuality);
40 HRESULT STDMETHODCALLTYPE get_SignalQuality(LONG *plPercentQuality);
41 HRESULT STDMETHODCALLTYPE put_SignalPresent(BOOLEAN fPresent);
42 HRESULT STDMETHODCALLTYPE get_SignalPresent(BOOLEAN *pfPresent);
43 HRESULT STDMETHODCALLTYPE put_SignalLocked(BOOLEAN fLocked);
44 HRESULT STDMETHODCALLTYPE get_SignalLocked(BOOLEAN *pfLocked);
45 HRESULT STDMETHODCALLTYPE put_SampleTime(LONG lmsSampleTime);
46 HRESULT STDMETHODCALLTYPE get_SampleTime(LONG *plmsSampleTime);
47
48 CBDASignalStatistics(HANDLE hFile) : m_Ref(0), m_hFile(hFile){};
49 ~CBDASignalStatistics(){};
50
51 protected:
52 LONG m_Ref;
53 HANDLE m_hFile;
54 };
55
56 HRESULT
57 STDMETHODCALLTYPE
58 CBDASignalStatistics::QueryInterface(
59 IN REFIID refiid,
60 OUT PVOID* Output)
61 {
62 WCHAR Buffer[MAX_PATH];
63 LPOLESTR lpstr;
64
65 *Output = NULL;
66
67 if (IsEqualGUID(refiid, IID_IUnknown))
68 {
69 *Output = PVOID(this);
70 reinterpret_cast<IUnknown*>(*Output)->AddRef();
71 return NOERROR;
72 }
73
74 if (IsEqualGUID(refiid, IID_IBDA_SignalStatistics))
75 {
76 *Output = (IBDA_SignalStatistics*)(this);
77 reinterpret_cast<IBDA_SignalStatistics*>(*Output)->AddRef();
78 return NOERROR;
79 }
80
81 StringFromCLSID(refiid, &lpstr);
82 swprintf(Buffer, L"CBDASignalStatistics::QueryInterface: NoInterface for %s", lpstr);
83 OutputDebugStringW(Buffer);
84 CoTaskMemFree(lpstr);
85
86 return E_NOINTERFACE;
87 }
88
89 HRESULT
90 STDMETHODCALLTYPE
91 CBDASignalStatistics::put_SignalStrength(LONG lDbStrength)
92 {
93 OutputDebugStringW(L"CBDASignalStatistics::put_SignalStrength NotImplemented\n");
94 return E_NOTIMPL;
95 }
96
97 HRESULT
98 STDMETHODCALLTYPE
99 CBDASignalStatistics::get_SignalStrength(LONG *plDbStrength)
100 {
101 OutputDebugStringW(L"CBDASignalStatistics::get_SignalStrength NotImplemented\n");
102 return E_NOTIMPL;
103 }
104
105 HRESULT
106 STDMETHODCALLTYPE
107 CBDASignalStatistics::put_SignalQuality(LONG lPercentQuality)
108 {
109 OutputDebugStringW(L"CBDASignalStatistics::put_SignalQuality NotImplemented\n");
110 return E_NOTIMPL;
111 }
112
113 HRESULT
114 STDMETHODCALLTYPE
115 CBDASignalStatistics::get_SignalQuality(LONG *plPercentQuality)
116 {
117 OutputDebugStringW(L"CBDASignalStatistics::get_SignalQuality NotImplemented\n");
118 return E_NOTIMPL;
119 }
120
121 HRESULT
122 STDMETHODCALLTYPE
123 CBDASignalStatistics::put_SignalPresent(BOOLEAN fPresent)
124 {
125 OutputDebugStringW(L"CBDASignalStatistics::put_SignalPresent NotImplemented\n");
126 return E_NOTIMPL;
127 }
128
129 HRESULT
130 STDMETHODCALLTYPE
131 CBDASignalStatistics::get_SignalPresent(BOOLEAN *pfPresent)
132 {
133 OutputDebugStringW(L"CBDASignalStatistics::get_SignalPresent NotImplemented\n");
134 return E_NOTIMPL;
135 }
136
137 HRESULT
138 STDMETHODCALLTYPE
139 CBDASignalStatistics::put_SignalLocked(BOOLEAN fLocked)
140 {
141 OutputDebugStringW(L"CBDASignalStatistics::put_SignalLocked NotImplemented\n");
142 return E_NOTIMPL;
143 }
144
145 HRESULT
146 STDMETHODCALLTYPE
147 CBDASignalStatistics::get_SignalLocked(BOOLEAN *pfLocked)
148 {
149 OutputDebugStringW(L"CBDASignalStatistics::get_SignalLocked NotImplemented\n");
150 return E_NOTIMPL;
151 }
152
153 HRESULT
154 STDMETHODCALLTYPE
155 CBDASignalStatistics::put_SampleTime(LONG lmsSampleTime)
156 {
157 OutputDebugStringW(L"CBDASignalStatistics::put_SampleTime NotImplemented\n");
158 return E_NOTIMPL;
159 }
160
161 HRESULT
162 STDMETHODCALLTYPE
163 CBDASignalStatistics::get_SampleTime(LONG *plmsSampleTime)
164 {
165 OutputDebugStringW(L"CBDASignalStatistics::get_SampleTime NotImplemented\n");
166 return E_NOTIMPL;
167 }
168
169 HRESULT
170 WINAPI
171 CBDASignalStatistics_fnConstructor(
172 HANDLE hFile,
173 REFIID riid,
174 LPVOID * ppv)
175 {
176 // construct device control
177 CBDASignalStatistics * handler = new CBDASignalStatistics(hFile);
178
179 OutputDebugStringW(L"CBDASignalStatistics_fnConstructor\n");
180
181 if (!handler)
182 return E_OUTOFMEMORY;
183
184 if (FAILED(handler->QueryInterface(riid, ppv)))
185 {
186 /* not supported */
187 delete handler;
188 return E_NOINTERFACE;
189 }
190
191 return NOERROR;
192 }