aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/db.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2008-05-15 09:55:58 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2008-05-15 09:55:58 +0000
commit38b8a24b2034c387aa0762eb8a3d96b786fd581b (patch)
tree4516e3e8240478e2d8dff619c419822bca3c0172 /lib/dvb/db.cpp
parentced666c9fc8ae50d23b3836917fdf3cbf501383c (diff)
downloadenigma2-38b8a24b2034c387aa0762eb8a3d96b786fd581b.tar.gz
enigma2-38b8a24b2034c387aa0762eb8a3d96b786fd581b.zip
add support for rolloff and pilot changing (needed for some 8PSK transponders)
this both values are transmitted to the frontend via linux tv api inversion param hack bits 0..1 are used for real inversion param (OFF, ON, AUTO) bits 2..3 are now used for rolloff param (0.35, 0.25, 0.20) bits 4..5 are now used for pilot param (OFF, ON, AUTO) this needs a linuxtv api kernel patch, and a driver change (alps_bsbe2.ko) both are not yet pushed to OE!!
Diffstat (limited to 'lib/dvb/db.cpp')
-rw-r--r--lib/dvb/db.cpp29
1 files changed, 22 insertions, 7 deletions
diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp
index 5fd0758e..2be0dd4c 100644
--- a/lib/dvb/db.cpp
+++ b/lib/dvb/db.cpp
@@ -327,8 +327,9 @@ void eDVBDB::loadServicelist(const char *file)
int frequency, symbol_rate, polarisation, fec, orbital_position, inversion,
system=eDVBFrontendParametersSatellite::System::DVB_S,
modulation=eDVBFrontendParametersSatellite::Modulation::QPSK,
- rolloff=eDVBFrontendParametersSatellite::RollOff::alpha_auto;
- sscanf(line+3, "%d:%d:%d:%d:%d:%d:%d:%d:%d", &frequency, &symbol_rate, &polarisation, &fec, &orbital_position, &inversion, &system, &modulation, &rolloff);
+ rolloff=eDVBFrontendParametersSatellite::RollOff::alpha_0_35,
+ pilot=eDVBFrontendParametersSatellite::Pilot::Unknown;
+ sscanf(line+3, "%d:%d:%d:%d:%d:%d:%d:%d:%d:%d", &frequency, &symbol_rate, &polarisation, &fec, &orbital_position, &inversion, &system, &modulation, &rolloff, &pilot);
sat.frequency = frequency;
sat.symbol_rate = symbol_rate;
sat.polarisation = polarisation;
@@ -338,7 +339,8 @@ void eDVBDB::loadServicelist(const char *file)
sat.inversion = inversion;
sat.system = system;
sat.modulation = modulation;
- sat.roll_off = rolloff;
+ sat.rolloff = rolloff;
+ sat.pilot = pilot;
feparm->setDVBS(sat);
} else if (line[1]=='t')
{
@@ -484,14 +486,18 @@ void eDVBDB::saveServicelist()
{
if (sat.system == eDVBFrontendParametersSatellite::System::DVB_S2)
{
- fprintf(f, "\ts %d:%d:%d:%d:%d:%d:%d:%d:%d\n",
+ fprintf(f, "\ts %d:%d:%d:%d:%d:%d:%d:%d:%d",
sat.frequency, sat.symbol_rate,
sat.polarisation, sat.fec,
sat.orbital_position > 1800 ? sat.orbital_position - 3600 : sat.orbital_position,
sat.inversion,
sat.system,
sat.modulation,
- sat.roll_off);
+ sat.rolloff);
+ if (sat.modulation == eDVBFrontendParametersSatellite::Modulation::M8PSK)
+ fprintf(f, ":%d\n", sat.pilot);
+ else
+ fprintf(f, "\n");
}
else
{
@@ -766,7 +772,7 @@ PyObject *eDVBDB::readSatellites(ePyObject sat_list, ePyObject sat_dict, ePyObje
return Py_False;
}
int tmp, *dest = NULL,
- modulation, system, freq, sr, pol, fec;
+ modulation, system, freq, sr, pol, fec, inv, pilot, rolloff;
char *end_ptr;
const Attribute *at;
std::string name;
@@ -828,6 +834,9 @@ PyObject *eDVBDB::readSatellites(ePyObject sat_list, ePyObject sat_dict, ePyObje
sr = 0;
pol = -1;
fec = 0; // AUTO default
+ inv = 2; // AUTO default
+ pilot = 2; // AUTO default
+ rolloff = 0; // alpha 0.35
for (AttributeConstIterator it(tp_attributes.begin()); it != end; ++it)
{
// eDebug("\t\tattr: %s", at->name().c_str());
@@ -839,6 +848,9 @@ PyObject *eDVBDB::readSatellites(ePyObject sat_list, ePyObject sat_dict, ePyObje
else if (name == "symbol_rate") dest = &sr;
else if (name == "polarization") dest = &pol;
else if (name == "fec_inner") dest = &fec;
+ else if (name == "inversion") dest = &inv;
+ else if (name == "rolloff") dest = &rolloff;
+ else if (name == "pilot") dest = &pilot;
if (dest)
{
tmp = strtol(at->value().c_str(), &end_ptr, 10);
@@ -848,7 +860,7 @@ PyObject *eDVBDB::readSatellites(ePyObject sat_list, ePyObject sat_dict, ePyObje
}
if (freq && sr && pol != -1)
{
- tuple = PyTuple_New(7);
+ tuple = PyTuple_New(10);
PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(0));
PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(freq));
PyTuple_SET_ITEM(tuple, 2, PyInt_FromLong(sr));
@@ -856,6 +868,9 @@ PyObject *eDVBDB::readSatellites(ePyObject sat_list, ePyObject sat_dict, ePyObje
PyTuple_SET_ITEM(tuple, 4, PyInt_FromLong(fec));
PyTuple_SET_ITEM(tuple, 5, PyInt_FromLong(system));
PyTuple_SET_ITEM(tuple, 6, PyInt_FromLong(modulation));
+ PyTuple_SET_ITEM(tuple, 7, PyInt_FromLong(inv));
+ PyTuple_SET_ITEM(tuple, 8, PyInt_FromLong(rolloff));
+ PyTuple_SET_ITEM(tuple, 9, PyInt_FromLong(pilot));
PyList_Append(tplist, tuple);
Py_DECREF(tuple);
}