tuner_e4000.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. #ifndef __TUNER_E4000_H
  2. #define __TUNER_E4000_H
  3. /**
  4. @file
  5. @brief E4000 tuner module declaration
  6. One can manipulate E4000 tuner through E4000 module.
  7. E4000 module is derived from tuner module.
  8. @par Example:
  9. @code
  10. // The example is the same as the tuner example in tuner_base.h except the listed lines.
  11. #include "tuner_e4000.h"
  12. ...
  13. int main(void)
  14. {
  15. TUNER_MODULE *pTuner;
  16. E4000_EXTRA_MODULE *pTunerExtra;
  17. TUNER_MODULE TunerModuleMemory;
  18. BASE_INTERFACE_MODULE BaseInterfaceModuleMemory;
  19. // I2C_BRIDGE_MODULE I2cBridgeModuleMemory;
  20. unsigned long BandwidthMode;
  21. ...
  22. // Build E4000 tuner module.
  23. BuildE4000Module(
  24. &pTuner,
  25. &TunerModuleMemory,
  26. &BaseInterfaceModuleMemory,
  27. &I2cBridgeModuleMemory,
  28. 0xac, // I2C device address is 0xac in 8-bit format.
  29. CRYSTAL_FREQ_16384000HZ, // Crystal frequency is 16.384 MHz.
  30. E4000_AGC_INTERNAL // The E4000 AGC mode is internal AGC mode.
  31. );
  32. // Get E4000 tuner extra module.
  33. pTunerExtra = (T2266_EXTRA_MODULE *)(pTuner->pExtra);
  34. // ==== Initialize tuner and set its parameters =====
  35. ...
  36. // Set E4000 bandwidth.
  37. pTunerExtra->SetBandwidthMode(pTuner, E4000_BANDWIDTH_6MHZ);
  38. // ==== Get tuner information =====
  39. ...
  40. // Get E4000 bandwidth.
  41. pTunerExtra->GetBandwidthMode(pTuner, &BandwidthMode);
  42. // See the example for other tuner functions in tuner_base.h
  43. return 0;
  44. }
  45. @endcode
  46. */
  47. //#include "tuner_base.h"
  48. // The following context is implemented for E4000 source code.
  49. // Definition (implemeted for E4000)
  50. #define E4000_1_SUCCESS 1
  51. #define E4000_1_FAIL 0
  52. #define E4000_I2C_SUCCESS 1
  53. #define E4000_I2C_FAIL 0
  54. // Function (implemeted for E4000)
  55. int
  56. I2CReadByte(void *pTuner,
  57. unsigned char NoUse,
  58. unsigned char RegAddr,
  59. unsigned char *pReadingByte
  60. );
  61. int
  62. I2CWriteByte(
  63. void *pTuner,
  64. unsigned char NoUse,
  65. unsigned char RegAddr,
  66. unsigned char WritingByte
  67. );
  68. int
  69. I2CWriteArray(void *pTuner,
  70. unsigned char NoUse,
  71. unsigned char RegStartAddr,
  72. unsigned char ByteNum,
  73. unsigned char *pWritingBytes
  74. );
  75. // Functions (from E4000 source code)
  76. int tunerreset (void *pTuner);
  77. int Tunerclock(void *pTuner);
  78. int Qpeak(void *pTuner);
  79. int DCoffloop(void *pTuner);
  80. int GainControlinit(void *pTuner);
  81. int Gainmanual(void *pTuner);
  82. int E4000_gain_freq(void *pTuner, int frequency);
  83. int PLL(void *pTuner, int Ref_clk, int Freq);
  84. int LNAfilter(void *pTuner, int Freq);
  85. int IFfilter(void *pTuner, int bandwidth, int Ref_clk);
  86. int freqband(void *pTuner, int Freq);
  87. int DCoffLUT(void *pTuner);
  88. int GainControlauto(void *pTuner);
  89. int E4000_sensitivity(void *pTuner, int Freq, int bandwidth);
  90. int E4000_linearity(void *pTuner, int Freq, int bandwidth);
  91. int E4000_high_linearity(void *pTuner);
  92. int E4000_nominal(void *pTuner, int Freq, int bandwidth);
  93. // The following context is E4000 tuner API source code
  94. // Definitions
  95. // Bandwidth in Hz
  96. enum E4000_BANDWIDTH_HZ
  97. {
  98. E4000_BANDWIDTH_6000000HZ = 6000000,
  99. E4000_BANDWIDTH_7000000HZ = 7000000,
  100. E4000_BANDWIDTH_8000000HZ = 8000000,
  101. };
  102. // Manipulaing functions
  103. void
  104. e4000_GetTunerType(
  105. void *pTuner,
  106. int *pTunerType
  107. );
  108. void
  109. e4000_GetDeviceAddr(
  110. void *pTuner,
  111. unsigned char *pDeviceAddr
  112. );
  113. int
  114. e4000_Initialize(
  115. void *pTuner
  116. );
  117. int
  118. e4000_SetRfFreqHz(
  119. void *pTuner,
  120. unsigned long RfFreqHz
  121. );
  122. int
  123. e4000_GetRfFreqHz(
  124. void *pTuner,
  125. unsigned long *pRfFreqHz
  126. );
  127. // Extra manipulaing functions
  128. int
  129. e4000_GetRegByte(
  130. void *pTuner,
  131. unsigned char RegAddr,
  132. unsigned char *pReadingByte
  133. );
  134. int
  135. e4000_SetBandwidthHz(
  136. void *pTuner,
  137. unsigned long BandwidthHz
  138. );
  139. int
  140. e4000_GetBandwidthHz(
  141. void *pTuner,
  142. unsigned long *pBandwidthHz
  143. );
  144. #endif