if ( send_mask )
{
+ int vlt = iDVBFrontend::voltageOff;
eSecCommand::pair compare;
compare.steps = +3;
compare.tone = iDVBFrontend::toneOff;
sec_sequence.push_back( eSecCommand(eSecCommand::IF_TONE_GOTO, compare) );
sec_sequence.push_back( eSecCommand(eSecCommand::SET_TONE, iDVBFrontend::toneOff) );
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_CONT_TONE]) );
- compare.voltage = iDVBFrontend::voltageOff;
- compare.steps = +3;
- // the next is a check if voltage is switched off.. then we first set a voltage :)
- // else we set voltage after all diseqc stuff..
- sec_sequence.push_back( eSecCommand(eSecCommand::IF_NOT_VOLTAGE_GOTO, compare) );
if ( RotorCmd != -1 && RotorCmd != lastRotorCmd )
{
if (rotor_param.m_inputpower_parameters.m_use)
- compare.voltage = VOLTAGE(18); // in input power mode set 18V for measure input power
+ vlt = VOLTAGE(18); // in input power mode set 18V for measure input power
else
- compare.voltage = VOLTAGE(13); // in normal mode start turning with 13V
+ vlt = VOLTAGE(13); // in normal mode start turning with 13V
}
else
- compare.voltage = voltage;
+ vlt = voltage;
+
+ // check if voltage is already correct..
+ compare.voltage = vlt;
+ compare.steps = +7;
+ sec_sequence.push_back( eSecCommand(eSecCommand::IF_VOLTAGE_GOTO, compare) );
+
+ // check if voltage is disabled
+ compare.voltage = iDVBFrontend::voltageOff;
+ compare.steps = +4;
+ sec_sequence.push_back( eSecCommand(eSecCommand::IF_VOLTAGE_GOTO, compare) );
- sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, compare.voltage) );
+ // voltage is changed... use DELAY_AFTER_VOLTAGE_CHANGE_BEFORE_SWITCH_CMDS
+ sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, vlt) );
+ sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_VOLTAGE_CHANGE_BEFORE_SWITCH_CMDS]) );
+ sec_sequence.push_back( eSecCommand(eSecCommand::GOTO, +3) );
- // voltage was disabled..so we wait a longer time .. for normal switches 250ms should be enough
+ // voltage was disabled.. use DELAY_AFTER_ENABLE_VOLTAGE_BEFORE_SWITCH_CMDS
+ sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, vlt) );
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_ENABLE_VOLTAGE_BEFORE_SWITCH_CMDS]) );
for (int seq_repeat = 0; seq_repeat < (di_param.m_seq_repeat?2:1); ++seq_repeat)
x.addNotifier(lambda configElement: secClass.setParam(secClass.MOTOR_COMMAND_RETRIES, configElement.value))
config.sec.motor_command_retries = x
+ x = ConfigInteger(default=20, limits = (0, 9999))
+ x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_VOLTAGE_CHANGE_BEFORE_SWITCH_CMDS, configElement.value))
+ config.sec.delay_after_change_voltage_before_switch_command = x
+
# TODO add support for satpos depending nims to advanced nim configuration
# so a second/third/fourth cable from a motorized lnb can used behind a
# diseqc 1.0 / diseqc 1.1 / toneburst switch
("Delay between diseqc commands", config.sec.delay_between_diseqc_repeats),
("Delay after last diseqc command", config.sec.delay_after_last_diseqc_command),
("Delay after toneburst", config.sec.delay_after_toneburst),
+ ("Delay after change voltage before switch command", config.sec.delay_after_change_voltage_before_switch_command),
("Delay after enable voltage before switch command", config.sec.delay_after_enable_voltage_before_switch_command),
("Delay between switch and motor command", config.sec.delay_between_switch_and_motor_command),
("Delay after set voltage before measure motor power", config.sec.delay_after_voltage_change_before_measure_idle_inputpower),