allow underlying mode to be specified in bandplan
This commit is contained in:
		@@ -123,13 +123,11 @@ class ServiceHandler(SdrSourceEventClient):
 | 
			
		||||
 | 
			
		||||
    def updateServices(self):
 | 
			
		||||
        def addService(dial, source):
 | 
			
		||||
            mode = dial["mode"]
 | 
			
		||||
            frequency = dial["frequency"]
 | 
			
		||||
            try:
 | 
			
		||||
                service = self.setupService(mode, frequency, source)
 | 
			
		||||
                service = self.setupService(dial, source)
 | 
			
		||||
                self.services.append(service)
 | 
			
		||||
            except Exception:
 | 
			
		||||
                logger.exception("Error setting up service %s on frequency %d", mode, frequency)
 | 
			
		||||
                logger.exception("Error setting up service {mode} on frequency {frequency}".format(**dial))
 | 
			
		||||
 | 
			
		||||
        with self.lock:
 | 
			
		||||
            logger.debug("re-scheduling services due to sdr changes")
 | 
			
		||||
@@ -247,23 +245,26 @@ class ServiceHandler(SdrSourceEventClient):
 | 
			
		||||
            return None
 | 
			
		||||
        return best["groups"]
 | 
			
		||||
 | 
			
		||||
    def setupService(self, mode, frequency, source):
 | 
			
		||||
        logger.debug("setting up service {0} on frequency {1}".format(mode, frequency))
 | 
			
		||||
    def setupService(self, dial, source):
 | 
			
		||||
        logger.debug("setting up service {mode} on frequency {frequency}".format(**dial))
 | 
			
		||||
 | 
			
		||||
        modeObject = Modes.findByModulation(mode)
 | 
			
		||||
        modeObject = Modes.findByModulation(dial["mode"])
 | 
			
		||||
        if not isinstance(modeObject, DigitalMode):
 | 
			
		||||
            logger.warning("mode is not a digimode: %s", mode)
 | 
			
		||||
            logger.warning("mode is not a digimode: %s", dial["mode"])
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
        if "underlying" in dial:
 | 
			
		||||
            modeObject = modeObject.for_underlying(dial["underlying"])
 | 
			
		||||
 | 
			
		||||
        demod = self._getDemodulator(modeObject.get_modulation())
 | 
			
		||||
        secondaryDemod = self._getSecondaryDemodulator(modeObject.modulation)
 | 
			
		||||
        center_freq = source.getProps()["center_freq"]
 | 
			
		||||
        sampleRate = source.getProps()["samp_rate"]
 | 
			
		||||
        bandpass = modeObject.get_bandpass()
 | 
			
		||||
        if isinstance(secondaryDemod, DialFrequencyReceiver):
 | 
			
		||||
            secondaryDemod.setDialFrequency(frequency)
 | 
			
		||||
            secondaryDemod.setDialFrequency(dial["frequency"])
 | 
			
		||||
 | 
			
		||||
        chain = ServiceDemodulatorChain(demod, secondaryDemod, sampleRate, frequency - center_freq)
 | 
			
		||||
        chain = ServiceDemodulatorChain(demod, secondaryDemod, sampleRate, dial["frequency"] - center_freq)
 | 
			
		||||
        chain.setBandPass(bandpass.low_cut, bandpass.high_cut)
 | 
			
		||||
        chain.setReader(source.getBuffer().getReader())
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user