Revision 2ac80c5d grc/src/grc_gnuradio/blks2/selector.py

b/grc/src/grc_gnuradio/blks2/selector.py
25 25
	"""A hier2 block with N inputs and M outputs, where data is only forwarded through input n to output m."""
26 26
	def __init__(self, item_size, num_inputs, num_outputs, input_index, output_index):
27 27
		"""
28
		SelectorHelper constructor.
28
		Selector constructor.
29 29
		@param item_size the size of the gr data stream in bytes
30 30
		@param num_inputs the number of inputs (integer)
31 31
		@param num_outputs the number of outputs (integer)
......
38 38
			gr.io_signature(num_outputs, num_outputs, item_size),
39 39
		)
40 40
		#terminator blocks for unused inputs and outputs
41
		self.input_terminators = [gr.null_sink(item_size)] * num_inputs
42
		self.output_terminators = [gr.head(item_size, 0)] * num_outputs
43
		self.copy = None
41
		self.input_terminators = [gr.null_sink(item_size) for i in range(num_inputs)]
42
		self.output_terminators = [gr.head(item_size, 0) for i in range(num_outputs)]
43
		self.copy = gr.kludge_copy(item_size)
44 44
		#connections
45 45
		for i in range(num_inputs): self.connect((self, i), self.input_terminators[i])
46 46
		for i in range(num_outputs): self.connect(gr.null_source(item_size), self.output_terminators[i], (self, i))
......
65 65
		if self._indexes_valid():
66 66
			self.disconnect((self, self.input_index), self.input_terminators[self.input_index])
67 67
			self.disconnect(self.output_terminators[self.output_index], (self, self.output_index))
68
			self.copy = gr.skiphead(self.item_size, 0)
69 68
			self.connect((self, self.input_index), self.copy)
70 69
			self.connect(self.copy, (self, self.output_index))
71 70
			self.connect(self.output_terminators[self.output_index], self.input_terminators[self.input_index])
......
79 78
			self.disconnect((self, self.input_index), self.copy)
80 79
			self.disconnect(self.copy, (self, self.output_index))
81 80
			self.disconnect(self.output_terminators[self.output_index], self.input_terminators[self.input_index])
82
			del self.copy
83
			self.copy = None
84 81
			self.connect((self, self.input_index), self.input_terminators[self.input_index])
85 82
			self.connect(self.output_terminators[self.output_index], (self, self.output_index))
86 83

Also available in: Unified diff