#if HAVE_DVB_API_VERSION < 3
#include <ost/frontend.h>
#include <ost/sec.h>
+#define QAM_AUTO (Modulation)6
+#define TRANSMISSION_MODE_AUTO (TransmitMode)2
+#define BANDWIDTH_AUTO (BandWidth)3
+#define GUARD_INTERVAL_AUTO (GuardInterval)4
+#define HIERARCHY_AUTO (Hierarchy)4
+#define constellation Constellation
+#define guard_interval guardInterval
+#define hierarchy_information HierarchyInformation
+#define code_rate_HP HP_CodeRate
+#define code_rate_LP LP_CodeRate
#else
#include <linux/dvb/frontend.h>
#endif
ok = 0;
return;
}
- eDebug("detected %s frontend", "satellite\0cable\0 terrestrial"+feSatellite*9);
+ eDebug("detected %s frontend", "satellite\0cable\0 terrestrial"+fe_info.type*9);
ok = 1;
m_sn = new eSocketNotifier(eApp, m_fd, eSocketNotifier::Read);
if (m_type == -1)
return -ENODEV;
-#if HAVE_DVB_API_VERSION < 3
- FrontendParameters parm;
-#else
- dvb_frontend_parameters parm;
-#endif
+ FRONTENDPARAMETERS parm;
feEvent(-1);
+ eDebug("eDVBFrontend::tune. type: %d", m_type);
+
switch (m_type)
{
case feSatellite:
{
eDVBFrontendParametersTerrestrial feparm;
if (where.getDVBT(feparm))
+ {
+ eDebug("no -T data");
+ return -EINVAL;
+ }
+#if HAVE_DVB_API_VERSION < 3
+ parm.Frequency = feparm.frequency;
+#else
+ parm.frequency = feparm.frequency;
+#endif
+
+ switch (feparm.bandwidth)
+ {
+ case eDVBFrontendParametersTerrestrial::Bandwidth::Bw8MHz:
+#if HAVE_DVB_API_VERSION < 3
+ parm.u.ofdm.bandWidth =
+#else
+ parm.u.ofdm.bandwidth =
+#endif
+ BANDWIDTH_8_MHZ;
+ break;
+ case eDVBFrontendParametersTerrestrial::Bandwidth::Bw7MHz:
+#if HAVE_DVB_API_VERSION < 3
+ parm.u.ofdm.bandWidth =
+#else
+ parm.u.ofdm.bandwidth =
+#endif
+ BANDWIDTH_7_MHZ;
+ break;
+ case eDVBFrontendParametersTerrestrial::Bandwidth::Bw6MHz:
+#if HAVE_DVB_API_VERSION < 3
+ parm.u.ofdm.bandWidth =
+#else
+ parm.u.ofdm.bandwidth =
+#endif
+ BANDWIDTH_6_MHZ;
+ break;
+ case eDVBFrontendParametersTerrestrial::Bandwidth::BwAuto:
+#if HAVE_DVB_API_VERSION < 3
+ parm.u.ofdm.bandWidth =
+#else
+ parm.u.ofdm.bandwidth =
+#endif
+ BANDWIDTH_AUTO;
+ break;
+ default:
+ eWarning("invalid OFDM bandwith");
return -EINVAL;
- eFatal("terrestrial tuning nyi");
+ }
+
+ parm.u.ofdm.code_rate_HP = FEC_AUTO;
+ parm.u.ofdm.code_rate_LP = FEC_AUTO;
+
+ switch (feparm.modulation)
+ {
+ case eDVBFrontendParametersTerrestrial::Modulation::QPSK:
+ parm.u.ofdm.constellation = QPSK;
+ break;
+ case eDVBFrontendParametersTerrestrial::Modulation::QAM16:
+ parm.u.ofdm.constellation = QAM_16;
+ break;
+ case eDVBFrontendParametersTerrestrial::Modulation::Auto:
+ parm.u.ofdm.constellation = QAM_AUTO;
+ break;
+ }
+
+ switch (feparm.transmission_mode)
+ {
+ case eDVBFrontendParametersTerrestrial::TransmissionMode::TM2k:
+#if HAVE_DVB_API_VERSION < 3
+ parm.u.ofdm.TransmissionMode =
+#else
+ parm.u.ofdm.transmission_mode =
+#endif
+ TRANSMISSION_MODE_2K;
+ break;
+ case eDVBFrontendParametersTerrestrial::TransmissionMode::TM8k:
+#if HAVE_DVB_API_VERSION < 3
+ parm.u.ofdm.TransmissionMode =
+#else
+ parm.u.ofdm.transmission_mode =
+#endif
+ TRANSMISSION_MODE_8K;
+ break;
+ case eDVBFrontendParametersTerrestrial::TransmissionMode::TMAuto:
+#if HAVE_DVB_API_VERSION < 3
+ parm.u.ofdm.TransmissionMode =
+#else
+ parm.u.ofdm.transmission_mode =
+#endif
+ TRANSMISSION_MODE_AUTO;
+ break;
+ }
+
+ parm.u.ofdm.guard_interval = GUARD_INTERVAL_AUTO;
+ parm.u.ofdm.hierarchy_information = HIERARCHY_AUTO;
+#if HAVE_DVB_API_VERSION < 3
+ parm.Inversion =
+#else
+ parm.inversion =
+#endif
+ INVERSION_AUTO;
+ break;
}
}
+ eDebug("setting frontend..\n");
+
if (ioctl(m_fd, FE_SET_FRONTEND, &parm) == -1)
{
perror("FE_SET_FRONTEND failed");
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 )");