Nevermind now, I figured it out!

It turns out that using produce() instead of consume() does the trick, but
I couldn't say why. So, the last three lines should be

        output_items[0][:] = input_items[0]
        self.produce(0, len(output_items[0]))
        return -2

Although, in the following block, I just returned len(output_items[0])
without using consume() or produce() and it works fine. So, apparently, my
code is a bit random, but I'm happy it works now. :)

Thanks for your help, Jeff!


Best regards,
Verónica

On Thu, Oct 28, 2021 at 8:47 AM Verónica Toro Betancur <vetor...@gmail.com>
wrote:

> I see but no, I'm not processing a finite number of samples. I'm
> generating a message periodically with a Message Strobe, then the message
> is encoded and modulated as a WiFi signal using the modules in:
> https://github.com/bastibl/gr-ieee802-11. Now, I'm trying to detect the
> signals myself and then decode them with the blocks from the same
> gr-ieee802-11 repository. The block I'm implementing in python looks like
> this:
>
> class short_sync_blk(gr.sync_block):
>     def __init__(self):
>         gr.sync_block.__init__(self,name='Custom short preamble
> detection', in_sig=[np.complex64], out_sig=[np.complex64])
>         <+define some variables+>
>
>     def work(self, input_items, output_items):
>         print(input_items[0])   # Here is where I see that, after one
> iteration, input_items[0] is filled with zeros
>         <+some processing+>
>         <+insert a tag+>
>         output_items[0][:] = input_items[0]
>         self.consume_each(len(output_items[0]))
>         return len(output_items[0])
>
> Is this enough? Or should I put all the actual code in here with all the
> connected blocks?
>
> Thanks in advance.
>
>
> Best regards,
> Verónica
>

Reply via email to