Hi Bob,

I think you've introduced the "j" variable to keep count of how many
items you're going to produce, but then just tell the scheduler you've
produced as many items as he offered you to do. Replace
    self.produce(0,len(out0))
by
    self.produce(0,j).
Also, you consume ninput_items every for loop iteration, so
ninput_items^2 per work run. That's not right; do it only once, after
the loop.

Greetings,

Marcus

On 12/24/2014 12:21 PM, bob wole wrote:
> Hi list,
>
> I am writing a custom python block that should take complex input,
> check magnitude of incoming samples and if the magnitude is greater
> than a threshold value, the block should pass that sample otherwise
> the block just drop the samples. As this is an arbitrary ratio block I
> derived it from gr.block and set_auto_consume(False).
>
> However I get intermittent zeros in output stream of my custom block.
> Below is the code
>
> from gnuradio import gr
> import gnuradio.extras
> import math
> import numpy as np
>
>
> class sdr_pass_valid(gr.block):
>     """
>     """
>     def __init__(self,threshold):
>         gr.block.__init__(
>             self,
>             name = "VALID",
>             in_sig = [np.complex64],
>             out_sig = [np.complex64],
>         )
>     self.set_auto_consume(False)
>
>     self.threshold =  threshold
>     def forecast (self,noutput_items,ninput_items_required):
>     for i in range(len(ninput_items_required)):
>         ninput_items_required[i] = noutput_items
>        
>     def work(self, input_items, output_items):
>
>         in0 = input_items[0][:len(output_items[0])]
>     out0= output_items[0]
>         nread = self.nitems_read(0) #number of items read on port 0
>         ninput_items = len(in0)
>     j=0
>     for i in range(0,ninput_items):
>         if np.absolute(in0[i]) >= self.threshold :
>             out0[j] = in0[i]
>             j = j + 1
>         self.consume(0,ninput_items)
>     self.produce(0,len(out0))
>         return 0
>
>
> --
> Bob
>
>
> _______________________________________________
> Discuss-gnuradio mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to