ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

frequencyfilter.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.