only accept delivery descriptors when the descriptor type is equal to the
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Wed, 1 Nov 2006 22:32:30 +0000 (22:32 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Wed, 1 Nov 2006 22:32:30 +0000 (22:32 +0000)
type of current scanned transponder (Sat == Sat, Cable == Cable, Terrestrial
== Terrestrial)

lib/dvb/scan.cpp

index 00564cdbb05f61be32594bb969467fbcc9f4a0d1..f49607c284b8c0b52c520ed93670a0059b50253f 100644 (file)
@@ -356,6 +356,8 @@ void eDVBScan::channelDone()
        
        if (m_ready & validNIT)
        {
+               int system;
+               m_ch_current->getSystem(system);
                SCAN_eDebug("dumping NIT");
                if (m_flags & clearToScanOnFirstNIT)
                {
@@ -383,6 +385,8 @@ void eDVBScan::channelDone()
                                        {
                                        case CABLE_DELIVERY_SYSTEM_DESCRIPTOR:
                                        {
+                                               if (system != iDVBFrontend::feCable)
+                                                       break; // when current locked transponder is no cable transponder ignore this descriptor
                                                CableDeliverySystemDescriptor &d = (CableDeliverySystemDescriptor&)**desc;
                                                ePtr<eDVBFrontendParameters> feparm = new eDVBFrontendParameters;
                                                eDVBFrontendParametersCable cable;
@@ -400,6 +404,8 @@ void eDVBScan::channelDone()
                                        }
                                        case TERRESTRIAL_DELIVERY_SYSTEM_DESCRIPTOR:
                                        {
+                                               if (system != iDVBFrontend::feTerrestrial)
+                                                       break; // when current locked transponder is no terrestrial transponder ignore this descriptor
                                                TerrestrialDeliverySystemDescriptor &d = (TerrestrialDeliverySystemDescriptor&)**desc;
                                                ePtr<eDVBFrontendParameters> feparm = new eDVBFrontendParameters;
                                                eDVBFrontendParametersTerrestrial terr;
@@ -417,6 +423,9 @@ void eDVBScan::channelDone()
                                        }
                                        case SATELLITE_DELIVERY_SYSTEM_DESCRIPTOR:
                                        {
+                                               if (system != iDVBFrontend::feSatellite)
+                                                       break; // when current locked transponder is no satellite transponder ignore this descriptor
+
                                                SatelliteDeliverySystemDescriptor &d = (SatelliteDeliverySystemDescriptor&)**desc;
                                                if (d.getFrequency() < 10000)
                                                        break;