I guess I answered my own question:
The forecast function definition has changed in gnuradio 3.10 and it is now
defined in such a way that the second argument is only the number of input
ports.
So a correct forecast looks like this.
def forecast(self, noutput_items, ninputs):
ninput_items_required = [0] * ninputs
for i in range(ninputs):
ninput_items_required[i] = noutput_items * self.sps
return ninput_items_required
Achilleas
On Fri, Nov 1, 2024 at 1:36 PM Achilleas Anastasopoulos <[email protected]>
wrote:
> 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
>
>