summaryrefslogtreecommitdiffstats
path: root/api/demodulatorextend.h
diff options
context:
space:
mode:
Diffstat (limited to 'api/demodulatorextend.h')
-rw-r--r--api/demodulatorextend.h1406
1 files changed, 1406 insertions, 0 deletions
diff --git a/api/demodulatorextend.h b/api/demodulatorextend.h
new file mode 100644
index 0000000..411cf4c
--- /dev/null
+++ b/api/demodulatorextend.h
@@ -0,0 +1,1406 @@
+#ifndef __DEMODULATOREXTEND_H__
+#define __DEMODULATOREXTEND_H__
+
+
+//#include <stdio.h> // for Linux
+//#include <math.h>
+#include "type.h"
+#include "user.h"
+#include "register.h"
+#include "error.h"
+#include "cmd.h"
+//#include "i2cimpl.h"
+//#include "sdioimpl.h"
+//#include "spiimpl.h"
+#include "usb2impl.h"
+#include "demodulator.h"
+
+
+#define Tuner_Panasonic_ENV77H11D5 0x01
+#define Tuner_Microtune_MT2060 0x02
+#define Tuner_Maxlinear_MXL5003 0x03
+#define Tuner_Philip_TD1316AFIHP 0x04
+#define Tuner_Freescale_FS803A 0x05
+#define Tuner_Quantek_QT1010 0x06
+#define Tuner_Panasonic_ENV75H10D8 0x07
+#define Tuner_Lg_TDTMG252D 0x08
+#define Tuner_Himax_HTXR03A 0x09
+#define Tuner_Alps_TDQ44M 0x0A
+#define Tuner_Infineon_TUA6045 0x0B
+#define Tuner_Infineon_TUA6034 0x0C
+#define Tuner_Maxlinear_MXL5005 0x0D
+#define Tuner_Thomson_664X 0x0E
+#define Tuner_Thomson_6630 0x0F
+#define Tuner_Samsung_DTOS403 0x10
+#define Tuner_Samsung_DTOS446 0x11
+#define Tuner_Freescale_FS803A_DLNA 0x12
+#define Tuner_Microtune_MT2060_7SAW 0x13
+#define Tuner_Alps_TDQ03 0x14
+#define Tuner_Thomson_759X 0x15
+#define Tuner_Empire_DTN317 0x16
+#define Tuner_Partsnic_PDHTF05D 0x17
+#define Tuner_Panasonic_ENG37A30GF 0x18
+#define Tuner_Philips_FQD1216ME_MK5 0x19
+#define Tuner_Infineon_TUA6041 0x1A
+#define Tuner_Philips_TDA18271 0x1B
+#define Tuner_Alps_TDQD1X001A 0x1C
+#define Tuner_Maxlinear_MXL5005_RSSI 0x1D
+#define Tuner_Thomson_75101 0x1E
+#define Tuner_Sharp_5056 0x1F
+#define Tuner_Freescale_MC44CD02 0x20
+#define Tuner_Microtune_MT2260B0 0x21
+#define Tuner_Philips_TDA18291HN 0x22
+#define Tuner_Microtune_MT2266 0x23
+#define Tuner_Integrant_ITD3020 0x24
+#define Tuner_Afatech_PEACOCK 0x25
+#define Tuner_Xceive_XC3028L 0x26
+#define Tuner_Infineon_TUA9001 0x27
+#define Tuner_Fitipower_FC0011 0x28
+#define Tuner_Infineon_TUA6039 0x29
+#define Tuner_Xceive_XC4000 0x2A
+#define Tuner_Philips_TDA18271_C2 0x2B
+#define Tuner_Infineon_TUA8010 0x2C
+#define Tuner_Microtune_MT2266_TA4029CTC 0x2D
+#define Tuner_Fitipower_FC0012 0x2E
+#define Tuner_Philips_TDA18271_C2_Askey 0x2F
+#define Tuner_Philips_FQD1218ME_MK5 0x30
+#define Tuner_ADI_ADMTV102 0x31
+#define Tuner_FCI_FC2580 0x32
+#define Tuner_Maxim_MAX2169 0x33
+#define Tuner_Philips_TDA18292 0x34
+#define Tuner_Afatech_PICTOR 0x35
+#define Tuner_Elonics_E4000 0x36
+#define Tuner_Afatech_AF9007 0xFF
+
+
+/**
+ * Define commands for AGC general set function
+ */
+#define APO_AGC_SET_RF_ACQUIRE 1
+#define APO_AGC_SET_RF_TRACK 2
+#define APO_AGC_SET_IF_ACQUIRE 3
+#define APO_AGC_SET_IF_TRACK 4
+#define APO_AGC_SET_ADC_OUT_DESIRED_S 5
+#define APO_AGC_SET_RF_TOP_S 6
+#define APO_AGC_SET_IF_TOP_S 7
+#define APO_AGC_SET_RF_LOCK_TH_ACQUIRE 8
+#define APO_AGC_SET_RF_LOCK_TH_TRACK 9
+#define APO_AGC_SET_IF_LOCK_TH_ACQUIRE 10
+#define APO_AGC_SET_IF_LOCK_TH_TRACK 11
+#define APO_AGC_SET_ADC_OUT_DESIRED_M 12
+#define APO_AGC_SET_RF_TOP_M 13
+#define APO_AGC_SET_IF_TOP_M 14
+#define APO_AGC_SET_RF_TOP 15
+#define APO_AGC_SET_IF_TOP 16
+
+
+/**
+ * Define commands for AGC general set function
+ */
+#define APO_AGC_GET_RF_ACQUIRE 1
+#define APO_AGC_GET_RF_TRACK 2
+#define APO_AGC_GET_IF_ACQUIRE 3
+#define APO_AGC_GET_IF_TRACK 4
+#define APO_AGC_GET_RF_LOCK_TH_ACQUIRE 5
+#define APO_AGC_GET_RF_LOCK_TH_TRACK 6
+#define APO_AGC_GET_IF_LOCK_TH_ACQUIRE 7
+#define APO_AGC_GET_IF_LOCK_TH_TRACK 8
+#define APO_AGC_GET_RF_MAX 9
+#define APO_AGC_GET_RF_MIN 10
+#define APO_AGC_GET_RF_TOP_S 11
+#define APO_AGC_GET_RF_TOP_M 17
+#define APO_AGC_GET_IF_MAX 12
+#define APO_AGC_GET_IF_MIN 13
+#define APO_AGC_GET_IF_TOP_S 14
+#define APO_AGC_GET_IF_TOP_M 18
+#define APO_AGC_GET_RF_TOP 19
+#define APO_AGC_GET_IF_TOP 20
+#define APO_AGC_GET_ADC_OUT_DESIRED_S 15
+#define APO_AGC_GET_ADC_OUT_DESIRED_M 16
+
+
+/**
+ * Define Options
+ */
+#define APO_OPTION_FREQSHIFT 0x00000001
+#define APO_OPTION_DYNATOP 0x00000002
+#define APO_OPTION_RET_NOW 0x00000004
+#define APO_OPTION_REPEAT_RETRAIN 0x00000008
+
+
+/**
+ * Define Demodulator_getDouble index
+ */
+#define APO_GET_FREQ_SHIFT 1
+#define APO_GET_ORIG_RF_TOP 2
+#define APO_GET_ORIG_IF_TOP 3
+#define APO_GET_FINAL_RF_TOP 4
+#define APO_GET_FINAL_IF_TOP 5
+#define APO_GET_BEST_RF_TOP 6
+#define APO_GET_BEST_IF_TOP 7
+
+
+/**
+ * Define commands for general CE information function
+ */
+#define APO_AGC_CLEAR_REGS 1
+#define APO_AGC_STALL_OFSM_ACCESS 2
+#define APO_AGC_RESTORE_OFSM_ACCESS 3
+
+
+#define APO_DCA_EN_UPPER 0x01
+#define APO_DCA_EN_LOWER 0x02
+#define APO_DCA_BOTH 0x00
+
+
+/** keep for internal api release */
+/**
+ * The type defination of PidTable.
+ */
+typedef struct {
+ Word pid[32];
+} PidTable;
+
+typedef struct {
+ PidTable pidtable[2];
+ Byte pidcount;
+ Bool pidinit;
+} PidInfo;
+/** end keep for internal api release */
+
+
+extern Word DemodulatorExtend_diversityMode;
+extern double DemodulatorExtend_crystalFrequency;
+extern Word Tdmb_bitRateTable[64];
+
+
+/**
+ * Set control bus and tuner.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param busId The ID of bus.
+ * @param tunerId The ID of tuner.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ * @example <pre>
+ * Dword error = Error_NO_ERROR;
+ * Ganymede ganymede;
+ *
+ * // Set I2C as the control bus.
+ * error = Demodulator_setBusTuner ((Demodulator*) &ganymede, Bus_I2C, Tuner_MICROTUNE_MT2060);
+ * if (error)
+ * printf ("Error Code = %X", error);
+ * else
+ * printf ("Success");
+ * </pre>
+ */
+Dword Demodulator_setBusTuner (
+ IN Demodulator* demodulator,
+ IN Word busId,
+ IN Word tunerId
+);
+
+
+/**
+ * Set firmware and script.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param crystalFrequency The value of crystal frequency on board (KHz).
+ * @param adcFrequency The value of desire internal ADC frequency (Hz).
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ * @example <pre>
+ * Dword error = Error_NO_ERROR;
+ * Ganymede ganymede;
+ *
+ * // Set frequencies.
+ * error = Demodulator_setCrystalAdcFrequency ((Demodulator*) &ganymede, 30000, 20156250);
+ * if (error)
+ * printf ("Error Code = %X", error);
+ * else
+ * printf ("Success");
+ * </pre>
+ */
+Dword Demodulator_setCrystalAdcFrequency (
+ IN Demodulator* demodulator,
+ IN Dword crystalFrequency,
+ IN Dword adcFrequency
+);
+
+
+/**
+ * Set firmware and script.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param firmwareCodes The byte array of firmware code.
+ * @param firmwareSegments The segments of firmwares.
+ * @param firmwarePartitions The partitions of firmwares.
+ * @param scriptSets The sets of script.
+ * @param scripts The byte array of script.
+ * @param tunerScriptSets The sets of tunerScript.
+ * @param tunerScripts The byte array of tunerScript.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ * @example <pre>
+ * Dword error = Error_NO_ERROR;
+ * Byte firmware[65535];
+ * ValueSet script[256];
+ * ValueSet tunerScript[256];
+ * Ganymede ganymede;
+ *
+ * // Set I2C as the control bus.
+ * error = Demodulator_setFirmwareScript ((Demodulator*) &ganymede, firmware, 65535, script, 256, tunerScript, 256);
+ * if (error)
+ * printf ("Error Code = %X", error);
+ * else
+ * printf ("Success");
+ * </pre>
+ */
+Dword Demodulator_setFirmwareScript (
+ IN Demodulator* demodulator,
+ IN Byte* firmwareCodes,
+ IN Segment* firmwareSegments,
+ IN Byte* firmwarePartitions,
+ IN Word* scriptSets,
+ IN ValueSet* scripts,
+ IN Word* tunerScriptSets,
+ IN ValueSet* tunerScripts
+);
+
+
+/**
+ * Get the statistic values of demodulator, it includes Pre-Viterbi BER,
+ * Post-Viterbi BER, Abort Count, Signal Presented Flag, Signal Locked Flag,
+ * Signal Quality, Signal Strength, Delta-T for DVB-H time slicing.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param statistic the structure that store all statistic values.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ * @example <pre>
+ * Dword error = Error_NO_ERROR;
+ * ChannelStatistic channelStatistic;
+ * double preBer;
+ * double postBer;
+ * Ganymede ganymede;
+ *
+ * // Set statistic range.
+ * error = Demodulator_getChannelStatistic ((Demodulator*) &ganymede, 0, &channelStatistic);
+ * if (error)
+ * printf ("Error Code = %X", error);
+ * else
+ * printf ("Success");
+ * preBer = (double) channelStatistic.preVitErrorCount / (double) channelStatistic.preVitBitCount;
+ * printf ("Pre-Viterbi BER = %f\n", preBer);
+ * postBer = (double) channelStatistic.postVitErrorCount / (double) channelStatistic.postVitBitCount;
+ * printf ("Post-Viterbi BER = %f\n", postBer);
+ * printf ("Abort Count = %d\n", channelStatistic.abortCount);
+ * </pre>
+ */
+Dword Demodulator_getChannelStatistic (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ OUT ChannelStatistic* channelStatistic
+);
+
+
+/**
+ * Set the counting range for Pre-Viterbi and Post-Viterbi.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7. NOTE: When the architecture is set to Architecture_DCA
+ * this parameter is regard as don't care.
+ * @param preErrorCount the number of super frame for Pre-Viterbi.
+ * @param preBitCount the number of packet unit for Post-Viterbi.
+ * @param snr the signal to noise ratio.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ */
+Dword Demodulator_getPreVitBer (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ OUT Dword* preErrorCount,
+ OUT Dword* preBitCount,
+ OUT double* snr
+);
+
+
+/**
+ * Set the counting range for Pre-Viterbi and Post-Viterbi.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7. NOTE: When the architecture is set to Architecture_DCA
+ * this parameter is regard as don't care.
+ * @param preErrorCount the number of super frame for Pre-Viterbi.
+ * @param preBitCount the number of packet unit for Post-Viterbi.
+ * @param snr the signal to noise ratio.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ */
+Dword Demodulator_getSoftBer (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ OUT Dword* preErrorCount,
+ OUT Dword* preBitCount,
+ OUT double* snr
+);
+
+
+/**
+ * This function is used to get signal quality indicator.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param sqi signal quality indicator.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * Byte sqi;
+ *
+ * Demodulator_getSqi (0x38, 0, &sqi);
+ * </pre>
+ */
+Dword Demodulator_getSqi (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ OUT Byte* sqi
+);
+
+
+/**
+ * Get IF agc voltage.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param doPullUpVolt The pull up voltage of tunre.
+ * @param dopVolt IF AGC voltage to be returned.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getIfAgcVoltage (
+ IN Demodulator* demodulator,
+ IN double doPullUpVolt,
+ OUT double* dopVolt
+);
+
+
+/**
+ * Set maximum RF agc.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param doMaxRfAgc The maximum value of RF AGC.
+ * @param doVolt RF AGC voltage to be set.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setMaxRfAgc (
+ IN Demodulator* demodulator,
+ IN double doMaxRfAgc,
+ IN double doVolt
+);
+
+
+/**
+ * Set minimum rf agc.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param doMinRfAgc The minimum value of RF AGC.
+ * @param doVolt RF AGC voltage to be set.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setMinRfAgc (
+ IN Demodulator* demodulator,
+ IN double doMinRfAgc,
+ IN double doVolt
+);
+
+
+/**
+ * Set max if agc.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param doMaxIfAgc The maximum value of IF AGC.
+ * @param doVolt IF AGC voltage to be set.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setMaxIfAgc (
+ IN Demodulator* demodulator,
+ IN double doMaxIfAgc,
+ IN double doVolt
+);
+
+
+/**
+ * Set min if agc.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param doMinIfAgc The minimum value of IF AGC.
+ * @param doVolt IF AGC voltage to be set.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setMinIfAgc (
+ IN Demodulator* demodulator,
+ IN double doMinIfAgc,
+ IN double doVolt
+);
+
+
+/**
+ * General agc set function.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param ucCmd .
+ * @param vpParams .
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setAgc (
+ IN Demodulator* demodulator,
+ IN Byte ucCmd,
+ IN Word* vpParams
+);
+
+
+/**
+ * General agc get function.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param ucCmd .
+ * @param vpParams .
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getAgc (
+ IN Demodulator* demodulator,
+ IN Byte ucCmd,
+ IN void* vpParams
+);
+
+
+/**
+ * Check if INR detected.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param count INR count.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getInrCount (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ OUT Word* count
+);
+
+
+/**
+ * Check if CCI happens.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param cci0 1: CCI happen, 0: CCI doesn't happen.
+ * @param cci1 1: CCI happen, 0: CCI doesn't happen.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_isCci (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ OUT Bool* cci0,
+ OUT Bool* cci1
+);
+
+
+/**
+ * Check if ACI happens
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param aci0 1: ACI happen, 0: ACI doesn't happen.
+ * @param aci1 1: ACI happen, 0: ACI doesn't happen.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_isAci (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ OUT Bool* aci0,
+ OUT Bool* aci1
+);
+
+
+/**
+ * Get frequency offset.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param doTs Sampling period.
+ * @param lpNormOffset Normalized frequency offset (carrier spacing).
+ * @param lpOffset Frequency offset (22 bits) (Hz).
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getFrequencyOffset (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN double elementaryPeriod,
+ OUT Long* normalizedOffset,
+ OUT Long* offset
+);
+
+
+/**
+ * Get sampling clock offset in second
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param adcFrequency ADC frequency.
+ * @param elementaryPeriod Sampling period.
+ * @param offset ADC sampling clock offset in sec.
+ * @param offsetPpm ADC sampling clock offset in PPM.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getTimeOffset (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN double adcFrequency,
+ IN double elementaryPeriod,
+ OUT double* offset,
+ OUT double* offsetPpm
+);
+
+
+/**
+ * Set IF1 frequency of MT2060.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param dwIf1 The IF1 frequency (KHz).
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setMT2060If1 (
+ IN Demodulator* demodulator,
+ IN Dword dwIf1
+);
+
+
+/**
+ * Clear FFT window position valid bit.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_resetFftWinPos (
+ IN Demodulator* demodulator,
+ IN Byte chip
+);
+
+
+/**
+ * Clear FFT window position valid bit.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param delta Delta value for FFT window position.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getFftWinPos (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN Long* delta
+);
+
+
+/**
+ * Get crystal frequency (KHz).
+ *
+ * @param demodulator the handle of demodulator.
+ * @param fpFreq Crystal frequency.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getXtalFreq (
+ IN Demodulator* demodulator,
+ IN float* fpFreq
+);
+
+
+/**
+ * Test register.
+ *
+ * @param demodulator the handle of demodulator.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_testRegister (
+ IN Demodulator* demodulator
+);
+
+
+/**
+ * Dump register.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param cpFileName The name of file to be write.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_dumpRegister (
+ IN Demodulator* demodulator,
+ IN char* cpFileName
+);
+
+
+/**
+ * Get frequency response from hardware.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param tone Sub-Carrier Index ( Real Index = 200*wIndex).
+ * @param realPart Real part of Constellation value.
+ * @param imaginaryPart Imaginary part of Constellation value.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getFrequencyResponse (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ OUT Word* tone,
+ OUT Long* realPart,
+ OUT Long* imaginaryPart
+);
+
+
+/**
+ * Get constellation value.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param tone Sub-Carrier Index ( Real Index = 200*wIndex).
+ * @param realPart Real part of Constellation value.
+ * @param imaginaryPart Imaginary part of Constellation value.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getConstellation (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN Word tone,
+ OUT float* realPart,
+ OUT float* imaginaryPart
+);
+
+
+/**
+ * Capture constellation value (2).
+ *
+ * @param demodulator the handle of demodulator.
+ * @param wIndex Sub-Carrier Index ( Real Index = 200*wIndex).
+ * @param wpReal real part of constellation value.
+ * @param wpImag imaginary part of constellation value.
+ * @param wpH2 H2 value.
+ * @param wpRealH real part of H.
+ * @param wpImagH imaginary part of H.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_capConstellation2 (
+ IN Demodulator* demodulator,
+ IN Word wIndex,
+ OUT Byte* ucpSymCnt,
+ OUT Byte* ucpReal,
+ OUT Byte* ucpImag,
+ OUT Word* wpRealH,
+ OUT Word* wpImagH
+);
+
+
+/**
+ * Get status.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param dwpStatus Pointer to system information.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getStatus (
+ IN Demodulator* demodulator,
+ OUT Dword* dwpStatus
+);
+
+
+/**
+ * Get frequency shift.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param index .
+ * @param dopShift .
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getDouble (
+ IN Demodulator* demodulator,
+ IN Byte index,
+ IN double* dopValue
+);
+
+
+/**
+ * Get IR byte.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param ucpIRByte IR packet buffer.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getIr (
+ IN Demodulator* demodulator,
+ OUT Byte* ucpIRByte
+);
+
+
+/**
+ * Dump EEPROM.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param dwDelay .
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_dumpEeprom (
+ IN Demodulator* demodulator,
+ IN Dword dwDelay
+);
+
+
+/**
+ * Load file to EEPROM.
+ *
+ * @param fileName File name to load to EEPROM.
+ * @param dwDelay .
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_loadEeprom (
+ IN Demodulator* demodulator,
+ IN char* fileName,
+ IN Dword dwDelay
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_isFecMonEnabled (
+ IN Demodulator* demodulator,
+ OUT Bool* enabled
+);
+
+
+/**
+ * Generate ce information.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param command .
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_genCeInfoFunc (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN Byte command
+);
+
+
+/**
+ * Get ce information.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param spCentroid .
+ * @param spBias .
+ * @param dwpRh0 .
+ * @param wpM2 .
+ * @param dwpEh2 .
+ * @param ucpM2q .
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getCeInfo (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ OUT Short* spCentroid,
+ OUT Short* spBias,
+ OUT Dword* dwpRh0,
+ OUT Word* wpM2,
+ OUT Dword* dwpEh2,
+ OUT Byte* ucpM2q
+);
+
+
+/**
+ * Enable/disable retrain.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param enable .
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setRetrain (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN Byte enable
+);
+
+
+/**
+ * Enable/disable CCIR.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param ucEnable .
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setCcir (
+ IN Demodulator* demodulator,
+ IN Byte ucEnable
+);
+
+
+/**
+ * Handle CCIF
+ *
+ * @param demodulator the handle of demodulator.
+ * @param ccifId .
+ * @param ctrl .
+ * @param ucBw .
+ * @param wFreq .
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_handleCcif (
+ IN Demodulator* demodulator,
+ IN Byte ccifId,
+ IN Byte ctrl,
+ IN Byte ucBw,
+ IN Word wFreq
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param level .
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getAdcDesiredLevel (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ OUT Word* level
+);
+
+
+/**
+ * Set tuner type
+ *
+ * @param demodulator the handle of demodulator.
+ * @param ucTuner .
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setTunerType (
+ IN Demodulator* demodulator,
+ IN Byte ucTuner
+);
+
+
+/**
+ * Set board id
+ *
+ * @param demodulator the handle of demodulator.
+ * @param ucBoard .
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setBoardId (
+ IN Demodulator* demodulator,
+ IN Byte ucBoard
+);
+
+
+/**
+ * Get signal strength in Dbm
+ *
+ * @param demodulator the handle of demodulator.
+ * @param ucTunerType tuner type.
+ * @param ucBoardId Board ids.
+ * @param dopStrength signal strength.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getSignalStrengthDBm (
+ IN Demodulator* demodulator,
+ IN Byte ucTunerType,
+ IN Byte ucBoardId,
+ OUT double* dopStrength
+);
+
+
+/**
+ * Program CFOE 2.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param ucBw Current channel bandwidth in MHz.
+ * @param dFs ADC sampling frequency.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_programCFOE2 (
+ IN Demodulator* demodulator,
+ IN Byte ucBw,
+ IN double dFs
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setCalibratAgc (
+ IN Demodulator* demodulator
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setCrystalFrequency (
+ IN Demodulator* demodulator,
+ IN double crystalFrequency
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_writeMt2060If1 (
+ IN Demodulator* demodulator,
+ IN Dword dwIF1
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getSnr (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ OUT double* snr
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @param speed the I2C speed in KHz.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setI2cSpeed (
+ IN Demodulator* demodulator,
+ IN Dword speed
+);
+
+
+/**
+ * Ask fw to go back to boot code
+ *
+ * @param demodulator the handle of demodulator.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_backToBootCode (
+ IN Demodulator* demodulator
+);
+
+
+/**
+ * Control gpio3 (AF9015 use this pin to turn on/off tuner)
+ * ucOn = 1 => turn on tuner
+ * ucOn = 0 => turn off tuner
+ *
+ * @param demodulator the handle of demodulator.
+ * @param contorl True: Enable, False: Disable;
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_controlTunerPower (
+ IN Demodulator* demodulator,
+ IN Byte control
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @param multiplier ADC frequency multiplier;
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setMultiplier (
+ IN Demodulator* demodulator,
+ IN Multiplier multiplier
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @param multiplier ADC frequency multiplier;
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getMultiplier (
+ IN Demodulator* demodulator,
+ IN Multiplier* multiplier
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @param ifFrequency the IF frequency of tuner;
+ * @param inversion True if tuner's pectrum is inversed;
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_modifyTunerDescription (
+ IN Demodulator* demodulator,
+ IN Byte tunerAddress,
+ IN Byte registerAddressLength,
+ IN Dword ifFrequency,
+ IN Bool inversion
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_writeRawData (
+ IN Demodulator* demodulator,
+ IN Byte writeBufferLength,
+ IN Byte* writeBuffer
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_readRawData (
+ IN Demodulator* demodulator,
+ IN Byte readBufferLength,
+ OUT Byte* readBuffer
+);
+
+
+/**
+ * Open tuner.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ */
+Dword Demodulator_openTuner (
+ IN Demodulator* demodulator,
+ IN Byte chip
+);
+
+/**
+ * Set tuner.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param bandwidth The desired bandwidth.
+ * @param frequency The desired frequency.
+ * @return Error_NO_ERROR: successful, other non-zero error code otherwise.
+ */
+Dword Demodulator_setTuner (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN Word bandwidth,
+ IN Dword frequency
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param block How many block (logical frame) to be check.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setPostVitAllZeroBlock (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN Word block
+);
+
+
+/**
+ *
+ * @param demodulator the handle of demodulator.
+ * @param code the address of function pointer in firmware.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_runCode (
+ IN Demodulator* demodulator,
+ IN Word code
+);
+
+
+/**
+ * Add PID to PID filter.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param pid the PID that will be add to PID filter.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ */
+Dword Demodulator_addPid (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN Pid pid
+);
+
+
+/**
+ * Add PID to PID filter by index.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param index the index of PID filter.
+ * @param pid the PID that will be add to PID filter.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ */
+Dword Demodulator_addPidAt (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN Byte index,
+ IN Pid pid
+);
+
+
+/**
+ * Remove PID from PID filter.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param pid the PID that will be remove from PID filter.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ */
+Dword Demodulator_removePid (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN Pid pid
+);
+
+/**
+ * Remove PID from PID filter by index.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @param index the index of PID filter.
+ * @param pid the PID that will be remove from PID filter.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ */
+Dword Demodulator_removePidAt (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN Byte index,
+ IN Pid pid
+);
+
+
+/**
+ * Reset PID filter.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param chip The index of demodulator. The possible values are
+ * 0~7.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ */
+Dword Demodulator_resetPid (
+ IN Demodulator* demodulator,
+ IN Byte chip
+);
+
+
+/**
+ * Control Active Sync.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param contorl 0: Disable(BDA Extend), 1: Enable (Active Sync)
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_controlActiveSync (
+ IN Demodulator* demodulator,
+ IN Byte control
+);
+
+/**
+ * Set the counting range for Pre-Viterbi and Post-Viterbi.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param frameCount the number of super frame for Pre-Viterbi.
+ * @param packetUnit the number of packet unit for Post-Viterbi.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_setStatisticRange (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN Byte superFrameCount,
+ IN Word packetUnit
+);
+
+
+/**
+ * Get the counting range for Pre-Viterbi and Post-Viterbi.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param frameCount the number of super frame for Pre-Viterbi.
+ * @param packetUnit the number of packet unit for Post-Viterbi.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getStatisticRange (
+ IN Demodulator* demodulator,
+ IN Byte chip,
+ IN Byte* superFrameCount,
+ IN Word* packetUnit
+);
+
+
+/**
+ * Get the using tuner code version.
+ *
+ * @param demodulator the handle of demodulator.
+ * @param majorVersion the number of tuner major version.
+ * @param minorVersion the number of tuner minor version.
+ * @return Error_NO_ERROR: successful, non-zero error code otherwise.
+ * @example <pre>
+ * </pre>
+ */
+Dword Demodulator_getTunerVersion (
+ IN Demodulator* demodulator,
+ OUT Byte* majorVersion,
+ OUT Byte* minorVersion
+);
+
+
+#endif \ No newline at end of file