8ccb5f72513cc3588e3d3575a9fba761398a4855
[reactos.git] / reactos / dll / directx / bdaplgin / frequencyfilter.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_FrequencyFilter = {0x71985f47, 0x1ca1, 0x11d3, {0x9c, 0xc8, 0x00, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
13
14 class CBDAFrequencyFilter : public IBDA_FrequencyFilter
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 HRESULT STDMETHODCALLTYPE put_Autotune(ULONG ulTransponder);
37 HRESULT STDMETHODCALLTYPE get_Autotune(ULONG *pulTransponder);
38 HRESULT STDMETHODCALLTYPE put_Frequency(ULONG ulFrequency);
39 HRESULT STDMETHODCALLTYPE get_Frequency(ULONG *pulFrequency);
40 HRESULT STDMETHODCALLTYPE put_Polarity(Polarisation Polarity);
41 HRESULT STDMETHODCALLTYPE get_Polarity(Polarisation *pPolarity);
42 HRESULT STDMETHODCALLTYPE put_Range(ULONG ulRange);
43 HRESULT STDMETHODCALLTYPE get_Range(ULONG *pulRange);
44 HRESULT STDMETHODCALLTYPE put_Bandwidth(ULONG ulBandwidth);
45 HRESULT STDMETHODCALLTYPE get_Bandwidth(ULONG *pulBandwidth);
46 HRESULT STDMETHODCALLTYPE put_FrequencyMultiplier(ULONG ulMultiplier);
47 HRESULT STDMETHODCALLTYPE get_FrequencyMultiplier(ULONG *pulMultiplier);
48
49 CBDAFrequencyFilter(HANDLE hFile) : m_Ref(0), m_hFile(hFile){};
50 virtual ~CBDAFrequencyFilter(){};
51
52 protected:
53 LONG m_Ref;
54 HANDLE m_hFile;
55 };
56
57 HRESULT
58 STDMETHODCALLTYPE
59 CBDAFrequencyFilter::QueryInterface(
60 IN REFIID refiid,
61 OUT PVOID* Output)
62 {
63 WCHAR Buffer[MAX_PATH];
64 LPOLESTR lpstr;
65
66 *Output = NULL;
67
68 if (IsEqualGUID(refiid, IID_IUnknown))
69 {
70 *Output = PVOID(this);
71 reinterpret_cast<IUnknown*>(*Output)->AddRef();
72 return NOERROR;
73 }
74
75 if (IsEqualGUID(refiid, IID_IBDA_FrequencyFilter))
76 {
77 *Output = (IBDA_FrequencyFilter*)(this);
78 reinterpret_cast<IBDA_FrequencyFilter*>(*Output)->AddRef();
79 return NOERROR;
80 }
81
82 StringFromCLSID(refiid, &lpstr);
83 swprintf(Buffer, L"CControlNode::QueryInterface: NoInterface for %s", lpstr);
84 OutputDebugStringW(Buffer);
85 CoTaskMemFree(lpstr);
86
87 return E_NOINTERFACE;
88 }
89
90 HRESULT
91 STDMETHODCALLTYPE
92 CBDAFrequencyFilter::put_Autotune(ULONG ulTransponder)
93 {
94 OutputDebugStringW(L"CBDAFrequencyFilter::put_Autotune: NotImplemented\n");
95 return E_NOINTERFACE;
96 }
97
98 HRESULT
99 STDMETHODCALLTYPE
100 CBDAFrequencyFilter::get_Autotune(ULONG *pulTransponder)
101 {
102 OutputDebugStringW(L"CBDAFrequencyFilter::get_Autotune\n");
103 return E_NOINTERFACE;
104 }
105
106 HRESULT
107 STDMETHODCALLTYPE
108 CBDAFrequencyFilter::put_Frequency(ULONG ulFrequency)
109 {
110 OutputDebugStringW(L"CBDAFrequencyFilter::put_Frequency: NotImplemented\n");
111 return E_NOTIMPL;
112 }
113
114 HRESULT
115 STDMETHODCALLTYPE
116 CBDAFrequencyFilter::get_Frequency(ULONG *pulFrequency)
117 {
118 OutputDebugStringW(L"CBDAFrequencyFilter::get_Frequency\n");
119 return E_NOINTERFACE;
120 }
121
122 HRESULT
123 STDMETHODCALLTYPE
124 CBDAFrequencyFilter::put_Polarity(Polarisation Polarity)
125 {
126 OutputDebugStringW(L"CBDAFrequencyFilter::put_Polarity: NotImplemented\n");
127 return E_NOTIMPL;
128 }
129
130 HRESULT
131 STDMETHODCALLTYPE
132 CBDAFrequencyFilter::get_Polarity(Polarisation *pPolarity)
133 {
134 OutputDebugStringW(L"CBDAFrequencyFilter::get_Polarity\n");
135 return E_NOINTERFACE;
136 }
137
138 HRESULT
139 STDMETHODCALLTYPE
140 CBDAFrequencyFilter::put_Range(ULONG ulRange)
141 {
142 OutputDebugStringW(L"CBDAFrequencyFilter::put_Range: NotImplemented\n");
143 return E_NOTIMPL;
144 }
145
146 HRESULT
147 STDMETHODCALLTYPE
148 CBDAFrequencyFilter::get_Range(ULONG *pulRange)
149 {
150 OutputDebugStringW(L"CBDAFrequencyFilter::get_Range\n");
151 return E_NOINTERFACE;
152 }
153
154 HRESULT
155 STDMETHODCALLTYPE
156 CBDAFrequencyFilter::put_Bandwidth(ULONG ulBandwidth)
157 {
158 OutputDebugStringW(L"CBDAFrequencyFilter::put_Bandwidth: NotImplemented\n");
159 return E_NOTIMPL;
160 }
161
162 HRESULT
163 STDMETHODCALLTYPE
164 CBDAFrequencyFilter::get_Bandwidth(ULONG *pulBandwidth)
165 {
166 OutputDebugStringW(L"CBDAFrequencyFilter::get_Bandwidth\n");
167 return E_NOINTERFACE;
168 }
169 HRESULT
170 STDMETHODCALLTYPE
171 CBDAFrequencyFilter::put_FrequencyMultiplier(ULONG ulMultiplier)
172 {
173 OutputDebugStringW(L"CBDAFrequencyFilter::put_FrequencyMultiplier: NotImplemented\n");
174 return E_NOTIMPL;
175 }
176
177 HRESULT
178 STDMETHODCALLTYPE
179 CBDAFrequencyFilter::get_FrequencyMultiplier(ULONG *pulMultiplier)
180 {
181 OutputDebugStringW(L"CBDAFrequencyFilter::get_FrequencyMultiplier\n");
182 return E_NOINTERFACE;
183 }
184
185 HRESULT
186 WINAPI
187 CBDAFrequencyFilter_fnConstructor(
188 HANDLE hFile,
189 REFIID riid,
190 LPVOID * ppv)
191 {
192 // construct device control
193 CBDAFrequencyFilter * handler = new CBDAFrequencyFilter(hFile);
194
195 OutputDebugStringW(L"CBDAFrequencyFilter_fnConstructor\n");
196
197 if (!handler)
198 return E_OUTOFMEMORY;
199
200 if (FAILED(handler->QueryInterface(riid, ppv)))
201 {
202 /* not supported */
203 delete handler;
204 return E_NOINTERFACE;
205 }
206
207 return NOERROR;
208 }