+void eDVBFrontend::tuneLoop() // called by m_tuneTimer
+{
+ int delay=0;
+ if ( m_sec_sequence && m_sec_sequence.current() != m_sec_sequence.end() )
+ {
+ switch (m_sec_sequence.current()->cmd)
+ {
+ case eSecCommand::SLEEP:
+ delay = m_sec_sequence.current()->msec;
+ break;
+ case eSecCommand::SET_VOLTAGE:
+ setVoltage(m_sec_sequence.current()->voltage);
+ break;
+ case eSecCommand::SET_TONE:
+ setTone(m_sec_sequence.current()->tone);
+ break;
+ case eSecCommand::SEND_DISEQC:
+ sendDiseqc(m_sec_sequence.current()->diseqc);
+ break;
+ case eSecCommand::SEND_TONEBURST:
+ sendToneburst(m_sec_sequence.current()->toneburst);
+ break;
+ case eSecCommand::SET_FRONTEND:
+ setFrontend();
+ break;
+ case eSecCommand::IF_LOCK_GOTO:
+ case eSecCommand::IF_NOT_LOCK_GOTO:
+ default:
+ eDebug("unhandled sec command");
+ }
+ m_sec_sequence.current()++;
+ m_tuneTimer->start(delay,true);
+ }
+}
+
+void eDVBFrontend::setFrontend()
+{
+ eDebug("setting frontend..\n");
+ if (ioctl(m_fd, FE_SET_FRONTEND, &parm) == -1)
+ {
+ perror("FE_SET_FRONTEND failed");
+ return;
+ }
+
+ if (m_state != stateTuning)
+ {
+ m_tuning = 1;
+ m_state = stateTuning;
+ m_stateChanged(this);
+ }
+ m_timeout->start(5000, 1); // 5 sec timeout. TODO: symbolrate dependent
+}
+