aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-02-24 16:46:22 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-02-24 16:46:22 +0000
commit259b27b6f2d5457569b6639d625f5da255a73413 (patch)
tree5e13f9dd8e184a126fda54c27383bb4b0209b70e
parent04473f49c99472ab8be68d645293c556f02fd8a5 (diff)
downloadenigma2-259b27b6f2d5457569b6639d625f5da255a73413.tar.gz
enigma2-259b27b6f2d5457569b6639d625f5da255a73413.zip
fix cable and terrestrial scan
-rw-r--r--lib/dvb/frontend.cpp11
-rw-r--r--lib/dvb/scan.cpp47
2 files changed, 47 insertions, 11 deletions
diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp
index 6d0830bf..f75340d6 100644
--- a/lib/dvb/frontend.cpp
+++ b/lib/dvb/frontend.cpp
@@ -52,6 +52,11 @@ void eDVBFrontendParametersSatellite::set(const SatelliteDeliverySystemDescripto
orbital_position += ((descriptor.getOrbitalPosition()) & 0xF);
if (orbital_position && (!descriptor.getWestEastFlag()))
orbital_position = 3600 - orbital_position;
+ eDebug("SAT freq %d, %s, pos %d, sr %d, fec %d",
+ frequency,
+ polarisation ? "hor" : "vert",
+ orbital_position,
+ symbol_rate, fec);
}
void eDVBFrontendParametersCable::set(const CableDeliverySystemDescriptor &descriptor)
@@ -65,6 +70,9 @@ void eDVBFrontendParametersCable::set(const CableDeliverySystemDescriptor &descr
if ( modulation > 0x5 )
modulation = Modulation::Auto;
inversion = Inversion::Unknown;
+ eDebug("Cable freq %d, mod %d, sr %d, fec %d",
+ frequency,
+ modulation, symbol_rate, fec_inner);
}
void eDVBFrontendParametersTerrestrial::set(const TerrestrialDeliverySystemDescriptor &descriptor)
@@ -90,6 +98,9 @@ void eDVBFrontendParametersTerrestrial::set(const TerrestrialDeliverySystemDescr
if (modulation > 2)
modulation = Modulation::Auto;
inversion = Inversion::Unknown;
+ eDebug("Terr freq %d, bw %d, cr_hp %d, cr_lp %d, tm_mode %d, guard %d, hierarchy %d, const %d",
+ frequency, bandwidth, code_rate_HP, code_rate_LP, transmission_mode,
+ guard_interval, hierarchy, modulation);
}
eDVBFrontendParameters::eDVBFrontendParameters(): m_type(-1)
diff --git a/lib/dvb/scan.cpp b/lib/dvb/scan.cpp
index 7f4f6b10..e722b3c5 100644
--- a/lib/dvb/scan.cpp
+++ b/lib/dvb/scan.cpp
@@ -5,6 +5,8 @@
#include <dvbsi++/descriptor_tag.h>
#include <dvbsi++/service_descriptor.h>
#include <dvbsi++/satellite_delivery_system_descriptor.h>
+#include <dvbsi++/terrestrial_delivery_system_descriptor.h>
+#include <dvbsi++/cable_delivery_system_descriptor.h>
#include <dvbsi++/ca_identifier_descriptor.h>
#include <lib/dvb/specs.h>
#include <lib/dvb/esection.h>
@@ -285,20 +287,43 @@ void eDVBScan::channelDone()
{
switch ((*desc)->getTag())
{
-// case SERVICE_LIST_DESCRIPTOR:
+ case CABLE_DELIVERY_SYSTEM_DESCRIPTOR:
+ {
+ CableDeliverySystemDescriptor &d = (CableDeliverySystemDescriptor&)**desc;
+ ePtr<eDVBFrontendParameters> feparm = new eDVBFrontendParameters;
+ eDVBFrontendParametersCable cable;
+ cable.set(d);
+ feparm->setDVBC(cable);
+
+ unsigned long hash=0;
+ feparm->getHash(hash);
+ eDVBNamespace ns = buildNamespace(onid, tsid, hash);
+
+ addChannelToScan(
+ eDVBChannelID(ns, tsid, onid),
+ feparm);
+ break;
+ }
+ case TERRESTRIAL_DELIVERY_SYSTEM_DESCRIPTOR:
+ {
+ TerrestrialDeliverySystemDescriptor &d = (TerrestrialDeliverySystemDescriptor&)**desc;
+ ePtr<eDVBFrontendParameters> feparm = new eDVBFrontendParameters;
+ eDVBFrontendParametersTerrestrial terr;
+ terr.set(d);
+ feparm->setDVBT(terr);
+
+ unsigned long hash=0;
+ feparm->getHash(hash);
+ eDVBNamespace ns = buildNamespace(onid, tsid, hash);
+
+ addChannelToScan(
+ eDVBChannelID(ns, tsid, onid),
+ feparm);
+ break;
+ }
case SATELLITE_DELIVERY_SYSTEM_DESCRIPTOR:
{
SatelliteDeliverySystemDescriptor &d = (SatelliteDeliverySystemDescriptor&)**desc;
- SCAN_eDebug("%d kHz, %d%d%d.%d%c %s MOD:%d %d symb/s, fec %d",
- d.getFrequency(),
- (d.getOrbitalPosition()>>12)&0xF,
- (d.getOrbitalPosition()>>8)&0xF,
- (d.getOrbitalPosition()>>4)&0xF,
- d.getOrbitalPosition()&0xF, d.getWestEastFlag()?'E':'W',
- d.getPolarization() ? "hor" : "vert",
- d.getModulation(), d.getSymbolRate(), d.getFecInner());
-
- /* some sanity checking: below 100MHz is invalid */
if (d.getFrequency() < 10000)
break;