m_fd=-1;
else
eWarning("couldnt close frontend %d", m_dvbid);
- m_data[CSW] = m_data[UCSW] = m_data[TONEBURST] = -1;
}
#if HAVE_DVB_API_VERSION < 3
if (m_secfd >= 0)
else
++m_sec_sequence.current();
break;
+ case eSecCommand::INVALIDATE_CURRENT_SWITCHPARMS:
+ eDebug("[SEC] invalidate current switch params");
+ sec_fe_data[CSW] = -1;
+ sec_fe_data[UCSW] = -1;
+ sec_fe_data[TONEBURST] = -1;
+ ++m_sec_sequence.current();
+ break;
+ case eSecCommand::UPDATE_CURRENT_SWITCHPARMS:
+ sec_fe_data[CSW] = sec_fe_data[NEW_CSW];
+ sec_fe_data[UCSW] = sec_fe_data[NEW_UCSW];
+ sec_fe_data[TONEBURST] = sec_fe_data[NEW_TONEBURST];
+ eDebug("[SEC] update current switch params");
+ ++m_sec_sequence.current();
+ break;
case eSecCommand::INVALIDATE_CURRENT_ROTORPARMS:
eDebug("[SEC] invalidate current rotorparams");
sec_fe_data[ROTOR_CMD] = -1;
{
public:
enum {
+ NEW_CSW,
+ NEW_UCSW,
+ NEW_TONEBURST,
CSW, // state of the committed switch
UCSW, // state of the uncommitted switch
TONEBURST, // current state of toneburst switch
// check if voltage is disabled
compare.voltage = iDVBFrontend::voltageOff;
- compare.steps = +4;
+ compare.steps = +5;
sec_sequence.push_back( eSecCommand(eSecCommand::IF_VOLTAGE_GOTO, compare) );
+ sec_sequence.push_back( eSecCommand(eSecCommand::INVALIDATE_CURRENT_SWITCHPARMS) );
// voltage is changed... use DELAY_AFTER_VOLTAGE_CHANGE_BEFORE_SWITCH_CMDS
sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, vlt) );
}
}
else
+ {
+ sec_sequence.push_back( eSecCommand(eSecCommand::INVALIDATE_CURRENT_SWITCHPARMS) );
csw = band;
+ }
- sec_fe->setData(eDVBFrontend::CSW, csw);
- sec_fe->setData(eDVBFrontend::UCSW, ucsw);
- sec_fe->setData(eDVBFrontend::TONEBURST, di_param.m_toneburst_param);
+ sec_fe->setData(eDVBFrontend::NEW_CSW, csw);
+ sec_fe->setData(eDVBFrontend::NEW_UCSW, ucsw);
+ sec_fe->setData(eDVBFrontend::NEW_TONEBURST, di_param.m_toneburst_param);
if (doSetVoltageToneFrontend)
{
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_CONT_TONE]) );
}
+ sec_sequence.push_back( eSecCommand(eSecCommand::UPDATE_CURRENT_SWITCHPARMS) );
+
if (doSetFrontend)
{
sec_sequence.push_back( eSecCommand(eSecCommand::START_TUNE_TIMEOUT, tunetimeout) );
MEASURE_IDLE_INPUTPOWER, MEASURE_RUNNING_INPUTPOWER,
IF_MEASURE_IDLE_WAS_NOT_OK_GOTO, IF_INPUTPOWER_DELTA_GOTO,
UPDATE_CURRENT_ROTORPARAMS, INVALIDATE_CURRENT_ROTORPARMS,
+ UPDATE_CURRENT_SWITCHPARMS, INVALIDATE_CURRENT_SWITCHPARMS,
IF_ROTORPOS_VALID_GOTO,
IF_TUNER_LOCKED_GOTO,
IF_TONE_GOTO, IF_NOT_TONE_GOTO,