eSecDebugNoSimulate("ret5 %d", ret);
}
- if (ret && rotor && curRotorPos != -1 && (direct_connected || satpos_depends_ptr == -1) ) // direct conntected or loopthrough!
+ if (ret && rotor && curRotorPos != -1)
ret -= abs(curRotorPos-sat.orbital_position);
eSecDebugNoSimulate("ret6 %d", ret);
iDVBFrontend *sec_fe=&frontend;
eDVBRegisteredFrontend *linked_fe = 0;
eDVBSatelliteDiseqcParameters::t_diseqc_mode diseqc_mode = di_param.m_diseqc_mode;
+ eDVBSatelliteSwitchParameters::t_voltage_mode voltage_mode = sw_param.m_voltage_mode;
+ bool diseqc13V = voltage_mode == eDVBSatelliteSwitchParameters::HV_13;
+
+ if (diseqc13V)
+ voltage_mode = eDVBSatelliteSwitchParameters::HV;
frontend.getData(eDVBFrontend::SATPOS_DEPENDS_PTR, satposDependPtr);
if (!(sat.polarisation & eDVBFrontendParametersSatellite::Polarisation::Vertical))
band |= 2;
- if ( sw_param.m_voltage_mode == eDVBSatelliteSwitchParameters::_14V
+ if ( voltage_mode == eDVBSatelliteSwitchParameters::_14V
|| ( sat.polarisation & eDVBFrontendParametersSatellite::Polarisation::Vertical
- && sw_param.m_voltage_mode == eDVBSatelliteSwitchParameters::HV ) )
+ && voltage_mode == eDVBSatelliteSwitchParameters::HV ) )
voltage = VOLTAGE(13);
- else if ( sw_param.m_voltage_mode == eDVBSatelliteSwitchParameters::_18V
+ else if ( voltage_mode == eDVBSatelliteSwitchParameters::_18V
|| ( !(sat.polarisation & eDVBFrontendParametersSatellite::Polarisation::Vertical)
- && sw_param.m_voltage_mode == eDVBSatelliteSwitchParameters::HV ) )
+ && voltage_mode == eDVBSatelliteSwitchParameters::HV ) )
voltage = VOLTAGE(18);
if ( (sw_param.m_22khz_signal == eDVBSatelliteSwitchParameters::ON)
|| ( sw_param.m_22khz_signal == eDVBSatelliteSwitchParameters::HILO && (band&1) ) )
sec_sequence.push_back( eSecCommand(eSecCommand::SET_TONE, iDVBFrontend::toneOff) );
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_CONT_TONE]) );
- if ( RotorCmd != -1 && RotorCmd != lastRotorCmd )
+ if (diseqc13V)
+ vlt = iDVBFrontend::voltage13;
+ else if ( RotorCmd != -1 && RotorCmd != lastRotorCmd )
{
if (rotor_param.m_inputpower_parameters.m_use)
vlt = VOLTAGE(18); // in input power mode set 18V for measure input power
bool turn_fast = need_turn_fast(rotor_param.m_inputpower_parameters.m_turning_speed);
eSecCommand::rotor cmd;
eSecCommand::pair compare;
- compare.voltage = VOLTAGE(18);
+ if (turn_fast)
+ compare.voltage = VOLTAGE(18);
+ else
+ compare.voltage = VOLTAGE(13);
compare.steps = +3;
sec_sequence.push_back( eSecCommand(eSecCommand::IF_VOLTAGE_GOTO, compare) );
sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, compare.voltage) );
// measure idle power values
- sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_VOLTAGE_CHANGE_BEFORE_MEASURE_IDLE_INPUTPOWER]) ); // wait 150msec after voltage change
- sec_sequence.push_back( eSecCommand(eSecCommand::MEASURE_IDLE_INPUTPOWER, 1) );
- compare.val = 1;
compare.steps = -2;
- sec_sequence.push_back( eSecCommand(eSecCommand::IF_MEASURE_IDLE_WAS_NOT_OK_GOTO, compare) );
- sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, VOLTAGE(13)) );
+ if (turn_fast) {
+ sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_VOLTAGE_CHANGE_BEFORE_MEASURE_IDLE_INPUTPOWER]) ); // wait 150msec after voltage change
+ sec_sequence.push_back( eSecCommand(eSecCommand::MEASURE_IDLE_INPUTPOWER, 1) );
+ compare.val = 1;
+ sec_sequence.push_back( eSecCommand(eSecCommand::IF_MEASURE_IDLE_WAS_NOT_OK_GOTO, compare) );
+ sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, VOLTAGE(13)) );
+ }
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_VOLTAGE_CHANGE_BEFORE_MEASURE_IDLE_INPUTPOWER]) ); // wait 150msec before measure
sec_sequence.push_back( eSecCommand(eSecCommand::MEASURE_IDLE_INPUTPOWER, 0) );
compare.val = 0;