+ addChannelToScan(feparm);
+ }
+ break;
+ }
+ case EXTENSION_DESCRIPTOR:
+ {
+ if (system != iDVBFrontend::feTerrestrial)
+ break; // when current locked transponder is no terrestrial transponder ignore this descriptor
+
+ ExtensionDescriptor &d = (ExtensionDescriptor&)**desc;
+ switch (d.getExtensionTag())
+ {
+ case T2_DELIVERY_SYSTEM_DESCRIPTOR:
+ T2 = true;
+ T2DeliverySystemDescriptor &d = (T2DeliverySystemDescriptor&)**desc;
+ t2transponder.set(d);
+
+ for (T2CellConstIterator cell = d.getCells()->begin();
+ cell != d.getCells()->end(); ++cell)
+ {
+ for (T2FrequencyConstIterator freq = (*cell)->getCentreFrequencies()->begin();
+ freq != (*cell)->getCentreFrequencies()->end(); ++freq)
+ {
+ t2transponder.frequency = (*freq) * 10;
+ ePtr<eDVBFrontendParameters> feparm = new eDVBFrontendParameters;
+ feparm->setDVBT(t2transponder);
+ addChannelToScan(feparm);
+ }
+ }
+ }
+ break;
+ }
+ case FREQUENCY_LIST_DESCRIPTOR:
+ {
+ if (system != iDVBFrontend::feTerrestrial)
+ break; // when current locked transponder is no terrestrial transponder ignore this descriptor
+ if (!T2)
+ break;
+
+ FrequencyListDescriptor &d = (FrequencyListDescriptor&)**desc;
+ if (d.getCodingType() != 0x03)
+ break;
+
+ for (CentreFrequencyConstIterator it = d.getCentreFrequencies()->begin();
+ it != d.getCentreFrequencies()->end(); ++it)
+ {
+ t2transponder.frequency = (*it) * 10;
+ ePtr<eDVBFrontendParameters> feparm = new eDVBFrontendParameters;
+ feparm->setDVBT(t2transponder);
+ addChannelToScan(feparm);