Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS BDA Proxy * FILE: dll/directx/bdaplgin/digitaldemo.cpp * PURPOSE: IBDA_DigitalDemodulator interface * * PROGRAMMERS: Johannes Anderwald (johannes.anderwald@reactos.org) */
#include "precomp.h"
#ifndef _MSC_VERconst GUID IID_IBDA_DigitalDemodulator = {0xef30f379, 0x985b, 0x4d10, {0xb6, 0x40, 0xa7, 0x9d, 0x5e, 0x04, 0xe1, 0xe0}};const GUID KSPROPSETID_BdaDigitalDemodulator = {0xef30f379, 0x985b, 0x4d10, {0xb6, 0x40, 0xa7, 0x9d, 0x5e, 0x4, 0xe1, 0xe0}};#endif
class CBDADigitalDemodulator : public IBDA_DigitalDemodulator{public: STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
STDMETHODIMP_(ULONG) AddRef() { InterlockedIncrement(&m_Ref); return m_Ref; } STDMETHODIMP_(ULONG) Release() { InterlockedDecrement(&m_Ref); if (!m_Ref) { delete this; return 0; } return m_Ref; } //IBDA_DigitalDemodulator methods HRESULT STDMETHODCALLTYPE put_ModulationType(ModulationType *pModulationType); HRESULT STDMETHODCALLTYPE get_ModulationType(ModulationType *pModulationType); HRESULT STDMETHODCALLTYPE put_InnerFECMethod(FECMethod *pFECMethod); HRESULT STDMETHODCALLTYPE get_InnerFECMethod(FECMethod *pFECMethod); HRESULT STDMETHODCALLTYPE put_InnerFECRate(BinaryConvolutionCodeRate *pFECRate); HRESULT STDMETHODCALLTYPE get_InnerFECRate(BinaryConvolutionCodeRate *pFECRate); HRESULT STDMETHODCALLTYPE put_OuterFECMethod(FECMethod *pFECMethod); HRESULT STDMETHODCALLTYPE get_OuterFECMethod(FECMethod *pFECMethod); HRESULT STDMETHODCALLTYPE put_OuterFECRate(BinaryConvolutionCodeRate *pFECRate); HRESULT STDMETHODCALLTYPE get_OuterFECRate(BinaryConvolutionCodeRate *pFECRate); HRESULT STDMETHODCALLTYPE put_SymbolRate(ULONG *pSymbolRate); HRESULT STDMETHODCALLTYPE get_SymbolRate(ULONG *pSymbolRate); HRESULT STDMETHODCALLTYPE put_SpectralInversion(SpectralInversion *pSpectralInversion); HRESULT STDMETHODCALLTYPE get_SpectralInversion(SpectralInversion *pSpectralInversion);
CBDADigitalDemodulator(IKsPropertySet * pProperty, ULONG NodeId) : m_Ref(0), m_pProperty(pProperty), m_NodeId(NodeId){}; ~CBDADigitalDemodulator(){};
protected: LONG m_Ref; IKsPropertySet * m_pProperty; ULONG m_NodeId;};
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::QueryInterface( IN REFIID refiid, OUT PVOID* Output){ *Output = NULL;
if (IsEqualGUID(refiid, IID_IUnknown)) { *Output = PVOID(this); reinterpret_cast<IUnknown*>(*Output)->AddRef(); return NOERROR; }
if (IsEqualGUID(refiid, IID_IBDA_DigitalDemodulator)) { *Output = (IBDA_DigitalDemodulator*)(this); reinterpret_cast<IBDA_DigitalDemodulator*>(*Output)->AddRef(); return NOERROR; }
#ifdef BDAPLGIN_TRACE WCHAR Buffer[MAX_PATH]; LPOLESTR lpstr; StringFromCLSID(refiid, &lpstr); swprintf(Buffer, L"CBDADigitalDemodulator::QueryInterface: NoInterface for %s", lpstr); OutputDebugStringW(Buffer); CoTaskMemFree(lpstr);DebugBreak();#endif
return E_NOINTERFACE;}
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::put_ModulationType(ModulationType *pModulationType){ KSP_NODE Node; HRESULT hr;
// setup request Node.NodeId = m_NodeId; Node.Reserved = 0;
// perform request hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_MODULATION_TYPE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pModulationType, sizeof(ModulationType));
#ifdef BDAPLGIN_TRACE WCHAR Buffer[100]; swprintf(Buffer, L"CBDADigitalDemodulator::put_ModulationType: pModulationType %lu hr %lx\n", *pModulationType, hr); OutputDebugStringW(Buffer);#endif
return hr;}
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::get_ModulationType(ModulationType *pModulationType){ return E_NOINTERFACE;}
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::put_InnerFECMethod(FECMethod *pFECMethod){ KSP_NODE Node; HRESULT hr;
// setup request Node.NodeId = m_NodeId; Node.Reserved = 0;
// perform request hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_INNER_FEC_TYPE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pFECMethod, sizeof(FECMethod));
#ifdef BDAPLGIN_TRACE WCHAR Buffer[100]; swprintf(Buffer, L"CBDADigitalDemodulator::put_InnerFECMethod: pFECMethod %lu hr %lx\n", *pFECMethod, hr); OutputDebugStringW(Buffer);#endif
return hr;}
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::get_InnerFECMethod(FECMethod *pFECMethod){ return E_NOINTERFACE;}
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::put_InnerFECRate(BinaryConvolutionCodeRate *pFECRate){ KSP_NODE Node; HRESULT hr;
// setup request Node.NodeId = m_NodeId; Node.Reserved = 0;
// perform request hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_INNER_FEC_RATE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pFECRate, sizeof(BinaryConvolutionCodeRate));
#ifdef BDAPLGIN_TRACE WCHAR Buffer[100]; swprintf(Buffer, L"CBDADigitalDemodulator::put_InnerFECRate: pFECRate %lu hr %lx\n", *pFECRate, hr); OutputDebugStringW(Buffer);#endif
return hr;}
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::get_InnerFECRate(BinaryConvolutionCodeRate *pFECRate){ return E_NOINTERFACE;}
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::put_OuterFECMethod(FECMethod *pFECMethod){ KSP_NODE Node; HRESULT hr;
// setup request Node.NodeId = m_NodeId; Node.Reserved = 0;
// perform request hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_OUTER_FEC_TYPE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pFECMethod, sizeof(FECMethod));
#ifdef BDAPLGIN_TRACE WCHAR Buffer[100]; swprintf(Buffer, L"CBDADigitalDemodulator::put_OuterFECMethod: pFECMethod %lu hr %lx\n", *pFECMethod, hr); OutputDebugStringW(Buffer);#endif
return hr;}
HRESULTSTDMETHODCALLTYPE CBDADigitalDemodulator::get_OuterFECMethod(FECMethod *pFECMethod){ return E_NOINTERFACE;}
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::put_OuterFECRate(BinaryConvolutionCodeRate *pFECRate){ KSP_NODE Node; HRESULT hr;
// setup request Node.NodeId = m_NodeId; Node.Reserved = 0;
// perform request hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_OUTER_FEC_RATE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pFECRate, sizeof(BinaryConvolutionCodeRate));
#ifdef BDAPLGIN_TRACE WCHAR Buffer[100]; swprintf(Buffer, L"CBDADigitalDemodulator::put_OuterFECRate: pFECRate %lu hr %lx\n", *pFECRate, hr); OutputDebugStringW(Buffer);#endif
return hr;}
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::get_OuterFECRate(BinaryConvolutionCodeRate *pFECRate){ return E_NOINTERFACE;}
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::put_SymbolRate(ULONG *pSymbolRate){ KSP_NODE Node; HRESULT hr;
// setup request Node.NodeId = m_NodeId; Node.Reserved = 0;
// perform request hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_SYMBOL_RATE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pSymbolRate, sizeof(ULONG));
#ifdef BDAPLGIN_TRACE WCHAR Buffer[100]; swprintf(Buffer, L"CBDADigitalDemodulator::put_SymbolRate: pSymbolRate %lu hr %lx\n", *pSymbolRate, hr); OutputDebugStringW(Buffer);#endif
return hr;}
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::get_SymbolRate(ULONG *pSymbolRate){ return E_NOINTERFACE;}
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::put_SpectralInversion(SpectralInversion *pSpectralInversion){ KSP_NODE Node; HRESULT hr;
// setup request Node.NodeId = m_NodeId; Node.Reserved = 0;
// perform request hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_SPECTRAL_INVERSION, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pSpectralInversion, sizeof(SpectralInversion));
#ifdef BDAPLGIN_TRACE WCHAR Buffer[100]; swprintf(Buffer, L"CBDADigitalDemodulator::put_SpectralInversion: pSpectralInversion %lu hr %lx\n", *pSpectralInversion, hr); OutputDebugStringW(Buffer);#endif
return hr;}
HRESULTSTDMETHODCALLTYPECBDADigitalDemodulator::get_SpectralInversion(SpectralInversion *pSpectralInversion){ return E_NOINTERFACE;}
HRESULTWINAPICBDADigitalDemodulator_fnConstructor( IKsPropertySet * pProperty, ULONG NodeId, REFIID riid, LPVOID * ppv){ // construct device control CBDADigitalDemodulator * handler = new CBDADigitalDemodulator(pProperty, NodeId);
#ifdef BDAPLGIN_TRACE OutputDebugStringW(L"CBDADigitalDemodulator_fnConstructor\n");#endif
if (!handler) return E_OUTOFMEMORY;
if (FAILED(handler->QueryInterface(riid, ppv))) { /* not supported */ delete handler; return E_NOINTERFACE; }
return NOERROR;}