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