fix calculation in calculateDifference for cable and terrestrial which should complet...
[enigma2.git] / lib / dvb / frontend.cpp
index f75340d61740e0fbe090160d571bb882dc5a676f..c8434c066bbe4556e940b56a44357d7e167398ff 100644 (file)
@@ -61,7 +61,7 @@ void eDVBFrontendParametersSatellite::set(const SatelliteDeliverySystemDescripto
 
 void eDVBFrontendParametersCable::set(const CableDeliverySystemDescriptor &descriptor)
 {
 
 void eDVBFrontendParametersCable::set(const CableDeliverySystemDescriptor &descriptor)
 {
-       frequency = descriptor.getFrequency() * 10;
+       frequency = descriptor.getFrequency() / 10;
        symbol_rate = descriptor.getSymbolRate() * 100;
        fec_inner = descriptor.getFecInner();
        if ( fec_inner == 0xF )
        symbol_rate = descriptor.getSymbolRate() * 100;
        fec_inner = descriptor.getFecInner();
        if ( fec_inner == 0xF )
@@ -195,7 +195,22 @@ RESULT eDVBFrontendParameters::calculateDifference(const iDVBFrontendParameters
                return 0;
        }
        case iDVBFrontend::feCable:
                return 0;
        }
        case iDVBFrontend::feCable:
+               eDVBFrontendParametersCable ocable;
+               if (parm->getDVBC(ocable))
+                       return -2;
+               
+               diff = abs(cable.frequency - ocable.frequency);
+               diff += abs(cable.symbol_rate - ocable.symbol_rate);
+               
+               return 0;
        case iDVBFrontend::feTerrestrial:
        case iDVBFrontend::feTerrestrial:
+               eDVBFrontendParametersTerrestrial oterrestrial;
+               if (parm->getDVBT(oterrestrial))
+                       return -2;
+               
+               diff = abs(terrestrial.frequency - oterrestrial.frequency);
+
+               return 0;
        default:
                return -1;
        }
        default:
                return -1;
        }