Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

210 lines
5.0 KiB

  1. /////////////////////////////////////////////////////////////////////////////////////
  2. // DVBtsimpl.h :
  3. // Copyright (c) Microsoft Corporation 1999.
  4. #ifndef DVBSTSIMPL_H
  5. #define DVBSTSIMPL_H
  6. #include "dvbtsimpl.h"
  7. namespace BDATuningModel {
  8. template<class T,
  9. class TUNEREQUESTTYPE = CDVBTuneRequest,
  10. class MostDerived = IDVBSTuningSpace,
  11. LPCGUID iid = &__uuidof(MostDerived),
  12. LPCGUID LibID = &LIBID_TunerLib,
  13. WORD wMajor = 1,
  14. WORD wMinor = 0,
  15. class tihclass = CComTypeInfoHolder
  16. > class ATL_NO_VTABLE IDVBSTuningSpaceImpl :
  17. public IDVBTuningSpaceImpl<T, TUNEREQUESTTYPE, MostDerived, iid,
  18. LibID, wMajor, wMinor, tihclass>
  19. {
  20. public:
  21. long m_HiOsc;
  22. long m_LoOsc;
  23. long m_LNBSwitch;
  24. CComBSTR m_InputRange;
  25. SpectralInversion m_SpectralInversion;
  26. IDVBSTuningSpaceImpl() : m_HiOsc(-1), m_LoOsc(-1), m_LNBSwitch(-1), m_InputRange(0), m_SpectralInversion(BDA_SPECTRAL_INVERSION_NOT_SET),
  27. IDVBTuningSpaceImpl<T, TUNEREQUESTTYPE, MostDerived, iid,
  28. LibID, wMajor, wMinor, tihclass>(DVB_Satellite) {}
  29. virtual ~IDVBSTuningSpaceImpl() {}
  30. typedef IDVBTuningSpaceImpl<T, TUNEREQUESTTYPE, MostDerived, iid, LibID, wMajor, wMinor, tihclass> basetype;
  31. BEGIN_PROP_MAP(IDVBSTuningSpaceImpl)
  32. CHAIN_PROP_MAP(basetype)
  33. PROP_DATA_ENTRY("High Oscillator Frequency", m_HiOsc, VT_I4)
  34. PROP_DATA_ENTRY("Low Oscillator Frequency", m_LoOsc, VT_I4)
  35. PROP_DATA_ENTRY("LNB Switch Frequency", m_LNBSwitch, VT_I4)
  36. PROP_DATA_ENTRY("Input Range", m_InputRange.m_str, VT_BSTR_BLOB)
  37. PROP_DATA_ENTRY("Spectral Inversion", m_SpectralInversion, VT_I4)
  38. END_PROPERTY_MAP()
  39. // IDVBSTS
  40. STDMETHOD(put_SystemType)(DVBSystemType NewSysType)
  41. {
  42. if (NewSysType != DVB_Satellite) {
  43. return DISP_E_TYPEMISMATCH;
  44. }
  45. ATL_LOCKT();
  46. m_SystemType = NewSysType;
  47. MARK_DIRTY(T);
  48. return NOERROR;
  49. }
  50. STDMETHOD(get_HighOscillator)(long *pHiOsc)
  51. {
  52. try {
  53. if (!pHiOsc) {
  54. return E_POINTER;
  55. }
  56. ATL_LOCKT();
  57. *pHiOsc = m_HiOsc;
  58. } catch (...) {
  59. return E_POINTER;
  60. }
  61. return NOERROR;
  62. }
  63. STDMETHOD(put_HighOscillator)(long NewHiOsc)
  64. {
  65. ATL_LOCKT();
  66. m_HiOsc = NewHiOsc;
  67. MARK_DIRTY(T);
  68. return NOERROR;
  69. }
  70. STDMETHOD(get_LowOscillator)(long *pLoOsc)
  71. {
  72. try {
  73. if (!pLoOsc) {
  74. return E_POINTER;
  75. }
  76. ATL_LOCKT();
  77. *pLoOsc = m_LoOsc;
  78. } catch (...) {
  79. return E_POINTER;
  80. }
  81. return NOERROR;
  82. }
  83. STDMETHOD(put_LowOscillator)(long NewLoOsc)
  84. {
  85. ATL_LOCKT();
  86. m_LoOsc = NewLoOsc;
  87. MARK_DIRTY(T);
  88. return NOERROR;
  89. }
  90. STDMETHOD(get_LNBSwitch)(long *pLNBSwitch)
  91. {
  92. try {
  93. if (!pLNBSwitch) {
  94. return E_POINTER;
  95. }
  96. ATL_LOCKT();
  97. *pLNBSwitch = m_LNBSwitch;
  98. } catch (...) {
  99. return E_POINTER;
  100. }
  101. return NOERROR;
  102. }
  103. STDMETHOD(put_LNBSwitch)(long NewLNBSwitch)
  104. {
  105. ATL_LOCKT();
  106. m_LNBSwitch = NewLNBSwitch;
  107. MARK_DIRTY(T);
  108. return NOERROR;
  109. }
  110. STDMETHOD(get_InputRange)(BSTR *pInputRange)
  111. {
  112. try {
  113. if (!pInputRange) {
  114. return E_POINTER;
  115. }
  116. ATL_LOCKT();
  117. return m_InputRange.CopyTo(pInputRange);
  118. } catch (...) {
  119. return E_POINTER;
  120. }
  121. return NOERROR;
  122. }
  123. STDMETHOD(put_InputRange)(BSTR NewInputRange)
  124. {
  125. CHECKBSTRLIMIT(NewInputRange);
  126. ATL_LOCKT();
  127. m_InputRange = &NewInputRange;
  128. MARK_DIRTY(T);
  129. return NOERROR;
  130. }
  131. STDMETHOD(get_SpectralInversion)(SpectralInversion *pSpectralInversion)
  132. {
  133. try {
  134. if (!pSpectralInversion) {
  135. return E_POINTER;
  136. }
  137. ATL_LOCKT();
  138. *pSpectralInversion = m_SpectralInversion;
  139. } catch (...) {
  140. return E_POINTER;
  141. }
  142. return NOERROR;
  143. }
  144. STDMETHOD(put_SpectralInversion)(SpectralInversion NewSpectralInversion)
  145. {
  146. ATL_LOCKT();
  147. m_SpectralInversion = NewSpectralInversion;
  148. MARK_DIRTY(T);
  149. return NOERROR;
  150. }
  151. STDMETHOD(Clone) (ITuningSpace **ppTS) {
  152. try {
  153. if (!ppTS) {
  154. return E_POINTER;
  155. }
  156. ATL_LOCKT();
  157. HRESULT hr = basetype::Clone(ppTS);
  158. if (FAILED(hr)) {
  159. return hr;
  160. }
  161. T* pt = static_cast<T*>(*ppTS);
  162. pt->m_HiOsc = m_HiOsc;
  163. pt->m_LoOsc = m_LoOsc;
  164. pt->m_LNBSwitch = m_LNBSwitch;
  165. pt->m_InputRange = m_InputRange;
  166. pt->m_SpectralInversion = m_SpectralInversion;
  167. return NOERROR;
  168. } catch (HRESULT h) {
  169. return h;
  170. } catch (...) {
  171. return E_POINTER;
  172. }
  173. }
  174. };
  175. }; // namespace
  176. #endif // DVBSTSIMPL_H
  177. // end of file -- DVBtsimpl.h