Since I don't know why gr_modtool doesn't work for me, I took the older working version and made very simple hier block in order to understand messages flow in gnuradio. The block code is following:
from gnuradio import gr class msg_proba(gr.hier_block2): def __init__(self, ): gr.hier_block2.__init__(self, "msg_proba", gr.io_signature(1, 1, gr.sizeof_char), # Input signature gr.io_signature(1, 1, gr.sizeof_char)) # Output signature gr_message_sink_0_msgq_out = gr_message_source_0_msgq_in = gr.msg_queue(4) self.gr_message_source_0 = gr.message_source(gr.sizeof_char*1, gr_message_source_0_msgq_in) self.gr_message_sink_0 = gr.message_sink(gr.sizeof_char*1, gr_message_sink_0_msgq_out, False) self.connect(self, self.gr_message_sink_0) self.connect(self.gr_message_source_0, self) and the test code is following: from gnuradio import gr, gr_unittest import test import msg_proba class qa_msg_proba (gr_unittest.TestCase): def setUp (self): self.tb = gr.top_block () def tearDown (self): self.tb = None def test_001_msg_proba (self): self.src_data = () self.expected_result = () for i in range(51): self.src_data = self.src_data + (1,) self.expected_result = self.expected_result+(1,) self.src = gr.vector_source_b(self.src_data, False, 1) self.dst = gr.vector_sink_b () self.msg_pr = msg_proba.msg_proba() self.tb.connect(self.src, self.msg_pr, self.dst) self.tb.run () # check data result_data = dst.data () self.assertEqual (expected_result, result_data) if __name__ == '__main__': gr_unittest.main () When I run test, it doesn't finish. No errors, just stays active without giving any results. Can somebody provide some explanation? On Mon, Jan 28, 2013 at 10:28 AM, Nemanja Savic <vlasi...@gmail.com> wrote: > I installed new version of gr_modtool script and it won't work. The error > is following: > > [savi_ne@ts-070046nl gr-test]$ gr_modtool.py add -N rx_tx_message -t hier > -l python > Using Python < 2.7 possibly buggy. Ahem. Please send all complaints to > /dev/null. > Operating in directory . > GNU Radio module name identified: test > Language: Python > Block/code identifier: rx_tx_message > Enter valid argument list, including default arguments: > Add Python QA code? [Y/n] n > Traversing python... > Adding file 'rx_tx_message.py'... > > Traceback (most recent call last): > File "/usr/local/bin/gr_modtool.py", line 3369, in <module> > main() > File "/usr/local/bin/gr_modtool.py", line 3362, in main > modtool.run() > File "/usr/local/bin/gr_modtool.py", line 1339, in run > self._run_python() > File "/usr/local/bin/gr_modtool.py", line 1479, in _run_python > self._write_tpl('block_python', 'python', fname_py) > File "/usr/local/bin/gr_modtool.py", line 1324, in _write_tpl > open(os.path.join(path, fname), 'w').write(get_template(tpl, > **self._info)) > File "/usr/local/bin/gr_modtool.py", line 870, in get_template > return str(GRMTemplate(Templates[tpl_id], searchList=kwargs)) > File "/usr/local/bin/gr_modtool.py", line 865, in __init__ > Cheetah.Template.Template.__init__(self, src, searchList=searchList) > File "/usr/lib64/python2.6/site-packages/Cheetah/Template.py", line > 1257, in __init__ > self._compile(source, file, compilerSettings=compilerSettings) > File "/usr/lib64/python2.6/site-packages/Cheetah/Template.py", line > 1551, in _compile > keepRefToGeneratedCode=True) > File "/usr/lib64/python2.6/site-packages/Cheetah/Template.py", line 795, > in compile > raise parseError > Cheetah.Parser.ParseError: > > Error in the Python code which Cheetah generated for this template: > > ================================================================================ > > expected an indented block (DynamicallyCompiledCheetahTemplate.py, line > 122) > > Line|Python Code > ----|------------------------------------------------------------- > 120 | deciminterp = '' > 121 | else: # generated from line 42, col 1 > 122 | write(u'''from gnuradio import gr > ^ > 123 |class ''') > 124 | _v = VFFSL(SL,"blockname",True) # u'${blockname}' on line 46, > col 7 > 125 | if _v is not None: write(_filter(_v, > rawExpr=u'${blockname}')) # from line 46, col 7. > > > ================================================================================ > > Here is the corresponding Cheetah code. > ** I had to guess the line & column numbers, so they are probably > incorrect: > > Line 42, column 1 > > Line|Cheetah Code > ----|------------------------------------------------------------- > 39 |#else if $blocktype == 'decimator' > 40 |#set $deciminterp = ', <+decimation+>' > 41 |#set $deciminterp = '' > 42 |#else > ^ > 43 |#end if > 44 |from gnuradio import gr > 45 | > > Any suggestions how to ovecome this except using older version which > worked perfectly? > > > On Fri, Jan 25, 2013 at 9:22 PM, Nemanja Savic <vlasi...@gmail.com> wrote: > >> Thank you Martin, I will try that on Monday. >> I suppose that I have older version of gr_modtool, cause there is no >> option -l for selecting language. >> My weekend would be maybe perfect If you or anybody else can explain to >> me why my code won't work, cause I have more or less copied block >> structure from grextras. >> >> Nice weekend >> Nemanja >> >> >> On Fri, Jan 25, 2013 at 5:18 PM, Martin Braun (CEL) <martin.br...@kit.edu >> > wrote: >> >>> For a hier block in Python, do >>> >>> $ gr_modtool.py add -t hier -l python >>> >>> You need 3.6.3 to do that. >>> >>> Also, you'll need a new version of modtool (it usually lags a bit behind >>> changes in GNU Radio). >>> >>> MB >>> >>> >>> On Fri, Jan 25, 2013 at 05:05:56PM +0100, Nemanja Savic wrote: >>> > Hi all, >>> > >>> > >>> > today i was trying to make hierarchical signal processing block in >>> Python. I >>> > started with gr_modtool script, and configured it for hierpython block >>> type. >>> > >>> > >>> > My idea was to design block similar to packet framer, so inside of the >>> new >>> > block, I connected binary slicer and Framer sink. I have also declared >>> message >>> > queue. >>> > >>> > >>> > Outside of main block, I designed another block which should collect >>> messages >>> > sent by framer from the main block. >>> > >>> > >>> > When I wanted to run this block, I got following error: >>> > >>> > >>> > >>> > Traceback (most recent call last): >>> > File "/home/savi_ne/work/gnuradio/GRC/top_block.py", line 439, in >>> <module> >>> > tb = top_block() >>> > File "/home/savi_ne/work/gnuradio/GRC/top_block.py", line 183, in >>> __init__ >>> > self.test_packet_proba_0 = test.packet_proba() >>> > AttributeError: 'module' object has no attribute 'packet_proba' >>> > >>> > >>> > >>> > Next I found that maybe I have to put following line in __init__.py >>> file: >>> > >>> > from packet_proba import * >>> > >>> > >>> > After that I got similar error: >>> > >>> > Traceback (most recent call last): >>> > File "/home/savi_ne/work/gnuradio/GRC/top_block.py", line 18, in >>> <module> >>> > import test >>> > File "/usr/local/lib64/python2.6/site-packages/test/__init__.py", >>> line 49, in >>> > <module> >>> > from packet_proba import * >>> > File >>> "/usr/local/lib64/python2.6/site-packages/test/packet_proba.py", line >>> > 51, in <module> >>> > class proba(gr.basic_block): >>> > AttributeError: 'module' object has no attribute 'basic_block' >>> > >>> > >>> > I have also tried with gr.block instead of gr.basic_block, but with >>> identical >>> > results. >>> > >>> > >>> > Can anybody tell what's missing? >>> > >>> > >>> > Thanks >>> > >>> > >>> > -- >>> > Nemanja Savić >>> > >>> >>> > _______________________________________________ >>> > Discuss-gnuradio mailing list >>> > Discuss-gnuradio@gnu.org >>> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >>> >>> >>> -- >>> Karlsruhe Institute of Technology (KIT) >>> Communications Engineering Lab (CEL) >>> >>> Dipl.-Ing. Martin Braun >>> Research Associate >>> >>> Kaiserstraße 12 >>> Building 05.01 >>> 76131 Karlsruhe >>> >>> Phone: +49 721 608-43790 >>> Fax: +49 721 608-46071 >>> www.cel.kit.edu >>> >>> KIT -- University of the State of Baden-Württemberg and >>> National Laboratory of the Helmholtz Association >>> >>> _______________________________________________ >>> Discuss-gnuradio mailing list >>> Discuss-gnuradio@gnu.org >>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >>> >>> >> >> >> -- >> Nemanja Savić >> > > > > -- > Nemanja Savić > -- Nemanja Savić
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio