diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-11-12 18:42:54 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-11-12 18:42:54 +0000 |
| commit | 99e6feec1546d5fa2ff8e5cdfdf84438db4281b3 (patch) | |
| tree | 3d52309c89f8345fcc8e77d0b0a0117cc7dac00c /lib/dvb | |
| parent | 233d539468f8a5b89782e9e92be224fcd7c21ab6 (diff) | |
| download | enigma2-99e6feec1546d5fa2ff8e5cdfdf84438db4281b3.tar.gz enigma2-99e6feec1546d5fa2ff8e5cdfdf84438db4281b3.zip | |
add possibility to set tuner priority for alternative services in Customize
menu (just with expert usage level)
Diffstat (limited to 'lib/dvb')
| -rw-r--r-- | lib/dvb/dvb.cpp | 35 | ||||
| -rw-r--r-- | lib/dvb/frontend.cpp | 2 | ||||
| -rw-r--r-- | lib/dvb/frontend.h | 3 |
3 files changed, 35 insertions, 5 deletions
diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index 03c2aab6..b7d278cc 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -597,14 +597,41 @@ int eDVBResourceManager::canAllocateFrontend(ePtr<iDVBFrontendParameters> &fepar return bestval; } +int tuner_type_channel_default(ePtr<iDVBChannelList> &channellist, const eDVBChannelID &chid) +{ + if (channellist) + { + ePtr<iDVBFrontendParameters> feparm; + if (!channellist->getChannelFrontendData(chid, feparm)) + { + int system; + if (!feparm->getSystem(system)) + { + switch(system) + { + case iDVBFrontend::feSatellite: + return 50000; + case iDVBFrontend::feCable: + return 40000; + case iDVBFrontend::feTerrestrial: + return 30000; + default: + break; + } + } + } + } + return 0; +} + int eDVBResourceManager::canAllocateChannel(const eDVBChannelID &channelid, const eDVBChannelID& ignore) { - int ret=30000; + int ret=0; if (m_cached_channel) { eDVBChannel *cache_chan = (eDVBChannel*)&(*m_cached_channel); if(channelid==cache_chan->getChannelID()) - return ret; + return tuner_type_channel_default(m_list, channelid); } /* first, check if a channel is already existing. */ @@ -615,7 +642,7 @@ int eDVBResourceManager::canAllocateChannel(const eDVBChannelID &channelid, cons if (i->m_channel_id == channelid) { // eDebug("found shared channel.."); - return ret; + return tuner_type_channel_default(m_list, channelid); } } @@ -685,14 +712,12 @@ int eDVBResourceManager::canAllocateChannel(const eDVBChannelID &channelid, cons if (!m_list) { eDebug("no channel list set!"); - ret = 0; goto error; } if (m_list->getChannelFrontendData(channelid, feparm)) { eDebug("channel not found!"); - ret = 0; goto error; } diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index 8b214130..6a26ae98 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -382,6 +382,8 @@ RESULT eDVBFrontendParameters::getHash(unsigned long &hash) const DEFINE_REF(eDVBFrontend); +int eDVBFrontend::PriorityOrder=0; + eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok) :m_enabled(false), m_type(-1), m_dvbid(fe), m_slotid(fe) ,m_fd(-1), m_need_rotor_workaround(false), m_sn(0), m_timeout(0), m_tuneTimer(0) diff --git a/lib/dvb/frontend.h b/lib/dvb/frontend.h index 2a180bab..5821e54d 100644 --- a/lib/dvb/frontend.h +++ b/lib/dvb/frontend.h @@ -97,6 +97,7 @@ class eDVBFrontend: public iDVBFrontend, public Object int readInputpower(); bool setSecSequencePos(int steps); void setRotorData(int pos, int cmd); + static int PriorityOrder; public: eDVBFrontend(int adap, int fe, int &ok); virtual ~eDVBFrontend(); @@ -126,6 +127,8 @@ public: int getDVBID() { return m_dvbid; } int getSlotID() { return m_slotid; } bool setSlotInfo(ePyObject obj); // get a tuple (slotid, slotdescr) + static void setTypePriorityOrder(int val) { PriorityOrder = val; } + static int getTypePriorityOrder() { return PriorityOrder; } int openFrontend(); int closeFrontend(); |
