Friday, November 1, 2024

"forecast" function error in Embedded Python basic_block

Hi everyone,

I am running a simple flowgraph where I use an embedded python block.

I have rewritten a forecast function.

When I run the code I get:
============
Executing: /usr/bin/python3 -u top_block.py

thread_body_wrapper :error: ERROR thread[thread-per-block[15]: <block MF sampler and diff decoder(7)>]: TypeError: 'int' object does not support item assignment

At:
  /n/higgins/z/anastas/GNURADIO_LAB/Final Draft Lab 8/top_block_epy_block_0.py(39): forecast
  /usr/lib/python3/dist-packages/gnuradio/gr/gateway.py(149): handle_forecast
===============

It thinks that the second argument in forecast is an "int" instead of a list to be populated 
by the function.

What am I missing? (I am using gnuradio 3.10.1.1 (Python 3.10.12))
Also, where can i find the exact Python bindings for each of these functions?

thanks 
Achilleas

Here is the relevant code:
=====================================
class blk(gr.basic_block):  # other base classes are basic_block, decim_block, interp_block
    """Embedded Python Block example"""

    def __init__(self, datalength=10, sps = 8):  
        """arguments to this function show up as parameters in GRC"""
        gr.basic_block.__init__(
            self,
            name='MF sampler and diff decoder',   
            in_sig=[np.int8, np.complex64],  
            out_sig=[np.int8]             
        )
        self.datalength = datalength
        self.sps = sps
        self.set_output_multiple(self.datalength)
        self.state=1

    def forecast(self, noutput_items, ninput_items_required):
        ninput_items_required[0] = noutput_items*self.sps
        ninput_items_required[1] = noutput_items*self.sps
   

No comments:

Post a Comment