/** \fn DVBChannel::ProbeTuningParams(DTVMultiplex&) const * \brief Fetches DTVMultiplex params from driver * * Note: Only updates tuning on success. * * \return true on success, false on failure */ bool DVBChannel::ProbeTuningParams(DTVMultiplex &tuning) const { QMutexLocker locker(&hw_lock); if (fd_frontend < 0) { LOG(VB_GENERAL, LOG_ERR, LOC + "Card not open!"); return false; } const DVBChannel *master = GetMasterLock(); if (master != this) { bool ok = master->ProbeTuningParams(tuning); ReturnMasterLock(master); return ok; } ReturnMasterLock(master); // if we're the master we don't need this lock.. if (diseqc_tree) { // TODO We need to implement the inverse of // lnb->GetIntermediateFrequency() for ProbeTuningParams() // to accurately reflect the frequency before LNB transform. return false; } if (tunerType == DTVTunerType::kTunerTypeDVBS2) { // TODO implement probing of tuning parameters with FE_GET_PROPERTY return false; } dvb_frontend_parameters params; if (ioctl(fd_frontend, FE_GET_FRONTEND, ¶ms) < 0) { LOG(VB_GENERAL, LOG_ERR, LOC + "Getting Frontend tuning parameters failed." + ENO); return false; } uint mplex = tuning.mplex; QString sistandard = tuning.sistandard; sistandard.detach(); tuning = dvbparams_to_dtvmultiplex(tunerType, params); tuning.mplex = mplex; tuning.sistandard = sistandard; return true; }
/** \fn DVBChannel::ProbeTuningParams(DTVMultiplex&) const * \brief Fetches DTVMultiplex params from driver * * Note: Only updates tuning on success. * * \return true on success, false on failure */ bool DVBChannel::ProbeTuningParams(DTVMultiplex &tuning) const { QMutexLocker locker(&hw_lock); if (fd_frontend < 0) { VERBOSE(VB_IMPORTANT, LOC_ERR + "Card not open!"); return false; } if (master) return master->ProbeTuningParams(tuning); if (diseqc_tree) { // TODO We need to implement the inverse of // lnb->GetIntermediateFrequency() for ProbeTuningParams() // to accurately reflect the frequency before LNB transform. return false; } if (tunerType == DTVTunerType::kTunerTypeDVBS2) { // TODO implement probing of tuning parameters with FE_GET_PROPERTY return false; } dvb_frontend_parameters params; if (ioctl(fd_frontend, FE_GET_FRONTEND, ¶ms) < 0) { VERBOSE(VB_IMPORTANT, LOC_ERR + "Getting Frontend tuning parameters failed." + ENO); return false; } uint mplex = tuning.mplex; QString sistandard = tuning.sistandard; sistandard.detach(); tuning = dvbparams_to_dtvmultiplex(tunerType, params); tuning.mplex = mplex; tuning.sistandard = sistandard; return true; }