/** @brief RTL2832 FC2580 NIM module builder Use BuildRtl2832Fc2580Module() to build RTL2832 FC2580 NIM module, set all module function pointers with the corresponding functions, and initialize module private variables. @param [in] ppNim Pointer to RTL2832 FC2580 NIM module pointer @param [in] pDvbtNimModuleMemory Pointer to an allocated DVB-T NIM module memory @param [in] I2cReadingByteNumMax Maximum I2C reading byte number for basic I2C reading function @param [in] I2cWritingByteNumMax Maximum I2C writing byte number for basic I2C writing function @param [in] I2cRead Basic I2C reading function pointer @param [in] I2cWrite Basic I2C writing function pointer @param [in] WaitMs Basic waiting function pointer @param [in] pRtl2832ExtraModuleMemory Pointer to an allocated RTL2832 extra module memory @param [in] DemodDeviceAddr RTL2832 I2C device address @param [in] DemodCrystalFreqHz RTL2832 crystal frequency in Hz @param [in] DemodAppMode RTL2832 application mode for setting @param [in] DemodTsInterfaceMode RTL2832 TS interface mode for setting @param [in] pFc2580ExtraModuleMemory Pointer to an allocated FC2580 extra module memory @param [in] TunerDeviceAddr FC2580 I2C device address @param [in] TunerAgcMode FC2580 AGC mode @note -# One should call BuildRtl2832Fc2580Module() to build RTL2832 FC2580 NIM module before using it. */ void BuildRtl2832Fc2580Module( DVBT_NIM_MODULE **ppNim, // DVB-T NIM dependence DVBT_NIM_MODULE *pDvbtNimModuleMemory, unsigned char I2cReadingByteNumMax, // Base interface dependence unsigned char I2cWritingByteNumMax, BASE_FP_I2C_READ I2cRead, BASE_FP_I2C_WRITE I2cWrite, BASE_FP_WAIT_MS WaitMs, RTL2832_EXTRA_MODULE *pRtl2832ExtraModuleMemory, // Demod dependence unsigned char DemodDeviceAddr, unsigned long DemodCrystalFreqHz, int DemodAppMode, int DemodTsInterfaceMode, unsigned long DemodUpdateFuncRefPeriodMs, int DemodIsFunc1Enabled, FC2580_EXTRA_MODULE *pFc2580ExtraModuleMemory, // Tuner dependence unsigned char TunerDeviceAddr, unsigned long TunerCrystalFreqHz, int TunerAgcMode ) { DVBT_NIM_MODULE *pNim; // Set NIM module pointer with NIM module memory. *ppNim = pDvbtNimModuleMemory; // Get NIM module. pNim = *ppNim; // Set I2C bridge module pointer with I2C bridge module memory. pNim->pI2cBridge = &pNim->I2cBridgeModuleMemory; // Set NIM extra module pointer. pNim->pExtra = INVALID_POINTER_VALUE; // Set NIM type. pNim->NimType = DVBT_NIM_RTL2832_FC2580; // Build base interface module. BuildBaseInterface( &pNim->pBaseInterface, &pNim->BaseInterfaceModuleMemory, I2cReadingByteNumMax, I2cWritingByteNumMax, I2cRead, I2cWrite, WaitMs ); // Build RTL2832 demod module. BuildRtl2832Module( &pNim->pDemod, &pNim->DvbtDemodModuleMemory, pRtl2832ExtraModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, DemodDeviceAddr, DemodCrystalFreqHz, DemodAppMode, DemodUpdateFuncRefPeriodMs, DemodIsFunc1Enabled ); // Build FC2580 tuner module. BuildFc2580Module( &pNim->pTuner, &pNim->TunerModuleMemory, pFc2580ExtraModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, TunerDeviceAddr, TunerCrystalFreqHz, TunerAgcMode ); // Set NIM module variables. pNim->DemodTsInterfaceMode = DemodTsInterfaceMode; // Set NIM module function pointers with default functions. pNim->GetNimType = dvbt_nim_default_GetNimType; pNim->GetParameters = dvbt_nim_default_GetParameters; pNim->IsSignalPresent = dvbt_nim_default_IsSignalPresent; pNim->IsSignalLocked = dvbt_nim_default_IsSignalLocked; pNim->GetSignalStrength = dvbt_nim_default_GetSignalStrength; pNim->GetSignalQuality = dvbt_nim_default_GetSignalQuality; pNim->GetBer = dvbt_nim_default_GetBer; pNim->GetSnrDb = dvbt_nim_default_GetSnrDb; pNim->GetTrOffsetPpm = dvbt_nim_default_GetTrOffsetPpm; pNim->GetCrOffsetHz = dvbt_nim_default_GetCrOffsetHz; pNim->GetTpsInfo = dvbt_nim_default_GetTpsInfo; pNim->UpdateFunction = dvbt_nim_default_UpdateFunction; // Set NIM module function pointers with particular functions. pNim->Initialize = rtl2832_fc2580_Initialize; pNim->SetParameters = rtl2832_fc2580_SetParameters; return; }
/** @brief RTL2836 MxL5007T NIM module builder Use BuildRtl2836Mxl5007tModule() to build RTL2836 MxL5007T NIM module, set all module function pointers with the corresponding functions, and initialize module private variables. @param [in] ppNim Pointer to RTL2836 MxL5007T NIM module pointer @param [in] pDtmbNimModuleMemory Pointer to an allocated DTMB NIM module memory @param [in] I2cReadingByteNumMax Maximum I2C reading byte number for basic I2C reading function @param [in] I2cWritingByteNumMax Maximum I2C writing byte number for basic I2C writing function @param [in] I2cRead Basic I2C reading function pointer @param [in] I2cWrite Basic I2C writing function pointer @param [in] WaitMs Basic waiting function pointer @param [in] DemodDeviceAddr RTL2836 I2C device address @param [in] DemodCrystalFreqHz RTL2836 crystal frequency in Hz @param [in] DemodTsInterfaceMode RTL2836 TS interface mode @param [in] DemodUpdateFuncRefPeriodMs RTL2836 update function reference period in millisecond @param [in] DemodIsFunc1Enabled RTL2836 Function 1 enabling status for setting @param [in] DemodIsFunc2Enabled RTL2836 Function 2 enabling status for setting @param [in] TunerDeviceAddr MxL5007T I2C device address @param [in] TunerCrystalFreqHz MxL5007T crystal frequency in Hz @param [in] TunerLoopThroughMode MxL5007T loop-through mode @param [in] TunerClkOutMode MxL5007T clock output mode @param [in] TunerClkOutAmpMode MxL5007T clock output amplitude mode @note -# One should call BuildRtl2836Mxl5007tModule() to build RTL2836 MxL5007T NIM module before using it. */ void BuildRtl2836Mxl5007tModule( DTMB_NIM_MODULE **ppNim, // DTMB NIM dependence DTMB_NIM_MODULE *pDtmbNimModuleMemory, u64 I2cReadingByteNumMax, // Base interface dependence u64 I2cWritingByteNumMax, BASE_FP_I2C_READ I2cRead, BASE_FP_I2C_WRITE I2cWrite, BASE_FP_WAIT_MS WaitMs, u8 DemodDeviceAddr, // Demod dependence u64 DemodCrystalFreqHz, s32 DemodTsInterfaceMode, u64 DemodUpdateFuncRefPeriodMs, s32 DemodIsFunc1Enabled, s32 DemodIsFunc2Enabled, u8 TunerDeviceAddr, // Tuner dependence u64 TunerCrystalFreqHz, s32 TunerLoopThroughMode, s32 TunerClkOutMode, s32 TunerClkOutAmpMode ) { DTMB_NIM_MODULE *pNim; // Set NIM module pointer with NIM module memory. *ppNim = pDtmbNimModuleMemory; // Get NIM module. pNim = *ppNim; // Set I2C bridge module pointer with I2C bridge module memory. pNim->pI2cBridge = &pNim->I2cBridgeModuleMemory; // Set NIM type. pNim->NimType = DTMB_NIM_RTL2836_MXL5007T; // Build base interface module. BuildBaseInterface( &pNim->pBaseInterface, &pNim->BaseInterfaceModuleMemory, I2cReadingByteNumMax, I2cWritingByteNumMax, I2cRead, I2cWrite, WaitMs ); // Build RTL2836 demod module. BuildRtl2836Module( &pNim->pDemod, &pNim->DtmbDemodModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, DemodDeviceAddr, DemodCrystalFreqHz, DemodTsInterfaceMode, DemodUpdateFuncRefPeriodMs, DemodIsFunc1Enabled, DemodIsFunc2Enabled ); // Build MxL5007T tuner module. BuildMxl5007tModule( &pNim->pTuner, &pNim->TunerModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, TunerDeviceAddr, TunerCrystalFreqHz, RTL2836_MXL5007T_STANDARD_MODE_DEFAULT, RTL2836_MXL5007T_IF_FREQ_HZ_DEFAULT, RTL2836_MXL5007T_SPECTRUM_MODE_DEFAULT, TunerLoopThroughMode, TunerClkOutMode, TunerClkOutAmpMode, RTL2836_MXL5007T_QAM_IF_DIFF_OUT_LEVEL_DEFAULT ); // Set NIM module function pointers with default functions. pNim->GetNimType = dtmb_nim_default_GetNimType; pNim->GetParameters = dtmb_nim_default_GetParameters; pNim->IsSignalPresent = dtmb_nim_default_IsSignalPresent; pNim->IsSignalLocked = dtmb_nim_default_IsSignalLocked; pNim->GetSignalStrength = dtmb_nim_default_GetSignalStrength; pNim->GetSignalQuality = dtmb_nim_default_GetSignalQuality; pNim->GetBer = dtmb_nim_default_GetBer; pNim->GetPer = dtmb_nim_default_GetPer; pNim->GetSnrDb = dtmb_nim_default_GetSnrDb; pNim->GetTrOffsetPpm = dtmb_nim_default_GetTrOffsetPpm; pNim->GetCrOffsetHz = dtmb_nim_default_GetCrOffsetHz; pNim->GetSignalInfo = dtmb_nim_default_GetSignalInfo; pNim->UpdateFunction = dtmb_nim_default_UpdateFunction; // Set NIM module function pointers with particular functions. pNim->Initialize = rtl2836_mxl5007t_Initialize; pNim->SetParameters = rtl2836_mxl5007t_SetParameters; return; }
/** @brief RTL2832 TDA18272 NIM module builder Use BuildRtl2832Tda18272Module() to build RTL2832 TDA18272 NIM module, set all module function pointers with the corresponding functions, and initialize module private variables. @param [in] ppNim Pointer to RTL2832 TDA18272 NIM module pointer @param [in] pDvbtNimModuleMemory Pointer to an allocated DVB-T NIM module memory @param [in] I2cReadingByteNumMax Maximum I2C reading byte number for basic I2C reading function @param [in] I2cWritingByteNumMax Maximum I2C writing byte number for basic I2C writing function @param [in] I2cRead Basic I2C reading function pointer @param [in] I2cWrite Basic I2C writing function pointer @param [in] WaitMs Basic waiting function pointer @param [in] DemodDeviceAddr RTL2832 I2C device address @param [in] DemodCrystalFreqHz RTL2832 crystal frequency in Hz @param [in] DemodTsInterfaceMode RTL2832 TS interface mode for setting @param [in] DemodAppMode RTL2832 application mode for setting @param [in] DemodUpdateFuncRefPeriodMs RTL2832 update function reference period in millisecond for setting @param [in] DemodIsFunc1Enabled RTL2832 Function 1 enabling status for setting @param [in] TunerDeviceAddr TDA18272 I2C device address @param [in] TunerCrystalFreqHz TDA18272 crystal frequency in Hz @param [in] TunerUnitNo TDA18272 unit number @param [in] TunerIfOutputVppMode TDA18272 IF output Vp-p mode @note -# One should call BuildRtl2832Tda18272Module() to build RTL2832 TDA18272 NIM module before using it. */ void BuildRtl2832Tda18272Module( DVBT_NIM_MODULE **ppNim, // DVB-T NIM dependence DVBT_NIM_MODULE *pDvbtNimModuleMemory, u64 I2cReadingByteNumMax, // Base interface dependence u64 I2cWritingByteNumMax, BASE_FP_I2C_READ I2cRead, BASE_FP_I2C_WRITE I2cWrite, BASE_FP_WAIT_MS WaitMs, u8 DemodDeviceAddr, // Demod dependence u64 DemodCrystalFreqHz, s32 DemodTsInterfaceMode, s32 DemodAppMode, u64 DemodUpdateFuncRefPeriodMs, s32 DemodIsFunc1Enabled, u8 TunerDeviceAddr, // Tuner dependence u64 TunerCrystalFreqHz, s32 TunerUnitNo, s32 TunerIfOutputVppMode ) { DVBT_NIM_MODULE *pNim; // Set NIM module pointer with NIM module memory. *ppNim = pDvbtNimModuleMemory; // Get NIM module. pNim = *ppNim; // Set I2C bridge module pointer with I2C bridge module memory. pNim->pI2cBridge = &pNim->I2cBridgeModuleMemory; // Set NIM type. pNim->NimType = DVBT_NIM_RTL2832_TDA18272; // Build base interface module. BuildBaseInterface( &pNim->pBaseInterface, &pNim->BaseInterfaceModuleMemory, I2cReadingByteNumMax, I2cWritingByteNumMax, I2cRead, I2cWrite, WaitMs ); // Build RTL2832 demod module. BuildRtl2832Module( &pNim->pDemod, &pNim->DvbtDemodModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, DemodDeviceAddr, DemodCrystalFreqHz, DemodTsInterfaceMode, DemodAppMode, DemodUpdateFuncRefPeriodMs, DemodIsFunc1Enabled ); // Build TDA18272 tuner module. BuildTda18272Module( &pNim->pTuner, &pNim->TunerModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, TunerDeviceAddr, TunerCrystalFreqHz, TunerUnitNo, TunerIfOutputVppMode ); // Set NIM module function pointers with default functions. pNim->GetNimType = dvbt_nim_default_GetNimType; pNim->GetParameters = dvbt_nim_default_GetParameters; pNim->IsSignalPresent = dvbt_nim_default_IsSignalPresent; pNim->IsSignalLocked = dvbt_nim_default_IsSignalLocked; pNim->GetSignalStrength = dvbt_nim_default_GetSignalStrength; pNim->GetSignalQuality = dvbt_nim_default_GetSignalQuality; pNim->GetBer = dvbt_nim_default_GetBer; pNim->GetSnrDb = dvbt_nim_default_GetSnrDb; pNim->GetTrOffsetPpm = dvbt_nim_default_GetTrOffsetPpm; pNim->GetCrOffsetHz = dvbt_nim_default_GetCrOffsetHz; pNim->GetTpsInfo = dvbt_nim_default_GetTpsInfo; pNim->UpdateFunction = dvbt_nim_default_UpdateFunction; // Set NIM module function pointers with particular functions. pNim->Initialize = rtl2832_tda18272_Initialize; pNim->SetParameters = rtl2832_tda18272_SetParameters; return; }
/** @brief RTL2836 FC2580 NIM module builder Use BuildRtl2836Fc2580Module() to build RTL2836 FC2580 NIM module, set all module function pointers with the corresponding functions, and initialize module private variables. @param [in] ppNim Pointer to RTL2836 FC2580 NIM module pointer @param [in] pDtmbNimModuleMemory Pointer to an allocated DTMB NIM module memory @param [in] I2cReadingByteNumMax Maximum I2C reading byte number for basic I2C reading function @param [in] I2cWritingByteNumMax Maximum I2C writing byte number for basic I2C writing function @param [in] I2cRead Basic I2C reading function pointer @param [in] I2cWrite Basic I2C writing function pointer @param [in] WaitMs Basic waiting function pointer @param [in] DemodDeviceAddr RTL2836 I2C device address @param [in] DemodCrystalFreqHz RTL2836 crystal frequency in Hz @param [in] DemodTsInterfaceMode RTL2836 TS interface mode @param [in] DemodUpdateFuncRefPeriodMs RTL2836 update function reference period in millisecond @param [in] DemodIsFunc1Enabled RTL2836 Function 1 enabling status for setting @param [in] DemodIsFunc2Enabled RTL2836 Function 2 enabling status for setting @param [in] TunerDeviceAddr FC2580 I2C device address @param [in] TunerCrystalFreqHz FC2580 crystal frequency in Hz @param [in] TunerAgcMode FC2580 AGC mode @note -# One should call BuildRtl2836Fc2580Module() to build RTL2836 FC2580 NIM module before using it. */ void BuildRtl2836Fc2580Module( DTMB_NIM_MODULE **ppNim, // DTMB NIM dependence DTMB_NIM_MODULE *pDtmbNimModuleMemory, unsigned long I2cReadingByteNumMax, // Base interface dependence unsigned long I2cWritingByteNumMax, BASE_FP_I2C_READ I2cRead, BASE_FP_I2C_WRITE I2cWrite, BASE_FP_WAIT_MS WaitMs, unsigned char DemodDeviceAddr, // Demod dependence unsigned long DemodCrystalFreqHz, int DemodTsInterfaceMode, unsigned long DemodUpdateFuncRefPeriodMs, int DemodIsFunc1Enabled, int DemodIsFunc2Enabled, unsigned char TunerDeviceAddr, // Tuner dependence unsigned long TunerCrystalFreqHz, int TunerAgcMode ) { DTMB_NIM_MODULE *pNim; // Set NIM module pointer with NIM module memory. *ppNim = pDtmbNimModuleMemory; // Get NIM module. pNim = *ppNim; // Set I2C bridge module pointer with I2C bridge module memory. pNim->pI2cBridge = &pNim->I2cBridgeModuleMemory; // Set NIM type. pNim->NimType = DTMB_NIM_RTL2836_FC2580; // Build base interface module. BuildBaseInterface( &pNim->pBaseInterface, &pNim->BaseInterfaceModuleMemory, I2cReadingByteNumMax, I2cWritingByteNumMax, I2cRead, I2cWrite, WaitMs ); // Build RTL2836 demod module. BuildRtl2836Module( &pNim->pDemod, &pNim->DtmbDemodModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, DemodDeviceAddr, DemodCrystalFreqHz, DemodTsInterfaceMode, DemodUpdateFuncRefPeriodMs, DemodIsFunc1Enabled, DemodIsFunc2Enabled ); // Build FC2580 tuner module. BuildFc2580Module( &pNim->pTuner, &pNim->TunerModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, TunerDeviceAddr, TunerCrystalFreqHz, TunerAgcMode ); // Set NIM module function pointers with default functions. pNim->GetNimType = dtmb_nim_default_GetNimType; pNim->GetParameters = dtmb_nim_default_GetParameters; pNim->IsSignalPresent = dtmb_nim_default_IsSignalPresent; pNim->IsSignalLocked = dtmb_nim_default_IsSignalLocked; pNim->GetSignalStrength = dtmb_nim_default_GetSignalStrength; pNim->GetSignalQuality = dtmb_nim_default_GetSignalQuality; pNim->GetBer = dtmb_nim_default_GetBer; pNim->GetPer = dtmb_nim_default_GetPer; pNim->GetSnrDb = dtmb_nim_default_GetSnrDb; pNim->GetTrOffsetPpm = dtmb_nim_default_GetTrOffsetPpm; pNim->GetCrOffsetHz = dtmb_nim_default_GetCrOffsetHz; pNim->GetSignalInfo = dtmb_nim_default_GetSignalInfo; pNim->UpdateFunction = dtmb_nim_default_UpdateFunction; // Set NIM module function pointers with particular functions. pNim->Initialize = rtl2836_fc2580_Initialize; pNim->SetParameters = rtl2836_fc2580_SetParameters; return; }
/** @brief RTL2832 MAX3543 NIM module builder Use BuildRtl2832Max3543Module() to build RTL2832 MAX3543 NIM module, set all module function pointers with the corresponding functions, and initialize module private variables. @param [in] ppNim Pointer to RTL2832 MAX3543 NIM module pointer @param [in] pDvbtNimModuleMemory Pointer to an allocated DVB-T NIM module memory @param [in] I2cReadingByteNumMax Maximum I2C reading byte number for basic I2C reading function @param [in] I2cWritingByteNumMax Maximum I2C writing byte number for basic I2C writing function @param [in] I2cRead Basic I2C reading function pointer @param [in] I2cWrite Basic I2C writing function pointer @param [in] WaitMs Basic waiting function pointer @param [in] DemodDeviceAddr RTL2832 I2C device address @param [in] DemodCrystalFreqHz RTL2832 crystal frequency in Hz @param [in] DemodTsInterfaceMode RTL2832 TS interface mode for setting @param [in] DemodAppMode RTL2832 application mode for setting @param [in] DemodUpdateFuncRefPeriodMs RTL2832 update function reference period in millisecond for setting @param [in] DemodIsFunc1Enabled RTL2832 Function 1 enabling status for setting @param [in] TunerDeviceAddr MAX3543 I2C device address @param [in] TunerCrystalFreqHz MAX3543 crystal frequency in Hz @note -# One should call BuildRtl2832Max3543Module() to build RTL2832 MAX3543 NIM module before using it. */ void BuildRtl2832Max3543Module( DVBT_NIM_MODULE **ppNim, // DVB-T NIM dependence DVBT_NIM_MODULE *pDvbtNimModuleMemory, unsigned long I2cReadingByteNumMax, // Base interface dependence unsigned long I2cWritingByteNumMax, BASE_FP_I2C_READ I2cRead, BASE_FP_I2C_WRITE I2cWrite, BASE_FP_WAIT_MS WaitMs, unsigned char DemodDeviceAddr, // Demod dependence unsigned long DemodCrystalFreqHz, int DemodTsInterfaceMode, int DemodAppMode, unsigned long DemodUpdateFuncRefPeriodMs, int DemodIsFunc1Enabled, unsigned char TunerDeviceAddr, // Tuner dependence unsigned long TunerCrystalFreqHz ) { DVBT_NIM_MODULE *pNim; // Set NIM module pointer with NIM module memory. *ppNim = pDvbtNimModuleMemory; // Get NIM module. pNim = *ppNim; // Set I2C bridge module pointer with I2C bridge module memory. pNim->pI2cBridge = &pNim->I2cBridgeModuleMemory; // Set NIM type. pNim->NimType = DVBT_NIM_RTL2832_MAX3543; // Build base interface module. BuildBaseInterface( &pNim->pBaseInterface, &pNim->BaseInterfaceModuleMemory, I2cReadingByteNumMax, I2cWritingByteNumMax, I2cRead, I2cWrite, WaitMs ); // Build RTL2832 demod module. BuildRtl2832Module( &pNim->pDemod, &pNim->DvbtDemodModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, DemodDeviceAddr, DemodCrystalFreqHz, DemodTsInterfaceMode, DemodAppMode, DemodUpdateFuncRefPeriodMs, DemodIsFunc1Enabled ); // Build MAX3543 tuner module. BuildMax3543Module( &pNim->pTuner, &pNim->TunerModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, TunerDeviceAddr, TunerCrystalFreqHz, RTL2832_MAX3543_STANDARD_MODE_DEFAULT, RTL2832_MAX3543_IF_FREQ_HZ_DEFAULT, RTL2832_MAX3543_SAW_INPUT_TYPE_DEFAULT ); // Set NIM module function pointers with default functions. pNim->GetNimType = dvbt_nim_default_GetNimType; pNim->GetParameters = dvbt_nim_default_GetParameters; pNim->IsSignalPresent = dvbt_nim_default_IsSignalPresent; pNim->IsSignalLocked = dvbt_nim_default_IsSignalLocked; pNim->GetSignalStrength = dvbt_nim_default_GetSignalStrength; pNim->GetSignalQuality = dvbt_nim_default_GetSignalQuality; pNim->GetBer = dvbt_nim_default_GetBer; pNim->GetSnrDb = dvbt_nim_default_GetSnrDb; pNim->GetTrOffsetPpm = dvbt_nim_default_GetTrOffsetPpm; pNim->GetCrOffsetHz = dvbt_nim_default_GetCrOffsetHz; pNim->GetTpsInfo = dvbt_nim_default_GetTpsInfo; pNim->UpdateFunction = dvbt_nim_default_UpdateFunction; // Set NIM module function pointers with particular functions. pNim->Initialize = rtl2832_max3543_Initialize; pNim->SetParameters = rtl2832_max3543_SetParameters; return; }
/** @brief RTL2832 MT2266 NIM module builder Use BuildRtl2832Mt2266Module() to build RTL2832 MT2266 NIM module, set all module function pointers with the corresponding functions, and initialize module private variables. @param [in] ppNim Pointer to RTL2832 MT2266 NIM module pointer @param [in] pDvbtNimModuleMemory Pointer to an allocated DVB-T NIM module memory @param [in] I2cReadingByteNumMax Maximum I2C reading byte number for basic I2C reading function @param [in] I2cWritingByteNumMax Maximum I2C writing byte number for basic I2C writing function @param [in] I2cRead Basic I2C reading function pointer @param [in] I2cWrite Basic I2C writing function pointer @param [in] WaitMs Basic waiting function pointer @param [in] pRtl2832ExtraModuleMemory Pointer to an allocated RTL2832 extra module memory @param [in] DemodDeviceAddr RTL2832 I2C device address @param [in] DemodCrystalFreqHz RTL2832 crystal frequency in Hz @param [in] DemodAppMode RTL2832 application mode for setting @param [in] DemodTsInterfaceMode RTL2832 TS interface mode for setting @param [in] pMt2266ExtraModuleMemory Pointer to an allocated MT2266 extra module memory @param [in] TunerDeviceAddr MT2266 I2C device address @note -# One should call BuildRtl2832Mt2266Module() to build RTL2832 MT2266 NIM module before using it. */ void BuildRtl2832Mt2266Module( DVBT_NIM_MODULE **ppNim, // DVB-T NIM dependence DVBT_NIM_MODULE *pDvbtNimModuleMemory, RTL2832_MT2266_EXTRA_MODULE *pRtl2832Mt2266ExtraModuleMemory, unsigned char I2cReadingByteNumMax, // Base interface dependence unsigned char I2cWritingByteNumMax, BASE_FP_I2C_READ I2cRead, BASE_FP_I2C_WRITE I2cWrite, BASE_FP_WAIT_MS WaitMs, RTL2832_EXTRA_MODULE *pRtl2832ExtraModuleMemory, // Demod dependence unsigned char DemodDeviceAddr, unsigned long DemodCrystalFreqHz, int DemodAppMode, int DemodTsInterfaceMode, unsigned long DemodUpdateFuncRefPeriodMs, int DemodIsFunc1Enabled, MT2266_EXTRA_MODULE *pMt2266ExtraModuleMemory, // Tuner dependence unsigned char TunerDeviceAddr ) { DVBT_NIM_MODULE *pNim; RTL2832_MT2266_EXTRA_MODULE *pExtra; // Set NIM module pointer with NIM module memory. *ppNim = pDvbtNimModuleMemory; // Get NIM module. pNim = *ppNim; // Set I2C bridge module pointer with I2C bridge module memory. pNim->pI2cBridge = &pNim->I2cBridgeModuleMemory; // Set NIM extra module pointer. pNim->pExtra = pRtl2832Mt2266ExtraModuleMemory; // Get NIM extra module. pExtra = (RTL2832_MT2266_EXTRA_MODULE *)pNim->pExtra; // Set NIM type. pNim->NimType = DVBT_NIM_RTL2832_MT2266; // Build base interface module. BuildBaseInterface( &pNim->pBaseInterface, &pNim->BaseInterfaceModuleMemory, I2cReadingByteNumMax, I2cWritingByteNumMax, I2cRead, I2cWrite, WaitMs ); // Build RTL2832 demod module. BuildRtl2832Module( &pNim->pDemod, &pNim->DvbtDemodModuleMemory, pRtl2832ExtraModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, DemodDeviceAddr, DemodCrystalFreqHz, DemodAppMode, DemodUpdateFuncRefPeriodMs, DemodIsFunc1Enabled ); // Build MT2266 tuner module. BuildMt2266Module( &pNim->pTuner, &pNim->TunerModuleMemory, pMt2266ExtraModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, TunerDeviceAddr ); // Set NIM module variables. pNim->DemodTsInterfaceMode = DemodTsInterfaceMode; // Set NIM module function pointers with default functions. pNim->GetNimType = dvbt_nim_default_GetNimType; pNim->GetParameters = dvbt_nim_default_GetParameters; pNim->IsSignalPresent = dvbt_nim_default_IsSignalPresent; pNim->IsSignalLocked = dvbt_nim_default_IsSignalLocked; pNim->GetSignalStrength = dvbt_nim_default_GetSignalStrength; pNim->GetSignalQuality = dvbt_nim_default_GetSignalQuality; pNim->GetBer = dvbt_nim_default_GetBer; pNim->GetSnrDb = dvbt_nim_default_GetSnrDb; pNim->GetTrOffsetPpm = dvbt_nim_default_GetTrOffsetPpm; pNim->GetCrOffsetHz = dvbt_nim_default_GetCrOffsetHz; pNim->GetTpsInfo = dvbt_nim_default_GetTpsInfo; // Set NIM module function pointers with particular functions. pNim->Initialize = rtl2832_mt2266_Initialize; pNim->SetParameters = rtl2832_mt2266_SetParameters; pNim->UpdateFunction = rtl2832_mt2266_UpdateFunction; // Initialize NIM extra module variables. pExtra->LnaConfig = 0xff; pExtra->UhfSens = 0xff; pExtra->AgcCurrentState = 0xff; pExtra->LnaGainOld = 0xffffffff; return; }
/** @brief RTL2832 FC0013 NIM module builder Use BuildRtl2832Fc0013Module() to build RTL2832 FC0013 NIM module, set all module function pointers with the corresponding functions, and initialize module private variables. @param [in] ppNim Pointer to RTL2832 FC0013 NIM module pointer @param [in] pDvbtNimModuleMemory Pointer to an allocated DVB-T NIM module memory @param [in] I2cReadingByteNumMax Maximum I2C reading byte number for basic I2C reading function @param [in] I2cWritingByteNumMax Maximum I2C writing byte number for basic I2C writing function @param [in] I2cRead Basic I2C reading function pointer @param [in] I2cWrite Basic I2C writing function pointer @param [in] WaitMs Basic waiting function pointer @param [in] DemodDeviceAddr RTL2832 I2C device address @param [in] DemodCrystalFreqHz RTL2832 crystal frequency in Hz @param [in] DemodTsInterfaceMode RTL2832 TS interface mode for setting @param [in] DemodAppMode RTL2832 application mode for setting @param [in] DemodUpdateFuncRefPeriodMs RTL2832 update function reference period in millisecond for setting @param [in] DemodIsFunc1Enabled RTL2832 Function 1 enabling status for setting @param [in] TunerDeviceAddr FC0013 I2C device address @param [in] TunerCrystalFreqHz FC0013 crystal frequency in Hz @note -# One should call BuildRtl2832Fc0013Module() to build RTL2832 FC0013 NIM module before using it. */ void BuildRtl2832Fc0013Module( DVBT_NIM_MODULE **ppNim, // DVB-T NIM dependence DVBT_NIM_MODULE *pDvbtNimModuleMemory, unsigned long I2cReadingByteNumMax, // Base interface dependence unsigned long I2cWritingByteNumMax, BASE_FP_I2C_READ I2cRead, BASE_FP_I2C_WRITE I2cWrite, BASE_FP_WAIT_MS WaitMs, unsigned char DemodDeviceAddr, // Demod dependence unsigned long DemodCrystalFreqHz, int DemodTsInterfaceMode, int DemodAppMode, unsigned long DemodUpdateFuncRefPeriodMs, int DemodIsFunc1Enabled, unsigned char TunerDeviceAddr, // Tuner dependence unsigned long TunerCrystalFreqHz ) { DVBT_NIM_MODULE *pNim; RTL2832_FC0013_EXTRA_MODULE *pNimExtra; // Set NIM module pointer with NIM module memory. *ppNim = pDvbtNimModuleMemory; // Get NIM module. pNim = *ppNim; // Set I2C bridge module pointer with I2C bridge module memory. pNim->pI2cBridge = &pNim->I2cBridgeModuleMemory; // Get NIM extra module. pNimExtra = &(pNim->Extra.Rtl2832Fc0013); // Set NIM type. pNim->NimType = DVBT_NIM_RTL2832_FC0013; // Build base interface module. BuildBaseInterface( &pNim->pBaseInterface, &pNim->BaseInterfaceModuleMemory, I2cReadingByteNumMax, I2cWritingByteNumMax, I2cRead, I2cWrite, WaitMs ); // Build RTL2832 demod module. BuildRtl2832Module( &pNim->pDemod, &pNim->DvbtDemodModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, DemodDeviceAddr, DemodCrystalFreqHz, DemodTsInterfaceMode, DemodAppMode, DemodUpdateFuncRefPeriodMs, DemodIsFunc1Enabled ); // Build FC0013 tuner module. BuildFc0013Module( &pNim->pTuner, &pNim->TunerModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, TunerDeviceAddr, TunerCrystalFreqHz ); // Set NIM module function pointers with default functions. pNim->GetNimType = dvbt_nim_default_GetNimType; pNim->GetParameters = dvbt_nim_default_GetParameters; pNim->IsSignalPresent = dvbt_nim_default_IsSignalPresent; pNim->IsSignalLocked = dvbt_nim_default_IsSignalLocked; pNim->GetSignalStrength = dvbt_nim_default_GetSignalStrength; pNim->GetSignalQuality = dvbt_nim_default_GetSignalQuality; pNim->GetBer = dvbt_nim_default_GetBer; pNim->GetSnrDb = dvbt_nim_default_GetSnrDb; pNim->GetTrOffsetPpm = dvbt_nim_default_GetTrOffsetPpm; pNim->GetCrOffsetHz = dvbt_nim_default_GetCrOffsetHz; pNim->GetTpsInfo = dvbt_nim_default_GetTpsInfo; // Set NIM module function pointers with particular functions. pNim->Initialize = rtl2832_fc0013_Initialize; pNim->SetParameters = rtl2832_fc0013_SetParameters; pNim->UpdateFunction = rtl2832_fc0013_UpdateFunction; // Initialize NIM extra module variables. pNimExtra->LnaUpdateWaitTimeMax = DivideWithCeiling(RTL2832_FC0013_LNA_UPDATE_WAIT_TIME_MS, DemodUpdateFuncRefPeriodMs); pNimExtra->LnaUpdateWaitTime = 0; return; }
/** @brief RTL2836B DVBC VA1T1ED6093 NIM module builder Use BuildRtl2836bDvbcVa1t1ed6093Module() to build RTL2836B DVBC VA1T1ED6093 NIM module, set all module function pointers with the corresponding functions, and initialize module private variables. @param [in] ppNim Pointer to RTL2836B DVBC VA1T1ED6093 NIM module pointer @param [in] pQamNimModuleMemory Pointer to an allocated QAM NIM module memory @param [in] I2cReadingByteNumMax Maximum I2C reading byte number for basic I2C reading function @param [in] I2cWritingByteNumMax Maximum I2C writing byte number for basic I2C writing function @param [in] I2cRead Basic I2C reading function pointer @param [in] I2cWrite Basic I2C writing function pointer @param [in] WaitMs Basic waiting function pointer @param [in] DemodDeviceAddr RTL2836B DVBC I2C device address @param [in] DemodCrystalFreqHz RTL2836B DVBC crystal frequency in Hz @param [in] DemodTsInterfaceMode RTL2836B DVBC TS interface mode for setting @param [in] DemodEnhancementMode RTL2836B DVBC enhancement mode for setting @param [in] TunerDeviceAddr VA1T1ED6093 I2C device address @param [in] TunerCrystalFreqHz VA1T1ED6093 crystal frequency in Hz @note -# One should call BuildRtl2836bDvbcVa1t1ed6093Module() to build RTL2836B DVBC VA1T1ED6093 NIM module before using it. */ void BuildRtl2836bDvbcVa1t1ed6093Module( QAM_NIM_MODULE **ppNim, // QAM NIM dependence QAM_NIM_MODULE *pQamNimModuleMemory, unsigned long I2cReadingByteNumMax, // Base interface dependence unsigned long I2cWritingByteNumMax, BASE_FP_I2C_READ I2cRead, BASE_FP_I2C_WRITE I2cWrite, BASE_FP_WAIT_MS WaitMs, unsigned char DemodDeviceAddr, // Demod dependence unsigned long DemodCrystalFreqHz, int DemodTsInterfaceMode, int DemodEnhancementMode, unsigned char TunerDeviceAddr // Tuner dependence ) { QAM_NIM_MODULE *pNim; // Set NIM module pointer with NIM module memory. *ppNim = pQamNimModuleMemory; // Get NIM module. pNim = *ppNim; // Set I2C bridge module pointer with I2C bridge module memory. pNim->pI2cBridge = &pNim->I2cBridgeModuleMemory; // Set enhancement mode in NIM module. pNim->EnhancementMode = DemodEnhancementMode; // Build base interface module. BuildBaseInterface( &pNim->pBaseInterface, &pNim->BaseInterfaceModuleMemory, I2cReadingByteNumMax, I2cWritingByteNumMax, I2cRead, I2cWrite, WaitMs ); // Build RTL2836B DVBC QAM demod module. BuildRtl2836bDvbcModule( &pNim->pDemod, &pNim->QamDemodModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, DemodDeviceAddr, DemodCrystalFreqHz, DemodTsInterfaceMode, DemodEnhancementMode ); // Build VA1T1ED6093 tuner module. BuildVa1t1ed6093Module( &pNim->pTuner, &pNim->TunerModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, TunerDeviceAddr ); // Set NIM module manipulating function pointers. pNim->Initialize = rtl2836b_dvbc_va1t1ed6093_Initialize; pNim->SetParameters = rtl2836b_dvbc_va1t1ed6093_SetParameters; // Set NIM module manipulating function pointers with default. pNim->GetNimType = qam_nim_default_GetNimType; pNim->GetParameters = qam_nim_default_GetParameters; pNim->IsSignalPresent = qam_nim_default_IsSignalPresent; pNim->IsSignalLocked = qam_nim_default_IsSignalLocked; pNim->GetSignalStrength = qam_nim_default_GetSignalStrength; pNim->GetSignalQuality = qam_nim_default_GetSignalQuality; pNim->GetErrorRate = qam_nim_default_GetErrorRate; pNim->GetSnrDb = qam_nim_default_GetSnrDb; pNim->GetTrOffsetPpm = qam_nim_default_GetTrOffsetPpm; pNim->GetCrOffsetHz = qam_nim_default_GetCrOffsetHz; pNim->UpdateFunction = qam_nim_default_UpdateFunction; // Set NIM type. pNim->NimType = QAM_NIM_RTL2836B_DVBC_VA1T1ED6093; return; }
/** @brief RTL2840 MAX3543 NIM module builder Use BuildRtl2840Max3543Module() to build RTL2840 MAX3543 NIM module, set all module function pointers with the corresponding functions, and initialize module private variables. @param [in] ppNim Pointer to RTL2840 MAX3543 NIM module pointer @param [in] pQamNimModuleMemory Pointer to an allocated QAM NIM module memory @param [in] I2cReadingByteNumMax Maximum I2C reading byte number for basic I2C reading function @param [in] I2cWritingByteNumMax Maximum I2C writing byte number for basic I2C writing function @param [in] I2cRead Basic I2C reading function pointer @param [in] I2cWrite Basic I2C writing function pointer @param [in] WaitMs Basic waiting function pointer @param [in] DemodDeviceAddr RTL2840 I2C device address @param [in] DemodCrystalFreqHz RTL2840 crystal frequency in Hz @param [in] DemodTsInterfaceMode RTL2840 TS interface mode for setting @param [in] DemodEnhancementMode RTL2840 enhancement mode for setting @param [in] TunerDeviceAddr MAX3543 I2C device address @param [in] TunerCrystalFreqHz MAX3543 crystal frequency in Hz @note -# One should call BuildRtl2840Max3543Module() to build RTL2840 MAX3543 NIM module before using it. */ void BuildRtl2840Max3543Module( QAM_NIM_MODULE **ppNim, // QAM NIM dependence QAM_NIM_MODULE *pQamNimModuleMemory, u64 I2cReadingByteNumMax, // Base interface dependence u64 I2cWritingByteNumMax, BASE_FP_I2C_READ I2cRead, BASE_FP_I2C_WRITE I2cWrite, BASE_FP_WAIT_MS WaitMs, u8 DemodDeviceAddr, // Demod dependence u64 DemodCrystalFreqHz, s32 DemodTsInterfaceMode, s32 DemodEnhancementMode, u8 TunerDeviceAddr, // Tuner dependence u64 TunerCrystalFreqHz ) { QAM_NIM_MODULE *pNim; // Set NIM module pointer with NIM module memory. *ppNim = pQamNimModuleMemory; // Get NIM module. pNim = *ppNim; // Set I2C bridge module pointer with I2C bridge module memory. pNim->pI2cBridge = &pNim->I2cBridgeModuleMemory; // Set enhancement mode in NIM module. pNim->EnhancementMode = DemodEnhancementMode; // Build base interface module. BuildBaseInterface( &pNim->pBaseInterface, &pNim->BaseInterfaceModuleMemory, I2cReadingByteNumMax, I2cWritingByteNumMax, I2cRead, I2cWrite, WaitMs ); // Build RTL2840 QAM demod module. BuildRtl2840Module( &pNim->pDemod, &pNim->QamDemodModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, DemodDeviceAddr, DemodCrystalFreqHz, DemodTsInterfaceMode, DemodEnhancementMode ); // Build MAX3543 tuner module. BuildMax3543Module( &pNim->pTuner, &pNim->TunerModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, TunerDeviceAddr, TunerCrystalFreqHz, RTL2840_MAX3543_STANDARD_MODE_DEFAULT, RTL2840_MAX3543_IF_FREQ_HZ_DEFAULT, RTL2840_MAX3543_SAW_INPUT_TYPE_DEFAULT ); // Set NIM module manipulating function pointers. pNim->Initialize = rtl2840_max3543_Initialize; pNim->SetParameters = rtl2840_max3543_SetParameters; // Set NIM module manipulating function pointers with default. pNim->GetNimType = qam_nim_default_GetNimType; pNim->GetParameters = qam_nim_default_GetParameters; pNim->IsSignalPresent = qam_nim_default_IsSignalPresent; pNim->IsSignalLocked = qam_nim_default_IsSignalLocked; pNim->GetSignalStrength = qam_nim_default_GetSignalStrength; pNim->GetSignalQuality = qam_nim_default_GetSignalQuality; pNim->GetErrorRate = qam_nim_default_GetErrorRate; pNim->GetSnrDb = qam_nim_default_GetSnrDb; pNim->GetTrOffsetPpm = qam_nim_default_GetTrOffsetPpm; pNim->GetCrOffsetHz = qam_nim_default_GetCrOffsetHz; pNim->UpdateFunction = qam_nim_default_UpdateFunction; // Set NIM type. pNim->NimType = QAM_NIM_RTL2840_MAX3543; return; }
/** @brief RTL2840 MT2063 NIM module builder Use BuildRtl2840Mt2063Module() to build RTL2840 MT2063 NIM module, set all module function pointers with the corresponding functions, and initialize module private variables. @param [in] ppNim Pointer to RTL2840 MT2063 NIM module pointer @param [in] pQamNimModuleMemory Pointer to an allocated QAM NIM module memory @param [in] I2cReadingByteNumMax Maximum I2C reading byte number for basic I2C reading function @param [in] I2cWritingByteNumMax Maximum I2C writing byte number for basic I2C writing function @param [in] I2cRead Basic I2C reading function pointer @param [in] I2cWrite Basic I2C writing function pointer @param [in] WaitMs Basic waiting function pointer @param [in] DemodDeviceAddr RTL2840 I2C device address @param [in] DemodCrystalFreqHz RTL2840 crystal frequency in Hz @param [in] DemodTsInterfaceMode RTL2840 TS interface mode for setting @param [in] DemodEnhancementMode RTL2840 enhancement mode for setting @param [in] TunerDeviceAddr MT2063 I2C device address @note -# One should call BuildRtl2840Mt2063Module() to build RTL2840 MT2063 NIM module before using it. */ void BuildRtl2840Mt2063Module( QAM_NIM_MODULE **ppNim, // QAM NIM dependence QAM_NIM_MODULE *pQamNimModuleMemory, unsigned long NimIfFreqHz, unsigned long I2cReadingByteNumMax, // Base interface dependence unsigned long I2cWritingByteNumMax, BASE_FP_I2C_READ I2cRead, BASE_FP_I2C_WRITE I2cWrite, BASE_FP_WAIT_MS WaitMs, unsigned char DemodDeviceAddr, // Demod dependence unsigned long DemodCrystalFreqHz, int DemodTsInterfaceMode, int DemodEnhancementMode, unsigned char TunerDeviceAddr // Tuner dependence ) { QAM_NIM_MODULE *pNim; RTL2840_MT2063_EXTRA_MODULE *pNimExtra; // Set NIM module pointer with NIM module memory. *ppNim = pQamNimModuleMemory; // Get NIM module. pNim = *ppNim; // Set I2C bridge module pointer with I2C bridge module memory. pNim->pI2cBridge = &pNim->I2cBridgeModuleMemory; // Get NIM extra module. pNimExtra = &(pNim->Extra.Rtl2840Mt2063); // Build base interface module. BuildBaseInterface( &pNim->pBaseInterface, &pNim->BaseInterfaceModuleMemory, I2cReadingByteNumMax, I2cWritingByteNumMax, I2cRead, I2cWrite, WaitMs ); // Build RTL2840 QAM demod module. BuildRtl2840Module( &pNim->pDemod, &pNim->QamDemodModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, DemodDeviceAddr, DemodCrystalFreqHz, DemodTsInterfaceMode, DemodEnhancementMode ); // Build MT2063 tuner module. BuildMt2063Module( &pNim->pTuner, &pNim->TunerModuleMemory, &pNim->BaseInterfaceModuleMemory, &pNim->I2cBridgeModuleMemory, TunerDeviceAddr, // MT2063_STANDARD_QAM, MT2063_STANDARD_DVBT, MT2063_VGAGC_0X1 ); // Set NIM module manipulating function pointers. pNim->Initialize = rtl2840_mt2063_Initialize; pNim->SetParameters = rtl2840_mt2063_SetParameters; // Set NIM module manipulating function pointers with default. pNim->GetNimType = qam_nim_default_GetNimType; pNim->GetParameters = qam_nim_default_GetParameters; pNim->IsSignalPresent = qam_nim_default_IsSignalPresent; pNim->IsSignalLocked = qam_nim_default_IsSignalLocked; pNim->GetSignalStrength = qam_nim_default_GetSignalStrength; pNim->GetSignalQuality = qam_nim_default_GetSignalQuality; pNim->GetErrorRate = qam_nim_default_GetErrorRate; pNim->GetSnrDb = qam_nim_default_GetSnrDb; pNim->GetTrOffsetPpm = qam_nim_default_GetTrOffsetPpm; pNim->GetCrOffsetHz = qam_nim_default_GetCrOffsetHz; pNim->UpdateFunction = qam_nim_default_UpdateFunction; // Set NIM type. pNim->NimType = QAM_NIM_RTL2840_MT2063; // Set enhancement mode in NIM module. pNim->EnhancementMode = DemodEnhancementMode; // Set IF frequency variable in NIM extra module. pNimExtra->IfFreqHz = NimIfFreqHz; return; }