if ( di_param.m_diseqc_mode == eDVBSatelliteDiseqcParameters::V1_2 ) // ROTOR
rotor = true;
- ret = 1000;
+ ret=10000;
+ if (rotor && curRotorPos != -1)
+ ret -= abs(curRotorPos-sat.orbital_position);
}
else
{
csw = band;
- ret = 2000;
+ ret = 15000;
}
while (linked_prev_ptr != -1) // check for linked tuners..
if ( send_mask )
{
+ 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, 15) );
- eSecCommand::pair compare;
compare.voltage = iDVBFrontend::voltageOff;
compare.steps = +4;
// the next is a check if voltage is switched off.. then we first set a voltage :)
sec_sequence.push_back( eSecCommand(eSecCommand::IF_VOLTAGE_GOTO, compare) );
compare.steps = +3;
sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, compare.voltage) );
- // voltage was disabled..so we wait a longer time .. for normal switches 200ms should be enough
- sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 200) );
+ // voltage was disabled..so we wait a longer time .. for normal switches 750ms should be enough
+ sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 750) );
for (int seq_repeat = 0; seq_repeat < (di_param.m_seq_repeat?2:1); ++seq_repeat)
{
if ( send_mask & 2 )
++loops;
- for ( int i=0; i < di_param.m_repeats; ++i )
- loops *= 2;
+ loops <<= di_param.m_repeats;
for ( int i = 0; i < loops;) // fill commands...
{
cmd=0x38;
if (cmd)
{
- static int delay = (120 - 54) / 2; // standard says 100msek between two repeated commands
+ int delay = di_param.m_repeats ? (120 - 54) / 2 : 120; // standard says 100msek between two repeated commands
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, delay) );
diseqc.data[2]=cmd;
diseqc.data[3]=(cmd==0x38) ? csw : ucsw;
if ( RotorCmd != -1 && RotorCmd != lastRotorCmd )
{
eSecCommand::pair compare;
- compare.voltage = iDVBFrontend::voltageOff;
- compare.steps = +4;
- // 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 (rotor_param.m_inputpower_parameters.m_use)
- sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, VOLTAGE(13)) ); // in normal mode start turning with 13V
- else
- sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, VOLTAGE(18)) ); // turn always with 18V
+ if (!send_mask)
+ {
+ compare.voltage = iDVBFrontend::voltageOff;
+ compare.steps = +4;
+ // 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) );
- // voltage was disabled..so we wait a longer time ..
- sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 500) );
- sec_sequence.push_back( eSecCommand(eSecCommand::GOTO, +7) ); // no need to send stop rotor cmd
+ if (rotor_param.m_inputpower_parameters.m_use)
+ sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, VOLTAGE(13)) ); // in normal mode start turning with 13V
+ else
+ sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, VOLTAGE(18)) ); // turn always with 18V
- if (send_mask)
- sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 750) ); // wait 750ms after send switch cmd
+ // voltage was disabled..so we wait a longer time ..
+ sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 750) );
+ sec_sequence.push_back( eSecCommand(eSecCommand::GOTO, +9) ); // no need to send stop rotor cmd and recheck voltage
+ }
else
- sec_sequence.push_back( eSecCommand(eSecCommand::GOTO, +1) );
+ {
+ sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 750) ); // wait 750ms after send switch cmd
+ sec_sequence.push_back( eSecCommand(eSecCommand::GOTO, +9) ); // no need to send stop rotor cmd and recheck voltage
+ }
eDVBDiseqcCommand diseqc;
diseqc.len = 3;
eSecCommand::rotor cmd;
eSecCommand::pair compare;
compare.voltage = VOLTAGE(18);
- compare.steps = +2;
+ 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, 200) ); // wait 200msec after voltage change
sec_sequence.push_back( eSecCommand(eSecCommand::MEASURE_IDLE_INPUTPOWER, 1) );
- compare.voltage = 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)) );
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 200) ); // wait 200msec before measure
sec_sequence.push_back( eSecCommand(eSecCommand::MEASURE_IDLE_INPUTPOWER, 0) );
- compare.voltage = 0;
+ compare.val = 0;
sec_sequence.push_back( eSecCommand(eSecCommand::IF_MEASURE_IDLE_WAS_NOT_OK_GOTO, compare) );
////////////////////////////
sec_sequence.push_back( eSecCommand(eSecCommand::SET_POWER_LIMITING_MODE, eSecCommand::modeStatic) );
eSecCommand::rotor cmd;
eSecCommand::pair compare;
compare.voltage = VOLTAGE(13);
- compare.steps = +2;
+ compare.steps = +3;
sec_sequence.push_back( eSecCommand(eSecCommand::IF_VOLTAGE_GOTO, compare) );
sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, compare.voltage) );
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 200) ); // wait 200msec after voltage change
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 2000) ); // wait 2 second before set high voltage
sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, voltage) );
+ compare.tone = tone;
+ sec_sequence.push_back( eSecCommand(eSecCommand::IF_TONE_GOTO, compare) );
sec_sequence.push_back( eSecCommand(eSecCommand::SET_TONE, tone) );
+ sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 15) );
sec_sequence.push_back( eSecCommand(eSecCommand::SET_FRONTEND) );
cmd.direction=1; // check for running rotor
sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, voltage) );
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 10) );
+ compare.tone = tone;
+ sec_sequence.push_back( eSecCommand(eSecCommand::IF_TONE_GOTO, compare) );
sec_sequence.push_back( eSecCommand(eSecCommand::SET_TONE, tone) );
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 15) );
}
PyObject *eDVBSatelliteEquipmentControl::get_exclusive_satellites(int tu1, int tu2)
{
- PyObject *ret=0;
+ ePyObject ret;
if (tu1 != tu2)
{
// check for rotor dependency
p1->m_frontend->getData(eDVBFrontend::SATPOS_DEPENDS_PTR, tmp1);
if (tmp1 != -1)
- p1 = (void*)tmp1;
+ p1 = (eDVBRegisteredFrontend*)tmp1;
p2->m_frontend->getData(eDVBFrontend::SATPOS_DEPENDS_PTR, tmp2);
if (tmp2 != -1)
- p2 = (void*)tmp2;
+ p2 = (eDVBRegisteredFrontend*)tmp2;
if (p1 != p2)
{
int tu1_mask = 1 << p1->m_frontend->getID(),