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

Reply via email to