Problem writing custom null sync block

Hi list,

I’m writing a custom null sync block called “file_writer”. What I want
to do
is dump (to file or screen) what my null sync is receiving).

The problem is that if I use the file_writer in a flow graph, after the
“work” function is executed a few times it starts to receive the same
input
forever.

I created a simple flow graph in gnuradio-companion that shows the FFT
of
the signal received in a USRP source.
When I modify the generated python code and insert the file_writer right
after a stream_to_vector block, the flow graph “hangs” and process the
same
data over and over again.

Any suggestions of what is missing ?

Here’s the code of my simple block:

class file_writer(gr.sync_block):

CTOR

def init(self, filename, vec_size):
gr.sync_block.init(
self,
“file name block”,
in_sig = [np.dtype((np.float32, vec_size))],
out_sig = None
)

self._fd = open(filename, 'w')
self._filename = filename

def work(self, input_items, output_items):
in0 = input_items[0]

print "###### ",  len(in0)
print in0

return len(output_items)


View this message in context:
http://gnuradio.4.n7.nabble.com/Problem-writing-custom-null-sync-block-tp39796.html
Sent from the GnuRadio mailing list archive at Nabble.com.

On Fri, Feb 22, 2013 at 8:42 AM, maiconkist [email protected]
wrote:

the signal received in a USRP source.
## CTOR
self._filename = filename

    def work(self, input_items, output_items):
            in0 = input_items[0]

            print "###### ",  len(in0)
            print in0

            return len(output_items)

What is the length of output_items? Because you don’t have an output
buffer attached to this block, I’d be concerned that len(output_items)
== 0, so you’re telling the scheduler that you aren’t consuming any
data. Maybe just replace that last line with ‘return
len(input_items)’?

Tom

On Fri, Feb 22, 2013 at 09:09:19AM -0500, Tom R. wrote:

                            )

            return len(output_items)

What is the length of output_items? Because you don’t have an output
buffer attached to this block, I’d be concerned that len(output_items)
== 0, so you’re telling the scheduler that you aren’t consuming any
data. Maybe just replace that last line with ‘return
len(input_items)’?

It’s probably ‘len(in0)’, as len(input_items) would return the number of
input ports. ‘len(output_items[0])’ would probably also work.

MB


Karlsruhe Institute of Technology (KIT)
Communications Engineering Lab (CEL)

Dipl.-Ing. Martin B.
Research Associate

Kaiserstraße 12
Building 05.01
76131 Karlsruhe

Phone: +49 721 608-43790
Fax: +49 721 608-46071
www.cel.kit.edu

KIT – University of the State of Baden-Württemberg and
National Laboratory of the Helmholtz Association

Hi,

you’re right. Using “return len(in0)” solve my problem.

Thanks


View this message in context:
http://gnuradio.4.n7.nabble.com/Problem-writing-custom-null-sync-block-tp39796p39805.html
Sent from the GnuRadio mailing list archive at Nabble.com.