diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2008-03-20 17:20:32 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2008-03-20 17:20:32 +0000 |
| commit | 065b711cbc139cf1de47705e8df56b5bc04e2418 (patch) | |
| tree | a5ee992bb19696f2bdcec762077bd14ef53ec158 | |
| parent | 582dd432626828f91c3ebce75c60e7be39be8eb8 (diff) | |
| download | enigma2-065b711cbc139cf1de47705e8df56b5bc04e2418.tar.gz enigma2-065b711cbc139cf1de47705e8df56b5bc04e2418.zip | |
add support for dm8000 onboard tuner linking
| -rw-r--r-- | lib/dvb/frontend.h | 1 | ||||
| -rw-r--r-- | lib/dvb/sec.cpp | 23 | ||||
| -rw-r--r-- | lib/python/Components/NimManager.py | 10 |
3 files changed, 29 insertions, 5 deletions
diff --git a/lib/dvb/frontend.h b/lib/dvb/frontend.h index 41de874b..6055da0b 100644 --- a/lib/dvb/frontend.h +++ b/lib/dvb/frontend.h @@ -132,6 +132,7 @@ public: int openFrontend(); int closeFrontend(); + const char *getDescription() const { return m_description; } }; #endif // SWIG diff --git a/lib/dvb/sec.cpp b/lib/dvb/sec.cpp index ff3f9bd0..5db56b6a 100644 --- a/lib/dvb/sec.cpp +++ b/lib/dvb/sec.cpp @@ -814,6 +814,18 @@ RESULT eDVBSatelliteEquipmentControl::clear() //reset some tuner configuration for (eSmartPtrList<eDVBRegisteredFrontend>::iterator it(m_avail_frontends.begin()); it != m_avail_frontends.end(); ++it) { + int tmp; + if (!strcmp(it->m_frontend->getDescription(), "BCM4501 (internal)") && !it->m_frontend->getData(eDVBFrontend::LINKED_PREV_PTR, tmp) && tmp != -1) + { + FILE *f=fopen("/proc/stb/tsmux/lnb_b_input", "w"); + if (!f || fwrite("B", 1, 1, f) != 1) + eDebug("set /proc/stb/tsmux/lnb_b_input to B failed!! (%m)"); + else + { + eDebug("set /proc/stb/tsmux/lnb_b_input to B OK"); + fclose(f); + } + } it->m_frontend->setData(eDVBFrontend::SATPOS_DEPENDS_PTR, -1); it->m_frontend->setData(eDVBFrontend::LINKED_PREV_PTR, -1); it->m_frontend->setData(eDVBFrontend::LINKED_NEXT_PTR, -1); @@ -1257,6 +1269,17 @@ RESULT eDVBSatelliteEquipmentControl::setTunerLinked(int tu1, int tu2) { p1->m_frontend->setData(eDVBFrontend::LINKED_PREV_PTR, (int)p2); p2->m_frontend->setData(eDVBFrontend::LINKED_NEXT_PTR, (int)p1); + if (!strcmp(p1->m_frontend->getDescription(), p2->m_frontend->getDescription()) && !strcmp(p1->m_frontend->getDescription(), "BCM4501 (internal)")) + { + FILE *f=fopen("/proc/stb/tsmux/lnb_b_input", "w"); + if (!f || fwrite("A", 1, 1, f) != 1) + eDebug("set /proc/stb/tsmux/lnb_b_input to A failed!! (%m)"); + else + { + eDebug("set /proc/stb/tsmux/lnb_b_input to A OK"); + fclose(f); + } + } return 0; } } diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py index 5920166d..ec7d46fe 100644 --- a/lib/python/Components/NimManager.py +++ b/lib/python/Components/NimManager.py @@ -105,6 +105,11 @@ class SecConfigure: used_nim_slots = [ ] for slot in nim_slots: + if slot.type is not None: + used_nim_slots.append((slot.slot, slot.description, slot.config.configMode.value != "nothing" and True or False)) + eDVBResourceManager.getInstance().setFrontendSlotInformations(used_nim_slots) + + for slot in nim_slots: x = slot.slot nim = slot.config if slot.isCompatible("DVB-S"): @@ -119,11 +124,6 @@ class SecConfigure: self.setSatposDepends(sec, x, int(nim.satposDependsTo.value)) self.satposdepends[int(nim.satposDependsTo.value)]=x - if slot.type is not None: - used_nim_slots.append((slot.slot, slot.description, nim.configMode.value != "nothing" and True or False)) - - eDVBResourceManager.getInstance().setFrontendSlotInformations(used_nim_slots) - for slot in nim_slots: x = slot.slot nim = slot.config |
