I have an application where I observe real time display of some bands.
What I
want to do is make a FIFO/Buffer where the data can be stored
simultaneously
and with a push button ‘rewind’ I can access the immediate past 15 sec
data.
So basically I want to know how to make a such file sink, which can
store
just immediate past 15 sec data.
gr_file_sink keeps increasing the size while gr_head stops after taking
a
fixed number of samples.
this depends on what you want to do with your data, the data rate, and
the amount of effort your willing to make.
Easiest solution: Use the “delay” block with a delay of (sample rate)
15s. Advantage: Yields a GNU Radio sample stream that’s delayed by
15s. Drawback: This can be a large amount of samples, so this might
actually fail if GNU Radio is not able to allocate a shared buffer
that’s big enough to hold them; there are ways around that, anyways.
Versatile solution: Write your own signal processing block. It’s
really a simple exercise when done in python or in C++, whatever is the
language of your choice.
Just implement a ring buffer of length (sample rate)*15s by keeping an
input counter that increments (mod length) whenever you copy input
samples to the internal buffer, and either write a method that returns a
(linear) copy of the stored data or dumps it to a file or emits it as a
message or starts pushing it to the output buffer or does whatever your
application needs.