My hier block runs if I add a second output pad connected to a null source:

         gr.hier_block2.__init__(
             self, "null output hier",
                 gr.io_signature(0, 0, 0),
                 gr.io_signature.makev(2, 2, [gr.sizeof_float*1, 
gr.sizeof_float*1]),
         )


However, the single output pad:

         gr.hier_block2.__init__(
             self, "Hx_code_source",
                 gr.io_signature(0, 0, 0),
                 gr.io_signature(1, 1, gr.sizeof_float*1),
         )


generates an error:

ine 125, in __init__
     self.HxCodes_0 = HxCodes(
                      ^^^^^^^^
TypeError: HxCodes.__init__() got an unexpected keyword argument 
'HxCode_file'

 >>> Done (return code 1)


Other than the second null output, these two hier blocks are identical. 
I assume that a single output hier block allowed so is there an obvious 
explanation for this?


Rick


On 2024-11-29 15:47, Rick Smegal wrote:
> I may have created my own problems by editing and saving the file under
> a new name. I created the hier block flow graph from a blank slate
> following the tutorial step by step and now have a completely different
> problem which appears to be the result of something stupid, like a typo
> in a parameter box.  I'll work on this and update this thread with
> either the solution or a real issue.
>
>
> Rick
>
>
> On 2024-11-29 11:27, aardric via "GNU Radio, the Free & Open-Source
> Toolkit for Software Radio" wrote:
>> Version: 3.10.11.0-1
>>
>> I have a simple hier block with two output pad sinks that works as
>> expected. These two outputs are nearly identical but independent
>> streams. I created a very similar hier block with only a single stream
>> and one output pad sink.  Executing a flow graph containing the latter
>> hier block generates the error:
>>
>> ".local/lib64/python3.11/site-packages/gnuradio/gr/hier_block2.py", line
>> 126, in connect
>>        self.primitive_connect(*args)
>> ValueError: port number 0 exceeds max of (none)
>>
>> The offending line 126:
>>
>>        def connect(self, *args):
>>            """
>>            Connect two or more block endpoints.  An endpoint is either a
>> (block, port)
>>            tuple or a block instance.  In the latter case, the port number
>> is assumed
>>            to be zero.
>>
>>            To connect the hierarchical block external inputs or outputs to
>> internal block
>>            inputs or outputs, use 'self' in the connect call.
>>
>>            If multiple arguments are provided, connect will attempt to
>> wire them in series,
>>            interpreting the endpoints as inputs or outputs as appropriate.
>>            """
>>            self.primitive_connect(*args)
>>
>>
>> Working two output block init:
>>
>>        def __init__(self, E6bCode_file='0', E6cCode_file='0'):
>>            gr.hier_block2.__init__(
>>                self, "E6bc_code_source",
>>                    gr.io_signature(0, 0, 0),
>>                    gr.io_signature.makev(2, 2, [gr.sizeof_float*1,
>> gr.sizeof_float*1]),
>>            )
>>
>>
>> errant single output block init:
>>
>>        def __init__(self, HxCode_file='0'):
>>            gr.hier_block2.__init__(
>>                self, "Hx_code_source",
>>                    gr.io_signature(0, 0, 0),
>>                    gr.io_signature(1, 1, gr.sizeof_float*1),
>>            )
>>
>>
>> Is there a place I should look for the root of the problem? I am
>> struggling to understand this. I thought to ask now in anticipation of
>> still struggling at the end of the day.
>>
>>
>> Rick
>>
>>
>>
>>


  • single pa... GNU Radio, the Free & Open-Source Toolkit for Software Radio
    • Re: ... GNU Radio, the Free & Open-Source Toolkit for Software Radio
      • ... GNU Radio, the Free & Open-Source Toolkit for Software Radio
        • ... GNU Radio, the Free & Open-Source Toolkit for Software Radio

Reply via email to