discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] Python block help


From: bob wole
Subject: [Discuss-gnuradio] Python block help
Date: Wed, 24 Dec 2014 16:21:14 +0500

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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]