2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS BDA Proxy
4 * FILE: dll/directx/bdaplgin/digitaldemo.cpp
5 * PURPOSE: IBDA_DigitalDemodulator interface
7 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
13 const GUID IID_IBDA_DigitalDemodulator
= {0xef30f379, 0x985b, 0x4d10, {0xb6, 0x40, 0xa7, 0x9d, 0x5e, 0x04, 0xe1, 0xe0}};
14 const GUID KSPROPSETID_BdaDigitalDemodulator
= {0xef30f379, 0x985b, 0x4d10, {0xb6, 0x40, 0xa7, 0x9d, 0x5e, 0x4, 0xe1, 0xe0}};
17 class CBDADigitalDemodulator
: public IBDA_DigitalDemodulator
20 STDMETHODIMP
QueryInterface( REFIID InterfaceId
, PVOID
* Interface
);
22 STDMETHODIMP_(ULONG
) AddRef()
24 InterlockedIncrement(&m_Ref
);
27 STDMETHODIMP_(ULONG
) Release()
29 InterlockedDecrement(&m_Ref
);
37 //IBDA_DigitalDemodulator methods
38 HRESULT STDMETHODCALLTYPE
put_ModulationType(ModulationType
*pModulationType
);
39 HRESULT STDMETHODCALLTYPE
get_ModulationType(ModulationType
*pModulationType
);
40 HRESULT STDMETHODCALLTYPE
put_InnerFECMethod(FECMethod
*pFECMethod
);
41 HRESULT STDMETHODCALLTYPE
get_InnerFECMethod(FECMethod
*pFECMethod
);
42 HRESULT STDMETHODCALLTYPE
put_InnerFECRate(BinaryConvolutionCodeRate
*pFECRate
);
43 HRESULT STDMETHODCALLTYPE
get_InnerFECRate(BinaryConvolutionCodeRate
*pFECRate
);
44 HRESULT STDMETHODCALLTYPE
put_OuterFECMethod(FECMethod
*pFECMethod
);
45 HRESULT STDMETHODCALLTYPE
get_OuterFECMethod(FECMethod
*pFECMethod
);
46 HRESULT STDMETHODCALLTYPE
put_OuterFECRate(BinaryConvolutionCodeRate
*pFECRate
);
47 HRESULT STDMETHODCALLTYPE
get_OuterFECRate(BinaryConvolutionCodeRate
*pFECRate
);
48 HRESULT STDMETHODCALLTYPE
put_SymbolRate(ULONG
*pSymbolRate
);
49 HRESULT STDMETHODCALLTYPE
get_SymbolRate(ULONG
*pSymbolRate
);
50 HRESULT STDMETHODCALLTYPE
put_SpectralInversion(SpectralInversion
*pSpectralInversion
);
51 HRESULT STDMETHODCALLTYPE
get_SpectralInversion(SpectralInversion
*pSpectralInversion
);
53 CBDADigitalDemodulator(IKsPropertySet
* pProperty
, ULONG NodeId
) : m_Ref(0), m_pProperty(pProperty
), m_NodeId(NodeId
){};
54 ~CBDADigitalDemodulator(){};
58 IKsPropertySet
* m_pProperty
;
64 CBDADigitalDemodulator::QueryInterface(
70 if (IsEqualGUID(refiid
, IID_IUnknown
))
72 *Output
= PVOID(this);
73 reinterpret_cast<IUnknown
*>(*Output
)->AddRef();
77 if (IsEqualGUID(refiid
, IID_IBDA_DigitalDemodulator
))
79 *Output
= (IBDA_DigitalDemodulator
*)(this);
80 reinterpret_cast<IBDA_DigitalDemodulator
*>(*Output
)->AddRef();
85 WCHAR Buffer
[MAX_PATH
];
87 StringFromCLSID(refiid
, &lpstr
);
88 swprintf(Buffer
, L
"CBDADigitalDemodulator::QueryInterface: NoInterface for %s", lpstr
);
89 OutputDebugStringW(Buffer
);
99 CBDADigitalDemodulator::put_ModulationType(ModulationType
*pModulationType
)
105 Node
.NodeId
= m_NodeId
;
109 hr
= m_pProperty
->Set(KSPROPSETID_BdaDigitalDemodulator
, KSPROPERTY_BDA_MODULATION_TYPE
, &Node
.NodeId
, sizeof(KSP_NODE
)-sizeof(KSPROPERTY
), pModulationType
, sizeof(ModulationType
));
112 #ifdef BDAPLGIN_TRACE
114 swprintf(Buffer
, L
"CBDADigitalDemodulator::put_ModulationType: pModulationType %lu hr %lx\n", *pModulationType
, hr
);
115 OutputDebugStringW(Buffer
);
123 CBDADigitalDemodulator::get_ModulationType(ModulationType
*pModulationType
)
125 return E_NOINTERFACE
;
130 CBDADigitalDemodulator::put_InnerFECMethod(FECMethod
*pFECMethod
)
136 Node
.NodeId
= m_NodeId
;
140 hr
= m_pProperty
->Set(KSPROPSETID_BdaDigitalDemodulator
, KSPROPERTY_BDA_INNER_FEC_TYPE
, &Node
.NodeId
, sizeof(KSP_NODE
)-sizeof(KSPROPERTY
), pFECMethod
, sizeof(FECMethod
));
143 #ifdef BDAPLGIN_TRACE
145 swprintf(Buffer
, L
"CBDADigitalDemodulator::put_InnerFECMethod: pFECMethod %lu hr %lx\n", *pFECMethod
, hr
);
146 OutputDebugStringW(Buffer
);
154 CBDADigitalDemodulator::get_InnerFECMethod(FECMethod
*pFECMethod
)
156 return E_NOINTERFACE
;
161 CBDADigitalDemodulator::put_InnerFECRate(BinaryConvolutionCodeRate
*pFECRate
)
167 Node
.NodeId
= m_NodeId
;
171 hr
= m_pProperty
->Set(KSPROPSETID_BdaDigitalDemodulator
, KSPROPERTY_BDA_INNER_FEC_RATE
, &Node
.NodeId
, sizeof(KSP_NODE
)-sizeof(KSPROPERTY
), pFECRate
, sizeof(BinaryConvolutionCodeRate
));
173 #ifdef BDAPLGIN_TRACE
175 swprintf(Buffer
, L
"CBDADigitalDemodulator::put_InnerFECRate: pFECRate %lu hr %lx\n", *pFECRate
, hr
);
176 OutputDebugStringW(Buffer
);
184 CBDADigitalDemodulator::get_InnerFECRate(BinaryConvolutionCodeRate
*pFECRate
)
186 return E_NOINTERFACE
;
191 CBDADigitalDemodulator::put_OuterFECMethod(FECMethod
*pFECMethod
)
197 Node
.NodeId
= m_NodeId
;
201 hr
= m_pProperty
->Set(KSPROPSETID_BdaDigitalDemodulator
, KSPROPERTY_BDA_OUTER_FEC_TYPE
, &Node
.NodeId
, sizeof(KSP_NODE
)-sizeof(KSPROPERTY
), pFECMethod
, sizeof(FECMethod
));
203 #ifdef BDAPLGIN_TRACE
205 swprintf(Buffer
, L
"CBDADigitalDemodulator::put_OuterFECMethod: pFECMethod %lu hr %lx\n", *pFECMethod
, hr
);
206 OutputDebugStringW(Buffer
);
214 STDMETHODCALLTYPE
CBDADigitalDemodulator::get_OuterFECMethod(FECMethod
*pFECMethod
)
216 return E_NOINTERFACE
;
221 CBDADigitalDemodulator::put_OuterFECRate(BinaryConvolutionCodeRate
*pFECRate
)
227 Node
.NodeId
= m_NodeId
;
231 hr
= m_pProperty
->Set(KSPROPSETID_BdaDigitalDemodulator
, KSPROPERTY_BDA_OUTER_FEC_RATE
, &Node
.NodeId
, sizeof(KSP_NODE
)-sizeof(KSPROPERTY
), pFECRate
, sizeof(BinaryConvolutionCodeRate
));
233 #ifdef BDAPLGIN_TRACE
235 swprintf(Buffer
, L
"CBDADigitalDemodulator::put_OuterFECRate: pFECRate %lu hr %lx\n", *pFECRate
, hr
);
236 OutputDebugStringW(Buffer
);
244 CBDADigitalDemodulator::get_OuterFECRate(BinaryConvolutionCodeRate
*pFECRate
)
246 return E_NOINTERFACE
;
251 CBDADigitalDemodulator::put_SymbolRate(ULONG
*pSymbolRate
)
257 Node
.NodeId
= m_NodeId
;
261 hr
= m_pProperty
->Set(KSPROPSETID_BdaDigitalDemodulator
, KSPROPERTY_BDA_SYMBOL_RATE
, &Node
.NodeId
, sizeof(KSP_NODE
)-sizeof(KSPROPERTY
), pSymbolRate
, sizeof(ULONG
));
263 #ifdef BDAPLGIN_TRACE
265 swprintf(Buffer
, L
"CBDADigitalDemodulator::put_SymbolRate: pSymbolRate %lu hr %lx\n", *pSymbolRate
, hr
);
266 OutputDebugStringW(Buffer
);
274 CBDADigitalDemodulator::get_SymbolRate(ULONG
*pSymbolRate
)
276 return E_NOINTERFACE
;
281 CBDADigitalDemodulator::put_SpectralInversion(SpectralInversion
*pSpectralInversion
)
287 Node
.NodeId
= m_NodeId
;
291 hr
= m_pProperty
->Set(KSPROPSETID_BdaDigitalDemodulator
, KSPROPERTY_BDA_SPECTRAL_INVERSION
, &Node
.NodeId
, sizeof(KSP_NODE
)-sizeof(KSPROPERTY
), pSpectralInversion
, sizeof(SpectralInversion
));
293 #ifdef BDAPLGIN_TRACE
295 swprintf(Buffer
, L
"CBDADigitalDemodulator::put_SpectralInversion: pSpectralInversion %lu hr %lx\n", *pSpectralInversion
, hr
);
296 OutputDebugStringW(Buffer
);
304 CBDADigitalDemodulator::get_SpectralInversion(SpectralInversion
*pSpectralInversion
)
306 return E_NOINTERFACE
;
312 CBDADigitalDemodulator_fnConstructor(
313 IKsPropertySet
* pProperty
,
318 // construct device control
319 CBDADigitalDemodulator
* handler
= new CBDADigitalDemodulator(pProperty
, NodeId
);
321 #ifdef BDAPLGIN_TRACE
322 OutputDebugStringW(L
"CBDADigitalDemodulator_fnConstructor\n");
326 return E_OUTOFMEMORY
;
328 if (FAILED(handler
->QueryInterface(riid
, ppv
)))
332 return E_NOINTERFACE
;