示例#1
0
文件: top.py 项目: shadown/shinysdr
	def _make_receiver(self, mode, state, key):
		facet = ContextForReceiver(self, key)
		receiver = Receiver(
			mode=mode,
			input_rate=self.input_rate,
			input_center_freq=self.input_freq,
			audio_channels=self.__audio_channels,
			context=facet,
		)
		receiver.state_from_json(state)
		# until _enabled, ignore any callbacks resulting from the state_from_json initialization
		facet._enabled = True
		return receiver
示例#2
0
 def _make_receiver(self, mode, state, key):
     facet = ContextForReceiver(self, key)
     receiver = Receiver(
         mode=mode,
         input_rate=self.input_rate,
         input_center_freq=self.input_freq,
         audio_channels=self.__audio_channels,
         audio_destination=CLIENT_AUDIO_DEVICE,  # TODO match others
         context=facet,
     )
     receiver.state_from_json(state)
     # until _enabled, ignore any callbacks resulting from the state_from_json initialization
     facet._enabled = True
     return receiver
示例#3
0
文件: top.py 项目: nunb/shinysdr
    def add_receiver(self, mode, key=None, state=None):
        if len(self._receivers) >= 100:
            # Prevent storage-usage DoS attack
            raise Exception('Refusing to create more than 100 receivers')
        
        if key is not None:
            assert key not in self._receivers
        else:
            while True:
                key = base26(self.receiver_key_counter)
                self.receiver_key_counter += 1
                if key not in self._receivers:
                    break
        
        if len(self._receivers) > 0:
            arbitrary = self._receivers.itervalues().next()
            defaults = arbitrary.state_to_json()
        else:
            defaults = self.receiver_default_state
            
        combined_state = defaults.copy()
        if 'device_name' in combined_state: del combined_state['device_name']  # should not be overridden
        if state is not None: combined_state.update(state)
        
        facet = ContextForReceiver(self, key)
        receiver = Receiver(
            mode=mode,
            audio_channels=self.__audio_manager.get_channels(),
            device_name=self.source_name,
            audio_destination=self.__audio_manager.get_default_destination(),  # TODO match others
            context=facet,
        )
        receiver.state_from_json(combined_state)  # TODO: Use unserialize_exported_state
        facet._receiver = receiver
        self._receivers[key] = receiver
        self._receiver_valid[key] = False
        
        self.__needs_reconnect.append(u'added receiver ' + key)
        self._do_connect()

        # until _enabled, the facet ignores any reconnect/rebuild-triggering callbacks
        facet._enabled = True
        
        return (key, receiver)