Esempio n. 1
0
 def test_receiver_device_default(self):
     '''
     Receiver should default to the monitor device, not other receiver's device.
     '''
     top = Top(devices={
         's1': simulate.SimulatedDevice(),
         's2': simulate.SimulatedDevice(),
     })
     
     (_key, receiver1) = top.add_receiver('AM', key='a')
     top.set_source_name('s2')
     receiver1.set_device_name('s1')
     (_key, receiver2) = top.add_receiver('AM', key='b')
     self.assertEquals(receiver2.get_device_name(), 's2')
     self.assertEquals(receiver1.get_device_name(), 's1')
Esempio n. 2
0
    def test_receiver_device_default(self):
        """
        Receiver should default to the monitor device, not other receiver's device.
        """
        top = Top(devices={
            's1': simulate.SimulatedDevice(),
            's2': simulate.SimulatedDevice(),
        })

        (_key, receiver1) = top.add_receiver('AM', key='a')
        top.set_source_name('s2')
        receiver1.set_device_name('s1')
        (_key, receiver2) = top.add_receiver('AM', key='b')
        self.assertEquals(receiver2.get_device_name(), 's2')
        self.assertEquals(receiver1.get_device_name(), 's1')
Esempio n. 3
0
 def test_mono(self):
     top = Top(devices={'s1': simulate.SimulatedDevice(freq=0)},
         features={'stereo':False})
     queue = gr.msg_queue()
     (_key, _receiver) = top.add_receiver('AM', key='a')
     top.add_audio_queue(queue, 48000)
     top.remove_audio_queue(queue)
Esempio n. 4
0
class DemodulatorTester(object):
    """
    Set up an environment for testing a demodulator and do some fundamental tests.
    """
    def __init__(self, mode, state=None):
        # TODO: Refactor things so that we can take the demod ctor rather than a mode string
        if state is None:
            state = {}
        mode_def = lookup_mode(mode)
        if mode_def is None:
            raise Exception('No such mode is registered: ' + repr(mode))
        # TODO: Tell the simulated device to have no modulators, or have a simpler dummy source for testing, so we don't waste time on setup
        self.__top = Top(devices={'s1': SimulatedDevice()})
        (_, receiver) = self.__top.add_receiver(mode, key='a', state=state)
        self.__demodulator = receiver.get_demodulator()
        if not isinstance(self.__demodulator, mode_def.demod_class):
            raise Exception('Demodulator not of expected class: ' + repr(self.__demodulator))
        self.__top.start()  # TODO overriding internals
    
    def close(self):
        if self.__top is not None:
            self.__top.stop()
            self.__top = None
    
    def __enter__(self):
        state_smoke_test(self.__demodulator)
    
    def __exit__(self, exc_type, exc_value, traceback):
        self.close()
Esempio n. 5
0
 def test_add_unknown_mode(self):
     '''
     Specifying an unknown mode should not _fail_.
     '''
     top = Top(devices={'s1': simulate.SimulatedDevice(freq=0)})
     (_key, receiver) = top.add_receiver('NONSENSE', key='a')
     self.assertEqual(receiver.get_mode(), 'AM')
Esempio n. 6
0
 def test_auto_retune(self):
     # pylint: disable=no-member
     
     f1 = 50e6  # avoid 100e6 because that's a default a couple of places
     dev = simulate.SimulatedDevice(freq=f1, allow_tuning=True)
     bandwidth = dev.get_rx_driver().get_output_type().get_sample_rate()
     top = Top(devices={'s1': dev})
     (_key, receiver) = top.add_receiver('AM', key='a')
     
     # initial state check
     receiver.set_rec_freq(f1)
     self.assertEqual(dev.get_freq(), f1)
     
     # one "page" up
     f2 = f1 + bandwidth * 3/4
     receiver.set_rec_freq(f2)
     self.assertEqual(dev.get_freq(), f1 + bandwidth)
     
     # must wait for tune_delay, which is 0 for simulated source, or it will look still-valid
     yield deferLater(the_reactor, 0.1, lambda: None)
     
     # one "page" down
     receiver.set_rec_freq(f1)
     self.assertEqual(dev.get_freq(), f1)
     
     yield deferLater(the_reactor, 0.1, lambda: None)
     
     # long hop
     receiver.set_rec_freq(200e6)
     self.assertEqual(dev.get_freq(), 200e6)
Esempio n. 7
0
class DemodulatorTester(object):
    '''
    Set up an environment for testing a demodulator and do some fundamental tests.
    '''
    def __init__(self, mode, state=None):
        # TODO: Refactor things so that we can take the demod ctor rather than a mode string
        if state is None:
            state = {}
        mode_def = lookup_mode(mode)
        if mode_def is None:
            raise Exception('No such mode is registered: ' + repr(mode))
        # TODO: Tell the simulated device to have no modulators, or have a simpler dummy source for testing, so we don't waste time on setup
        self.__top = Top(devices={'s1': SimulatedDevice()})
        (_, receiver) = self.__top.add_receiver(mode, key='a', state=state)
        self.__demodulator = receiver.get_demodulator()
        if not isinstance(self.__demodulator, mode_def.demod_class):
            raise Exception('Demodulator not of expected class: ' + repr(self.__demodulator))
        self.__top.start()  # TODO overriding internals
    
    def close(self):
        if self.__top is not None:
            self.__top.stop()
            self.__top = None
    
    def __enter__(self):
        state_smoke_test(self.__demodulator)
    
    def __exit__(self, exc_type, exc_value, traceback):
        self.close()
Esempio n. 8
0
 def test_mono(self):
     top = Top(devices={'s1': simulate.SimulatedDevice(freq=0)},
               stereo=False)
     queue = gr.msg_queue()
     (_key, _receiver) = top.add_receiver('AM', key='a')
     top.add_audio_queue(queue, 48000)
     top.remove_audio_queue(queue)
Esempio n. 9
0
    def test_auto_retune(self):
        f1 = 50e6  # avoid 100e6 because that's a default a couple of places
        dev = simulate.SimulatedDevice(freq=f1, allow_tuning=True)
        bandwidth = dev.get_rx_driver().get_output_type().get_sample_rate()
        top = Top(devices={'s1': dev})
        (_key, receiver) = top.add_receiver('AM', key='a')

        # initial state check
        receiver.set_rec_freq(f1)
        self.assertEqual(dev.get_freq(), f1)

        # one "page" up
        f2 = f1 + bandwidth * 3 / 4
        receiver.set_rec_freq(f2)
        self.assertEqual(dev.get_freq(), f1 + bandwidth)

        # must wait for tune_delay, which is 0 for simulated source, or it will look still-valid
        yield deferLater(the_reactor, 0.1, lambda: None)

        # one "page" down
        receiver.set_rec_freq(f1)
        self.assertEqual(dev.get_freq(), f1)

        yield deferLater(the_reactor, 0.1, lambda: None)

        # long hop
        receiver.set_rec_freq(200e6)
        self.assertEqual(dev.get_freq(), 200e6)
Esempio n. 10
0
	def test_mono(self):
		top = Top(devices={'s1': simulate.SimulatedDevice(freq=0)}, stereo=False)
		queue = gr.msg_queue()
		(_key, _receiver) = top.add_receiver('AM', key='a')
		top.set_unpaused(True)  # there should be an attempted start
		top.add_audio_queue(queue, 48000)
		top.remove_audio_queue(queue)
Esempio n. 11
0
 def test_add_unknown_mode(self):
     '''
     Specifying an unknown mode should not _fail_.
     '''
     top = Top(devices={'s1': simulate.SimulatedDevice(freq=0)})
     (_key, receiver) = top.add_receiver('NONSENSE', key='a')
     self.assertEqual(receiver.get_mode(), 'AM')
Esempio n. 12
0
 def test_mono(self):
     top = Top(devices={'s1': simulate.SimulatedDevice(freq=0)}, stereo=False)
     queue = gr.msg_queue()
     (_key, _receiver) = top.add_receiver('AM', key='a')
     top.set_unpaused(True)  # there should be an attempted start
     top.add_audio_queue(queue, 48000)
     top.remove_audio_queue(queue)
Esempio n. 13
0
class DemodulatorTester(object):
    '''
    Set up an environment for testing a demodulator.
    '''
    def __init__(self, mode):
        # TODO: Refactor things so that we can take the demod ctor rather than a mode string
        # TODO: Tell the simulated device to have no modulators, or have a simpler dummy source for testing, so we don't waste time on setup
        self.__top = Top(devices={'s1': SimulatedDevice()})
        self.__top.add_receiver(mode, key='a')
        self.__top.start()  # TODO overriding internals
    
    def close(self):
        if self.__top is not None:
            self.__top.stop()
            self.__top = None
    
    def __enter__(self):
        pass
    
    def __exit__(self, exc_type, exc_value, traceback):
        self.close()
Esempio n. 14
0
	def test_source_switch_update(self):
		'''
		Regression test: Switching sources was not updating receiver input frequency.
		'''
		top = Top(sources={
			's1': simulate.SimulatedSource(freq=0),
			's2': simulate.SimulatedSource(freq=1e6),
		})
		top.set_source_name('s1')
		(_, receiver) = top.add_receiver('AM', key='a')
		receiver.set_rec_freq(1e6)
		self.assertFalse(receiver.get_is_valid())
		top.set_source_name('s2')
		self.assertTrue(receiver.get_is_valid())
Esempio n. 15
0
 def test_receiver_source_switch(self):
     '''
     Regression test: Switching sources was not updating receiver input frequency.
     '''
     freq1 = 1e6
     freq2 = 2e6
     top = Top(devices={
         's1': simulate.SimulatedDevice(freq=freq1),
         's2': simulate.SimulatedDevice(freq=freq2),
     })
     
     (_key, receiver) = top.add_receiver('AM', key='a')
     receiver.set_rec_freq(freq2)
     receiver.set_device_name('s1')
     self.assertFalse(receiver.get_is_valid(), 'receiver initially invalid')
     receiver.set_device_name('s2')
     self.assertTrue(receiver.get_is_valid(), 'receiver now valid')
Esempio n. 16
0
    def test_receiver_source_switch(self):
        """
        Regression test: Switching sources was not updating receiver input frequency.
        """
        freq1 = 1e6
        freq2 = 2e6
        top = Top(
            devices={
                's1': simulate.SimulatedDevice(freq=freq1),
                's2': simulate.SimulatedDevice(freq=freq2),
            })

        (_key, receiver) = top.add_receiver('AM', key='a')
        receiver.set_rec_freq(freq2)
        receiver.set_device_name('s1')
        self.assertFalse(receiver.get_is_valid(), 'receiver initially invalid')
        receiver.set_device_name('s2')
        self.assertTrue(receiver.get_is_valid(), 'receiver now valid')
Esempio n. 17
0
 def test_source_switch_update(self):
     '''
     Regression test: Switching sources was not updating receiver input frequency.
     '''
     freq = 1e6
     top = Top(devices={
         's1': simulate.SimulatedDevice(freq=0),
         's2': simulate.SimulatedDevice(freq=freq),
     })
     top.set_source_name('s1')
     self.assertEqual(top.monitor.get_fft_info()[0], 0)
     
     (_key, receiver) = top.add_receiver('AM', key='a')
     receiver.set_rec_freq(freq)
     self.assertFalse(receiver.get_is_valid())
     
     top.set_source_name('s2')
     # TODO: instead of top.monitor, should go through state interface
     self.assertEqual(top.monitor.get_fft_info()[0], freq)
     self.assertTrue(receiver.get_is_valid())
Esempio n. 18
0
 def test_source_switch_update(self):
     '''
     Regression test: Switching sources was not updating receiver input frequency.
     '''
     freq = 1e6
     top = Top(devices={
         's1': simulate.SimulatedDevice(freq=0),
         's2': simulate.SimulatedDevice(freq=freq),
     })
     top.set_source_name('s1')
     self.assertEqual(top.monitor.get_fft_info()[0], 0)
     
     (_key, receiver) = top.add_receiver('AM', key='a')
     receiver.set_rec_freq(freq)
     self.assertFalse(receiver.get_is_valid())
     
     top.set_source_name('s2')
     # TODO: instead of top.monitor, should go through state interface
     self.assertEqual(top.monitor.get_fft_info()[0], freq)
     self.assertTrue(receiver.get_is_valid())
Esempio n. 19
0
class DemodulatorTester(object):
    '''
    Set up an environment for testing a demodulator and do some fundamental tests.
    '''
    def __init__(self, mode, state=None):
        # TODO: Refactor things so that we can take the demod ctor rather than a mode string
        # TODO: Tell the simulated device to have no modulators, or have a simpler dummy source for testing, so we don't waste time on setup
        if state is None:
            state = {}
        self.__top = Top(devices={'s1': SimulatedDevice()})
        (_, receiver) = self.__top.add_receiver(mode, key='a', state=state)
        self.__demodulator = receiver.get_demodulator()
        self.__top.start()  # TODO overriding internals
    
    def close(self):
        if self.__top is not None:
            self.__top.stop()
            self.__top = None
    
    def __enter__(self):
        state_smoke_test(self.__demodulator)
    
    def __exit__(self, exc_type, exc_value, traceback):
        self.close()
Esempio n. 20
0
 def test_audio_queue_smoke(self):
     top = Top(devices={'s1': simulate.SimulatedDevice(freq=0)})
     queue = gr.msg_queue()
     (_key, _receiver) = top.add_receiver('AM', key='a')
     top.add_audio_queue(queue, 48000)
     top.remove_audio_queue(queue)