Hello everybody, 
I am trying to to dynamically change hier block
content and connections. 
Let me explain with a minimal example below.

Why the method delete_path does not want to work? 
Thanks a lot for
help. 
Ivan 
from gnuradio import gr, blocks, TestModule

class
Example(gr.hier_block2):
 def __init__(self, G=[1,1,1], N=3,
d=[0,0,0]):
 gr.hier_block2.__init__(self,
 "Example",

gr.io_signature(1, 1, gr.sizeof_gr_complex*1), # Input signature

gr.io_signature(1, 1, gr.sizeof_gr_complex*1), # Output signature
 )


##################################################
 # Parameters

##################################################
 self.N = N
 self.G =
G
 self.d = d

 self.valid_params()


##################################################
 # Blocks

##################################################

self.create_paths()


##################################################
 # Connections

##################################################

self.connect_paths()


##################################################
 # Blocks

##################################################

self.create_paths()


##################################################
 # Connections

##################################################

self.connect_paths()

 def connect_paths(self):
 for n in
range(self.N):
 self.connect((self.TestModule_Delay[n], 0),
(self.blocks_multiply_xx[n], 0))

self.connect((self.TestModule_TapGain[n], 0),
(self.blocks_multiply_xx[n], 1))

self.connect((self.blocks_multiply_xx[n], 0), (self.blocks_add_xx, n))

self.connect((self, 0), (self.TestModule_Delay[n], 0))

self.connect((self.blocks_add_xx, 0), (self, 0))

 def
create_paths(self):
 self.blocks_multiply_xx = []

self.TestModule_TapGain = []
 self.TestModule_Delay = []
 for n in
range(self.N):
 self.blocks_multiply_xx.append(blocks.multiply_vcc(1))

self.TestModule_TapGain.append(TestModule.TapGain(self.G[n]))

self.TestModule_Delay.append(TestModule.Delay(self.d[n]))

self.blocks_add_xx = blocks.add_vcc(1)

 def valid_params(self):
 if
(len(self.G)!=self.N):
 raise ValueError("Not all lists have same
lenght!")

 def delete_path(self, idx):
 self.lock()

self.disconnect(self.blocks_multiply_xx.pop(idx))

self.disconnect(self.TestModule_Delay.pop(idx))

self.TestModule_TapGain.pop(idx)
 self.unlock()  

Reply via email to