aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2005-04-25 14:37:54 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2005-04-25 14:37:54 +0000
commit949a07352f59a32a5ae00f30650a6d067ef59b77 (patch)
treef9c33061c2c112d751e9832e0b15410c922e818a /lib
parent9a236ba05f412b3f6853f54c5665cf0e5398d7d3 (diff)
downloadenigma2-949a07352f59a32a5ae00f30650a6d067ef59b77.tar.gz
enigma2-949a07352f59a32a5ae00f30650a6d067ef59b77.zip
do voltage and tone control in SEC_SEND_SEQUENCE on old api..sorry for this hack
Diffstat (limited to 'lib')
-rw-r--r--lib/dvb/frontend.cpp16
-rw-r--r--lib/dvb/idvb.h4
-rw-r--r--lib/dvb/sec.cpp20
3 files changed, 31 insertions, 9 deletions
diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp
index 411e118f..00886ee4 100644
--- a/lib/dvb/frontend.cpp
+++ b/lib/dvb/frontend.cpp
@@ -628,13 +628,23 @@ RESULT eDVBFrontend::sendDiseqc(const eDVBDiseqcCommand &diseqc)
eDebugNoNewLine("%02x ", diseqc.data[3+i]);
eDebug("");
- seq.continuousTone = SEC_TONE_OFF;
- seq.voltage = SEC_VOLTAGE_13;
+ seq.continuousTone = diseqc.tone == toneOn ? SEC_TONE_ON : SEC_TONE_OFF;
+ switch ( diseqc.voltage )
+ {
+ case voltageOff:
+ seq.voltage = SEC_VOLTAGE_OFF;
+ break;
+ case voltage13:
+ seq.voltage = SEC_VOLTAGE_13;
+ break;
+ case voltage18:
+ seq.voltage = SEC_VOLTAGE_18;
+ break;
+ }
seq.miniCommand = SEC_MINI_NONE;
seq.commands=&cmd;
seq.numCommands=1;
-
if ( ioctl(m_secfd, SEC_SEND_SEQUENCE, &seq) < 0 )
{
eDebug("SEC_SEND_SEQUENCE failed ( %m )");
diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h
index c201c1a4..a6533a9c 100644
--- a/lib/dvb/idvb.h
+++ b/lib/dvb/idvb.h
@@ -363,6 +363,10 @@ struct eDVBDiseqcCommand
{
int len;
__u8 data[MAX_DISEQC_LENGTH];
+#if HAVE_DVB_API_VERSION < 3
+ int tone;
+ int voltage;
+#endif
};
class iDVBSatelliteEquipmentControl;
diff --git a/lib/dvb/sec.cpp b/lib/dvb/sec.cpp
index 1555090c..a668ebe7 100644
--- a/lib/dvb/sec.cpp
+++ b/lib/dvb/sec.cpp
@@ -25,7 +25,7 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
{
int hi;
eDebug("(very) ugly and hardcoded eDVBSatelliteEquipmentControl");
-
+
if (sat.frequency > 11700000)
hi = 1;
else
@@ -50,24 +50,32 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
}
parm.u.qpsk.SYMBOLRATE = sat.symbol_rate;
- frontend.setVoltage((sat.polarisation == eDVBFrontendParametersSatellite::Polarisation::Vertical) ? iDVBFrontend::voltage13 : iDVBFrontend::voltage18);
-
eDVBDiseqcCommand diseqc;
-
+
+#if HAVE_DVB_API_VERSION < 3
+ diseqc.voltage = sat.polarisation == eDVBFrontendParametersSatellite::Polarisation::Vertical ? iDVBFrontend::voltage13 : iDVBFrontend::voltage18;
+ diseqc.tone = hi ? iDVBFrontend::toneOn : iDVBFrontend::toneOff;
+#else
+ frontend.setVoltage(sat.polarisation == eDVBFrontendParametersSatellite::Polarisation::Vertical ? iDVBFrontend::voltage13 : iDVBFrontend::voltage18);
+#endif
+
diseqc.len = 4;
diseqc.data[0] = 0xe0;
diseqc.data[1] = 0x10;
diseqc.data[2] = 0x38;
diseqc.data[3] = 0xF0;
-
+
if (hi)
diseqc.data[3] |= 1;
-
+
if (sat.polarisation == eDVBFrontendParametersSatellite::Polarisation::Horizontal)
diseqc.data[3] |= 2;
frontend.sendDiseqc(diseqc);
+
+#if HAVE_DVB_API_VERSION > 2
frontend.setTone(hi ? iDVBFrontend::toneOn : iDVBFrontend::toneOff);
+#endif
return 0;
}