diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-03-11 17:19:57 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-03-11 17:19:57 +0000 |
| commit | cc89d218402e01a1dc381a50130c6e3581a3555f (patch) | |
| tree | 4682b33219cc79196d0fbaef9a61a7248bb7ef7a /lib/dvb | |
| parent | 9212670199a1ac1713c4386eeeaf7991e8cddf8f (diff) | |
| download | enigma2-cc89d218402e01a1dc381a50130c6e3581a3555f.tar.gz enigma2-cc89d218402e01a1dc381a50130c6e3581a3555f.zip | |
fix linked tuner
Diffstat (limited to 'lib/dvb')
| -rw-r--r-- | lib/dvb/frontend.cpp | 9 | ||||
| -rw-r--r-- | lib/dvb/sec.cpp | 11 |
2 files changed, 14 insertions, 6 deletions
diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index 7b71ca13..5d991a47 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -1454,6 +1454,8 @@ RESULT eDVBFrontend::tune(const iDVBFrontendParameters &where) { eDebug("(%d)tune", m_fe); + m_timeout->stop(); + int res=0; if (m_type == -1) @@ -1483,7 +1485,10 @@ RESULT eDVBFrontend::tune(const iDVBFrontendParameters &where) return -EINVAL; res=prepare_cable(feparm); if (!res) + { + m_sec_sequence.push_back( eSecCommand(eSecCommand::START_TUNE_TIMEOUT) ); m_sec_sequence.push_back( eSecCommand(eSecCommand::SET_FRONTEND) ); + } break; } case feTerrestrial: @@ -1496,7 +1501,10 @@ RESULT eDVBFrontend::tune(const iDVBFrontendParameters &where) } res=prepare_terrestrial(feparm); if (!res) + { + m_sec_sequence.push_back( eSecCommand(eSecCommand::START_TUNE_TIMEOUT) ); m_sec_sequence.push_back( eSecCommand(eSecCommand::SET_FRONTEND) ); + } break; } } @@ -1504,7 +1512,6 @@ RESULT eDVBFrontend::tune(const iDVBFrontendParameters &where) if (!res) // prepare ok { m_tuneTimer->start(0,true); - m_timeout->stop(); m_sec_sequence.current() = m_sec_sequence.begin(); if (m_state != stateTuning) diff --git a/lib/dvb/sec.cpp b/lib/dvb/sec.cpp index 23d386eb..b003e16d 100644 --- a/lib/dvb/sec.cpp +++ b/lib/dvb/sec.cpp @@ -243,6 +243,7 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA { eDVBSatelliteSwitchParameters &sw_param = sit->second; bool doSetVoltageToneFrontend = true; + bool doSetFrontend = true; int band=0, linked_to=-1, // linked tuner satpos_depends_to=-1, @@ -666,6 +667,7 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA else { // use normal turning mode doSetVoltageToneFrontend=false; + doSetFrontend=false; eSecCommand::rotor cmd; eSecCommand::pair compare; compare.voltage = VOLTAGE(13); @@ -711,10 +713,7 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA frontend.setData(1, ucsw); frontend.setData(2, di_param.m_toneburst_param); - if ( linked ) - return 0; - - if (doSetVoltageToneFrontend) + if (!linked && doSetVoltageToneFrontend) { eSecCommand::pair compare; compare.voltage = voltage; @@ -725,11 +724,13 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA sec_sequence.push_back( eSecCommand(eSecCommand::SET_TONE, tone) ); sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 15) ); + } + if (doSetFrontend) + { sec_sequence.push_back( eSecCommand(eSecCommand::START_TUNE_TIMEOUT) ); sec_sequence.push_back( eSecCommand(eSecCommand::SET_FRONTEND) ); } - frontend.setSecSequence(sec_sequence); return 0; |
