DEFINE_REF(eDVBSatelliteEquipmentControl);
eDVBSatelliteEquipmentControl::eDVBSatelliteEquipmentControl()
+ :m_lnbidx(-1), m_curSat(m_lnbs[0].m_satellites.end())
{
- m_lnblist.push_back(eDVBSatelliteLNBParameters());
- eDVBSatelliteLNBParameters &lnb1_ref = m_lnblist.back();
- eDVBSatelliteDiseqcParameters &diseqc1_ref = lnb1_ref.m_diseqc_parameters;
-
-/*
- eDVBSatelliteRotorParameters &rotor_ref = lnb1_ref.m_rotor_parameters;
- eDVBSatelliteRotorParameters::eDVBSatelliteRotorInputpowerParameters &rotor_input_ref = rotor_ref.m_inputpower_parameters;
- eDVBSatelliteRotorParameters::eDVBSatelliteRotorGotoxxParameters &rotor_gotoxx_ref = rotor_ref.m_gotoxx_parameters;
-
- rotor_input_ref.m_use = true;
- rotor_input_ref.m_threshold = 50;
-
- rotor_gotoxx_ref.m_can_use = true;
- rotor_gotoxx_ref.m_lo_direction = eDVBSatelliteRotorParameters::EAST;
- rotor_gotoxx_ref.m_la_direction = eDVBSatelliteRotorParameters::NORTH;
- rotor_gotoxx_ref.m_longitude = 8.683;
- rotor_gotoxx_ref.m_latitude = 51.017;*/
-
- lnb1_ref.m_lof_hi = 10600000;
- lnb1_ref.m_lof_lo = 9750000;
- lnb1_ref.m_lof_threshold = 11700000;
-
- diseqc1_ref.m_diseqc_mode = eDVBSatelliteDiseqcParameters::V1_0;
- diseqc1_ref.m_committed_cmd = eDVBSatelliteDiseqcParameters::AA;
- diseqc1_ref.m_repeats = 0;
- diseqc1_ref.m_seq_repeat = false;
- diseqc1_ref.m_swap_cmds = false;
- diseqc1_ref.m_toneburst_param = eDVBSatelliteDiseqcParameters::NO;
- diseqc1_ref.m_uncommitted_cmd = 0;
- diseqc1_ref.m_use_fast = 0;
-
- eDVBSatelliteSwitchParameters &astra_ref = lnb1_ref.m_satellites[192];
- astra_ref.m_22khz_signal = eDVBSatelliteSwitchParameters::HILO;
- astra_ref.m_voltage_mode = eDVBSatelliteSwitchParameters::HV;
-
+ clear();
+
+#undef ROTOR
+
+// ASTRA
+ addLNB();
+ setLNBTunerMask(1);
+ setLNBLOFL(9750000);
+ setLNBThreshold(11750000);
+#ifdef ROTOR
+ setLNBLOFH(10600000);
+ setDiSEqCMode(eDVBSatelliteDiseqcParameters::V1_2);
+#else
+ setLNBLOFH(10607000);
+ setDiSEqCMode(eDVBSatelliteDiseqcParameters::V1_0);
+#endif
+ setToneburst(eDVBSatelliteDiseqcParameters::NO);
+ setRepeats(0);
+#ifdef ROTOR
+ setCommittedCommand(eDVBSatelliteDiseqcParameters::AA);
+#else
+ setCommittedCommand(eDVBSatelliteDiseqcParameters::BB);
+#endif
+ setCommandOrder(0); // committed, toneburst
+ setFastDiSEqC(true);
+#ifdef ROTOR
+ setLongitude(8.683);
+ setLatitude(51.017);
+ setLoDirection(eDVBSatelliteRotorParameters::EAST);
+ setLaDirection(eDVBSatelliteRotorParameters::NORTH);
+ setUseInputpower(true);
+ setInputpowerDelta(50);
+#endif
+ addSatellite(192);
+ setVoltageMode(eDVBSatelliteSwitchParameters::HV);
+ setToneMode(eDVBSatelliteSwitchParameters::HILO);
+#ifdef ROTOR
+ setRotorPosNum(0); // use gotoXX
+#else
// HOTBIRD
-
- m_lnblist.push_back(eDVBSatelliteLNBParameters());
- eDVBSatelliteLNBParameters &lnb2_ref = m_lnblist.back();
- eDVBSatelliteDiseqcParameters &diseqc2_ref = lnb2_ref.m_diseqc_parameters;
-
- lnb2_ref.m_lof_hi = 10600000;
- lnb2_ref.m_lof_lo = 9750000;
- lnb2_ref.m_lof_threshold = 11700000;
-
- diseqc2_ref.m_diseqc_mode = eDVBSatelliteDiseqcParameters::V1_0;
- diseqc2_ref.m_committed_cmd = eDVBSatelliteDiseqcParameters::AB;
- diseqc2_ref.m_repeats = 0;
- diseqc2_ref.m_seq_repeat = false;
- diseqc2_ref.m_swap_cmds = false;
- diseqc1_ref.m_toneburst_param = eDVBSatelliteDiseqcParameters::NO;
- diseqc2_ref.m_uncommitted_cmd = 0;
- diseqc2_ref.m_use_fast = 0;
-
- eDVBSatelliteSwitchParameters &hotbird_ref = lnb2_ref.m_satellites[130];
- hotbird_ref.m_22khz_signal = eDVBSatelliteSwitchParameters::HILO;
- hotbird_ref.m_voltage_mode = eDVBSatelliteSwitchParameters::HV;
+ addLNB();
+ setLNBTunerMask(1);
+ setLNBLOFL(9750000);
+ setLNBLOFH(10600000);
+ setLNBThreshold(11750000);
+ setDiSEqCMode(eDVBSatelliteDiseqcParameters::V1_0);
+ setToneburst(eDVBSatelliteDiseqcParameters::NO);
+ setRepeats(0);
+ setCommittedCommand(eDVBSatelliteDiseqcParameters::AB);
+ setCommandOrder(0); // committed, toneburst
+ setFastDiSEqC(true);
+#endif
+ addSatellite(130);
+ setVoltageMode(eDVBSatelliteSwitchParameters::HV);
+ setToneMode(eDVBSatelliteSwitchParameters::HILO);
+#ifdef ROTOR
+ setRotorPosNum(0); // use gotoXX
+#endif
}
RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPARAMETERS &parm, eDVBFrontendParametersSatellite &sat)
{
- std::list<eDVBSatelliteLNBParameters>::iterator it = m_lnblist.begin();
- for (;it != m_lnblist.end(); ++it )
+ for (int idx=0; idx <= m_lnbidx; ++idx )
{
- eDVBSatelliteLNBParameters &lnb_param = *it;
+ eDVBSatelliteLNBParameters &lnb_param = m_lnbs[idx];
eDVBSatelliteDiseqcParameters &di_param = lnb_param.m_diseqc_parameters;
eDVBSatelliteRotorParameters &rotor_param = lnb_param.m_rotor_parameters;
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 50) );
}
+ if ( di_param.m_command_order & 1 && // toneburst at begin of sequence
+ changed_burst && di_param.m_toneburst_param != eDVBSatelliteDiseqcParameters::NO )
+ {
+ sec_sequence.push_back( eSecCommand(eSecCommand::SEND_TONEBURST, di_param.m_toneburst_param) );
+ sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 50) );
+ frontend.setData(2, di_param.m_toneburst_param);
+ }
+
if ( send_diseqc )
{
int loops=0;
diseqc.data[0] = i ? 0xE1 : 0xE0;
diseqc.data[1] = 0x10;
- if ( !send_csw || (di_param.m_swap_cmds && send_ucsw) )
+ if ( !send_csw || (send_ucsw && (di_param.m_command_order & 4) ) )
{
diseqc.data[2] = 0x39;
diseqc.data[3] = ucsw;
if ( i < loops )
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, delay ) );
else
- sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 30) );
+ sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 50) );
}
else // delay 120msek when no command is in repeat gap
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 120) );
}
else
- sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 30) );
+ sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 50) );
frontend.setData(0, csw);
frontend.setData(1, ucsw);
}
}
- if ( (changed_burst || send_diseqc) && di_param.m_toneburst_param != eDVBSatelliteDiseqcParameters::NO )
+
+ if ( !(di_param.m_command_order & 1) && // toneburst at end of sequence
+ (changed_burst || send_diseqc) && di_param.m_toneburst_param != eDVBSatelliteDiseqcParameters::NO )
{
sec_sequence.push_back( eSecCommand(eSecCommand::SEND_TONEBURST, di_param.m_toneburst_param) );
- sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 30) );
+ sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 50) );
frontend.setData(2, di_param.m_toneburst_param);
}
+
if ( di_param.m_diseqc_mode == eDVBSatelliteDiseqcParameters::V1_2 )
{
int RotorCmd=0;
bool useGotoXX = false;
- std::map<int,int,eDVBSatelliteRotorParameters::Orbital_Position_Compare>::iterator it =
- rotor_param.m_rotor_position_table.find( sat.orbital_position );
-
- if (it != rotor_param.m_rotor_position_table.end()) // position for selected sat found ?
- RotorCmd=it->second;
- else // entry not in table found
+ if (sw_param.m_rotorPosNum) // we have stored rotor pos?
+ RotorCmd=sw_param.m_rotorPosNum;
+ else // we must calc gotoxx cmd
{
eDebug("Entry for %d,%d° not in Rotor Table found... i try gotoXX°", sat.orbital_position / 10, sat.orbital_position % 10 );
useGotoXX = true;
sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 50) ); // 50msec delay
sec_sequence.push_back( eSecCommand(eSecCommand::MEASURE_RUNNING_INPUTPOWER) );
cmd.direction=1; // check for running rotor
- cmd.deltaA=rotor_param.m_inputpower_parameters.m_threshold;
+ cmd.deltaA=rotor_param.m_inputpower_parameters.m_delta;
cmd.steps=+3;
cmd.okcount=0;
sec_sequence.push_back( eSecCommand(eSecCommand::IF_INPUTPOWER_DELTA_GOTO, cmd ) ); // check if rotor has started
return -1;
}
+RESULT eDVBSatelliteEquipmentControl::clear()
+{
+ for (int i=0; i < m_lnbidx; ++i)
+ {
+ m_lnbs[i].m_satellites.clear();
+ m_lnbs[i].tuner_mask = 0;
+ }
+ m_lnbidx=-1;
+ return 0;
+}
+
+/* LNB Specific Parameters */
+RESULT eDVBSatelliteEquipmentControl::addLNB()
+{
+ if ( m_lnbidx < (int)(sizeof(m_lnbs) / sizeof(eDVBSatelliteLNBParameters)))
+ m_curSat=m_lnbs[++m_lnbidx].m_satellites.end();
+ else
+ {
+ eDebug("no more LNB free... cnt is %d", m_lnbidx);
+ return -ENOSPC;
+ }
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setLNBTunerMask(int tunermask)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].tuner_mask = tunermask;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setLNBLOFL(int lofl)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_lof_lo = lofl;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setLNBLOFH(int lofh)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_lof_hi = lofh;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setLNBThreshold(int threshold)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_lof_threshold = threshold;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setLNBIncreasedVoltage(bool onoff)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_increased_voltage = onoff;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+/* DiSEqC Specific Parameters */
+RESULT eDVBSatelliteEquipmentControl::setDiSEqCMode(int diseqcmode)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_diseqc_parameters.m_diseqc_mode = (eDVBSatelliteDiseqcParameters::t_diseqc_mode)diseqcmode;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setToneburst(int toneburst)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_diseqc_parameters.m_toneburst_param = (eDVBSatelliteDiseqcParameters::t_toneburst_param)toneburst;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setRepeats(int repeats)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_diseqc_parameters.m_repeats=repeats;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setCommittedCommand(int command)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_diseqc_parameters.m_committed_cmd=command;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setUncommittedCommand(int command)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_diseqc_parameters.m_uncommitted_cmd = command;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setCommandOrder(int order)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_diseqc_parameters.m_command_order=order;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setFastDiSEqC(bool onoff)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_diseqc_parameters.m_use_fast=onoff;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+/* Rotor Specific Parameters */
+RESULT eDVBSatelliteEquipmentControl::setLongitude(float longitude)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_rotor_parameters.m_gotoxx_parameters.m_longitude=longitude;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setLatitude(float latitude)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_rotor_parameters.m_gotoxx_parameters.m_latitude=latitude;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setLoDirection(int direction)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_rotor_parameters.m_gotoxx_parameters.m_lo_direction=direction;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setLaDirection(int direction)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_rotor_parameters.m_gotoxx_parameters.m_la_direction=direction;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setUseInputpower(bool onoff)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_rotor_parameters.m_inputpower_parameters.m_use=onoff;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setInputpowerDelta(int delta)
+{
+ if ( currentLNBValid() )
+ m_lnbs[m_lnbidx].m_rotor_parameters.m_inputpower_parameters.m_delta=delta;
+ else
+ return -ENOENT;
+ return 0;
+}
+
+/* Satellite Specific Parameters */
+RESULT eDVBSatelliteEquipmentControl::addSatellite(int orbital_position)
+{
+ if ( currentLNBValid() )
+ {
+ std::map<int, eDVBSatelliteSwitchParameters>::iterator it =
+ m_lnbs[m_lnbidx].m_satellites.find(orbital_position);
+ if ( it == m_lnbs[m_lnbidx].m_satellites.end() )
+ {
+ std::pair<std::map<int, eDVBSatelliteSwitchParameters>::iterator, bool > ret =
+ m_lnbs[m_lnbidx].m_satellites.insert(
+ std::pair<int, eDVBSatelliteSwitchParameters>(orbital_position, eDVBSatelliteSwitchParameters())
+ );
+ if ( ret.second )
+ m_curSat = ret.first;
+ else
+ return -ENOMEM;
+ }
+ else
+ return -EEXIST;
+ }
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setVoltageMode(int mode)
+{
+ if ( currentLNBValid() && m_curSat != m_lnbs[m_lnbidx].m_satellites.end() )
+ m_curSat->second.m_voltage_mode = (eDVBSatelliteSwitchParameters::t_voltage_mode)mode;
+ else
+ return -ENOENT;
+ return 0;
+
+}
+
+RESULT eDVBSatelliteEquipmentControl::setToneMode(int mode)
+{
+ if ( currentLNBValid() )
+ {
+ if ( m_curSat != m_lnbs[m_lnbidx].m_satellites.end() )
+ m_curSat->second.m_22khz_signal = (eDVBSatelliteSwitchParameters::t_22khz_signal)mode;
+ else
+ return -EPERM;
+ }
+ else
+ return -ENOENT;
+ return 0;
+}
+
+RESULT eDVBSatelliteEquipmentControl::setRotorPosNum(int rotor_pos_num)
+{
+ if ( currentLNBValid() )
+ {
+ if ( m_curSat != m_lnbs[m_lnbidx].m_satellites.end() )
+ m_curSat->second.m_rotorPosNum=rotor_pos_num;
+ else
+ return -EPERM;
+ }
+ else
+ return -ENOENT;
+ return 0;
+}
{
public:
enum { AA=0, AB=1, BA=2, BB=3, SENDNO=4 /* and 0xF0 .. 0xFF*/ }; // DiSEqC Parameter
- int m_committed_cmd;
+ __u8 m_committed_cmd;
enum t_diseqc_mode { NONE=0, V1_0=1, V1_1=2, V1_2=3, SMATV=4 }; // DiSEqC Mode
t_diseqc_mode m_diseqc_mode;
enum t_toneburst_param { NO=0, A=1, B=2 };
t_toneburst_param m_toneburst_param;
- int m_repeats; // for cascaded switches
+ __u8 m_repeats; // for cascaded switches
bool m_use_fast; // send no DiSEqC on H/V or Lo/Hi change
bool m_seq_repeat; // send the complete DiSEqC Sequence twice...
- bool m_swap_cmds; // swaps the committed & uncommitted cmd
- int m_uncommitted_cmd; // state of the 4 uncommitted switches..
+ __u8 m_command_order;
+ /* diseqc 1.0)
+ 0) commited, toneburst
+ 1) toneburst, committed
+ diseqc > 1.0)
+ 2) committed, uncommitted, toneburst
+ 3) toneburst, committed, uncommitted
+ 4) uncommitted, committed, toneburst
+ 5) toneburst, uncommitted, committed */
+ __u8 m_uncommitted_cmd; // state of the 4 uncommitted switches..
};
class eDVBSatelliteSwitchParameters
enum t_voltage_mode { HV=0, _14V=1, _18V=2, _0V=3 }; // 14/18 V
t_voltage_mode m_voltage_mode;
t_22khz_signal m_22khz_signal;
+ __u8 m_rotorPosNum; // 0 is disable.. then use gotoxx
};
class eDVBSatelliteRotorParameters
public:
enum { NORTH, SOUTH, EAST, WEST };
+ eDVBSatelliteRotorParameters() { setDefaultOptions(); }
+
struct eDVBSatelliteRotorInputpowerParameters
{
bool m_use; // can we use rotor inputpower to detect rotor running state ?
- int m_threshold; // threshold between running and stopped rotor
+ __u8 m_delta; // delta between running and stopped rotor
};
eDVBSatelliteRotorInputpowerParameters m_inputpower_parameters;
struct eDVBSatelliteRotorGotoxxParameters
{
- bool m_can_use; // rotor support gotoXX cmd ?
- int m_lo_direction; // EAST, WEST
- int m_la_direction; // NORT, SOUTH
+ __u8 m_lo_direction; // EAST, WEST
+ __u8 m_la_direction; // NORT, SOUTH
double m_longitude; // longitude for gotoXX° function
double m_latitude; // latitude for gotoXX° function
};
eDVBSatelliteRotorGotoxxParameters m_gotoxx_parameters;
- struct Orbital_Position_Compare
- {
- inline bool operator()(const int &i1, const int &i2) const
- {
- return abs(i1-i2) < 6 ? false: i1 < i2;
- }
- };
- std::map< int, int, Orbital_Position_Compare > m_rotor_position_table;
- /* mapping orbitalposition <-> number stored in rotor */
-
void setDefaultOptions() // set default rotor options
{
m_inputpower_parameters.m_use = true;
- m_inputpower_parameters.m_threshold = 60;
- m_gotoxx_parameters.m_can_use = true;
+ m_inputpower_parameters.m_delta = 60;
m_gotoxx_parameters.m_lo_direction = EAST;
m_gotoxx_parameters.m_la_direction = NORTH;
m_gotoxx_parameters.m_longitude = 0.0;
enum t_12V_relais_state { OFF=0, ON };
t_12V_relais_state m_12V_relais_state; // 12V relais output on/off
+ __u8 tuner_mask; // useable by tuner ( 1 | 2 | 4...)
+
unsigned int m_lof_hi, // for 2 band universal lnb 10600 Mhz (high band offset frequency)
m_lof_lo, // for 2 band universal lnb 9750 Mhz (low band offset frequency)
m_lof_threshold; // for 2 band universal lnb 11750 Mhz (band switch frequency)
class eDVBSatelliteEquipmentControl: public iDVBSatelliteEquipmentControl
{
- std::list<eDVBSatelliteLNBParameters> m_lnblist;
+ eDVBSatelliteLNBParameters m_lnbs[128]; // i think its enough
+ int m_lnbidx; // current index for set parameters
+ std::map<int, eDVBSatelliteSwitchParameters>::iterator m_curSat;
public:
DECLARE_REF(eDVBSatelliteEquipmentControl);
eDVBSatelliteEquipmentControl();
RESULT prepare(iDVBFrontend &frontend, FRONTENDPARAMETERS &parm, eDVBFrontendParametersSatellite &sat);
+
+ bool currentLNBValid() { return m_lnbidx > -1 && m_lnbidx < (int)(sizeof(m_lnbs) / sizeof(eDVBSatelliteLNBParameters)); }
+ RESULT clear();
+/* LNB Specific Parameters */
+ RESULT addLNB();
+ RESULT setLNBTunerMask(int tunermask);
+ RESULT setLNBLOFL(int lofl);
+ RESULT setLNBLOFH(int lofh);
+ RESULT setLNBThreshold(int threshold);
+ RESULT setLNBIncreasedVoltage(bool onoff);
+/* DiSEqC Specific Parameters */
+ RESULT setDiSEqCMode(int diseqcmode);
+ RESULT setToneburst(int toneburst);
+ RESULT setRepeats(int repeats);
+ RESULT setCommittedCommand(int command);
+ RESULT setUncommittedCommand(int command);
+ RESULT setCommandOrder(int order);
+ RESULT setFastDiSEqC(bool onoff);
+/* Rotor Specific Parameters */
+ RESULT setLongitude(float longitude);
+ RESULT setLatitude(float latitude);
+ RESULT setLoDirection(int direction);
+ RESULT setLaDirection(int direction);
+ RESULT setUseInputpower(bool onoff);
+ RESULT setInputpowerDelta(int delta); // delta between running and stopped rotor
+/* Satellite Specific Parameters */
+ RESULT addSatellite(int orbital_position);
+ RESULT setVoltageMode(int mode);
+ RESULT setToneMode(int mode);
+ RESULT setRotorPosNum(int rotor_pos_num);
};
#endif