Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenfrequencyfilter.cpp
Go to the documentation of this file.
00001 /* 00002 * COPYRIGHT: See COPYING in the top level directory 00003 * PROJECT: ReactOS BDA Proxy 00004 * FILE: dll/directx/bdaplgin/frequencyfilter.cpp 00005 * PURPOSE: IBDA_FrequencyFilter interface 00006 * 00007 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org) 00008 */ 00009 00010 #include "precomp.h" 00011 00012 #ifndef _MSC_VER 00013 const GUID IID_IBDA_FrequencyFilter = {0x71985f47, 0x1ca1, 0x11d3, {0x9c, 0xc8, 0x00, 0xc0, 0x4f, 0x79, 0x71, 0xe0}}; 00014 const GUID KSPROPSETID_BdaFrequencyFilter = {0x71985f47, 0x1ca1, 0x11d3, {0x9c, 0xc8, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0}}; 00015 #endif 00016 00017 class CBDAFrequencyFilter : public IBDA_FrequencyFilter 00018 { 00019 public: 00020 STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface); 00021 00022 STDMETHODIMP_(ULONG) AddRef() 00023 { 00024 InterlockedIncrement(&m_Ref); 00025 return m_Ref; 00026 } 00027 STDMETHODIMP_(ULONG) Release() 00028 { 00029 InterlockedDecrement(&m_Ref); 00030 if (!m_Ref) 00031 { 00032 delete this; 00033 return 0; 00034 } 00035 return m_Ref; 00036 } 00037 00038 HRESULT STDMETHODCALLTYPE put_Autotune(ULONG ulTransponder); 00039 HRESULT STDMETHODCALLTYPE get_Autotune(ULONG *pulTransponder); 00040 HRESULT STDMETHODCALLTYPE put_Frequency(ULONG ulFrequency); 00041 HRESULT STDMETHODCALLTYPE get_Frequency(ULONG *pulFrequency); 00042 HRESULT STDMETHODCALLTYPE put_Polarity(Polarisation Polarity); 00043 HRESULT STDMETHODCALLTYPE get_Polarity(Polarisation *pPolarity); 00044 HRESULT STDMETHODCALLTYPE put_Range(ULONG ulRange); 00045 HRESULT STDMETHODCALLTYPE get_Range(ULONG *pulRange); 00046 HRESULT STDMETHODCALLTYPE put_Bandwidth(ULONG ulBandwidth); 00047 HRESULT STDMETHODCALLTYPE get_Bandwidth(ULONG *pulBandwidth); 00048 HRESULT STDMETHODCALLTYPE put_FrequencyMultiplier(ULONG ulMultiplier); 00049 HRESULT STDMETHODCALLTYPE get_FrequencyMultiplier(ULONG *pulMultiplier); 00050 00051 CBDAFrequencyFilter(IKsPropertySet * pProperty, ULONG NodeId) : m_Ref(0), m_pProperty(pProperty), m_NodeId(NodeId){}; 00052 virtual ~CBDAFrequencyFilter(){}; 00053 00054 protected: 00055 LONG m_Ref; 00056 IKsPropertySet * m_pProperty; 00057 ULONG m_NodeId; 00058 }; 00059 00060 HRESULT 00061 STDMETHODCALLTYPE 00062 CBDAFrequencyFilter::QueryInterface( 00063 IN REFIID refiid, 00064 OUT PVOID* Output) 00065 { 00066 *Output = NULL; 00067 00068 if (IsEqualGUID(refiid, IID_IUnknown)) 00069 { 00070 *Output = PVOID(this); 00071 reinterpret_cast<IUnknown*>(*Output)->AddRef(); 00072 return NOERROR; 00073 } 00074 00075 if (IsEqualGUID(refiid, IID_IBDA_FrequencyFilter)) 00076 { 00077 *Output = (IBDA_FrequencyFilter*)(this); 00078 reinterpret_cast<IBDA_FrequencyFilter*>(*Output)->AddRef(); 00079 return NOERROR; 00080 } 00081 00082 #ifdef BDAPLGIN_TRACE 00083 WCHAR Buffer[MAX_PATH]; 00084 LPOLESTR lpstr; 00085 StringFromCLSID(refiid, &lpstr); 00086 swprintf(Buffer, L"CControlNode::QueryInterface: NoInterface for %s", lpstr); 00087 OutputDebugStringW(Buffer); 00088 CoTaskMemFree(lpstr); 00089 DebugBreak(); 00090 #endif 00091 00092 return E_NOINTERFACE; 00093 } 00094 00095 HRESULT 00096 STDMETHODCALLTYPE 00097 CBDAFrequencyFilter::put_Autotune(ULONG ulTransponder) 00098 { 00099 return E_NOINTERFACE; 00100 } 00101 00102 HRESULT 00103 STDMETHODCALLTYPE 00104 CBDAFrequencyFilter::get_Autotune(ULONG *pulTransponder) 00105 { 00106 return E_NOINTERFACE; 00107 } 00108 00109 HRESULT 00110 STDMETHODCALLTYPE 00111 CBDAFrequencyFilter::put_Frequency(ULONG ulFrequency) 00112 { 00113 KSP_NODE Node; 00114 HRESULT hr; 00115 00116 // setup request 00117 Node.NodeId = m_NodeId; 00118 Node.Reserved = 0; 00119 00120 // perform request 00121 hr = m_pProperty->Set(KSPROPSETID_BdaFrequencyFilter, KSPROPERTY_BDA_RF_TUNER_FREQUENCY, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &ulFrequency, sizeof(ULONG)); 00122 00123 #ifdef BDAPLGIN_TRACE 00124 WCHAR Buffer[100]; 00125 swprintf(Buffer, L"CBDAFrequencyFilter::put_Frequency: m_NodeId %lu ulFrequency %lu hr %lx\n", m_NodeId, ulFrequency, hr); 00126 OutputDebugStringW(Buffer); 00127 #endif 00128 00129 return hr; 00130 } 00131 00132 HRESULT 00133 STDMETHODCALLTYPE 00134 CBDAFrequencyFilter::get_Frequency(ULONG *pulFrequency) 00135 { 00136 return E_NOINTERFACE; 00137 } 00138 00139 HRESULT 00140 STDMETHODCALLTYPE 00141 CBDAFrequencyFilter::put_Polarity(Polarisation Polarity) 00142 { 00143 KSP_NODE Node; 00144 HRESULT hr; 00145 00146 // setup request 00147 Node.NodeId = m_NodeId; 00148 Node.Reserved = 0; 00149 00150 // perform request 00151 hr = m_pProperty->Set(KSPROPSETID_BdaFrequencyFilter, KSPROPERTY_BDA_RF_TUNER_POLARITY, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &Polarity, sizeof(Polarisation)); 00152 00153 #ifdef BDAPLGIN_TRACE 00154 WCHAR Buffer[100]; 00155 swprintf(Buffer, L"CBDAFrequencyFilter::put_Polarity: m_NodeId %lu Polarity %lu hr %lx\n", m_NodeId, Polarity, hr); 00156 OutputDebugStringW(Buffer); 00157 #endif 00158 00159 return hr; 00160 } 00161 00162 HRESULT 00163 STDMETHODCALLTYPE 00164 CBDAFrequencyFilter::get_Polarity(Polarisation *pPolarity) 00165 { 00166 return E_NOINTERFACE; 00167 } 00168 00169 HRESULT 00170 STDMETHODCALLTYPE 00171 CBDAFrequencyFilter::put_Range(ULONG ulRange) 00172 { 00173 KSP_NODE Node; 00174 HRESULT hr; 00175 00176 // setup request 00177 Node.NodeId = m_NodeId; 00178 Node.Reserved = 0; 00179 00180 // perform request 00181 hr = m_pProperty->Set(KSPROPSETID_BdaFrequencyFilter, KSPROPERTY_BDA_RF_TUNER_RANGE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &ulRange, sizeof(ULONG)); 00182 00183 #ifdef BDAPLGIN_TRACE 00184 WCHAR Buffer[100]; 00185 swprintf(Buffer, L"CBDAFrequencyFilter::put_Range: m_NodeId %lu ulRange %lu hr %lx\n", m_NodeId, ulRange, hr); 00186 OutputDebugStringW(Buffer); 00187 #endif 00188 00189 return hr; 00190 } 00191 00192 HRESULT 00193 STDMETHODCALLTYPE 00194 CBDAFrequencyFilter::get_Range(ULONG *pulRange) 00195 { 00196 return E_NOINTERFACE; 00197 } 00198 00199 HRESULT 00200 STDMETHODCALLTYPE 00201 CBDAFrequencyFilter::put_Bandwidth(ULONG ulBandwidth) 00202 { 00203 KSP_NODE Node; 00204 HRESULT hr; 00205 00206 // setup request 00207 Node.NodeId = m_NodeId; 00208 Node.Reserved = 0; 00209 00210 // perform request 00211 hr = m_pProperty->Set(KSPROPSETID_BdaFrequencyFilter, KSPROPERTY_BDA_RF_TUNER_BANDWIDTH, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &ulBandwidth, sizeof(ULONG)); 00212 00213 #ifdef BDAPLGIN_TRACE 00214 WCHAR Buffer[100]; 00215 swprintf(Buffer, L"CBDAFrequencyFilter::put_Bandwidth: m_NodeId %lu ulBandwidth %lu hr %lx\n", m_NodeId, ulBandwidth, hr); 00216 OutputDebugStringW(Buffer); 00217 #endif 00218 00219 return hr; 00220 } 00221 00222 HRESULT 00223 STDMETHODCALLTYPE 00224 CBDAFrequencyFilter::get_Bandwidth(ULONG *pulBandwidth) 00225 { 00226 return E_NOINTERFACE; 00227 } 00228 HRESULT 00229 STDMETHODCALLTYPE 00230 CBDAFrequencyFilter::put_FrequencyMultiplier(ULONG ulMultiplier) 00231 { 00232 KSP_NODE Node; 00233 HRESULT hr; 00234 00235 // setup request 00236 Node.NodeId = m_NodeId; 00237 Node.Reserved = 0; 00238 00239 // perform request 00240 hr = m_pProperty->Set(KSPROPSETID_BdaFrequencyFilter, KSPROPERTY_BDA_RF_TUNER_FREQUENCY_MULTIPLIER, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &ulMultiplier, sizeof(ULONG)); 00241 00242 #ifdef BDAPLGIN_TRACE 00243 WCHAR Buffer[100]; 00244 swprintf(Buffer, L"CBDAFrequencyFilter::put_FrequencyMultiplier: m_NodeId %lu ulMultiplier %lu hr %lx\n", m_NodeId, ulMultiplier, hr); 00245 OutputDebugStringW(Buffer); 00246 #endif 00247 00248 return hr; 00249 } 00250 00251 HRESULT 00252 STDMETHODCALLTYPE 00253 CBDAFrequencyFilter::get_FrequencyMultiplier(ULONG *pulMultiplier) 00254 { 00255 return E_NOINTERFACE; 00256 } 00257 00258 HRESULT 00259 WINAPI 00260 CBDAFrequencyFilter_fnConstructor( 00261 IKsPropertySet* pProperty, 00262 ULONG NodeId, 00263 REFIID riid, 00264 LPVOID * ppv) 00265 { 00266 // construct device control 00267 CBDAFrequencyFilter * handler = new CBDAFrequencyFilter(pProperty, NodeId); 00268 00269 #ifdef BDAPLGIN_TRACE 00270 OutputDebugStringW(L"CBDAFrequencyFilter_fnConstructor\n"); 00271 #endif 00272 00273 if (!handler) 00274 return E_OUTOFMEMORY; 00275 00276 if (FAILED(handler->QueryInterface(riid, ppv))) 00277 { 00278 /* not supported */ 00279 delete handler; 00280 return E_NOINTERFACE; 00281 } 00282 00283 return NOERROR; 00284 } Generated on Sun May 27 2012 04:21:10 for ReactOS by
1.7.6.1
|