From: Andreas Monzner Date: Mon, 25 Apr 2005 14:37:54 +0000 (+0000) Subject: do voltage and tone control in SEC_SEND_SEQUENCE on old api..sorry for this hack X-Git-Tag: 2.6.0~5904 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/949a07352f59a32a5ae00f30650a6d067ef59b77 do voltage and tone control in SEC_SEND_SEQUENCE on old api..sorry for this hack --- 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; }