On Tue, May 24, 2011 at 7:38 PM, Johannes Schmitz <jsem...@gmx.de> wrote:
> Hello Guys,
> I am working on a cognitive radio application and I need to
> dynamically reconfigure my receiver, switching between a detector and
> the core receiver.
> I found lock, unlock, connect, disconnect functions but it seems to be
> almost impossible to find some documentation or a working examples to
> understand how to use it.
> I need to find a way to trigger the disconnect and connect. Do you
> have any suggestions like some kind of callback?
> Maybe you can point me to some example code. That would be nice.
> Another question is: Is it possible to reconnect only parts of the
> program in some hierarchical block or is it only possible from the top
> block?

Hi Johannes,

What documentation was possible to find? Was this part of it:
http://gnuradio.org/redmine/wiki/gnuradio/TutorialsWritePythonApplications#Controlling-flow-graphs

Anyway, I have attached a slightly modified dial_tone.py which runs
for 5 seconds, then replaces one tone with noise then runs for 5 more
seconds. As for how to trigger it, that depends entirely on the
context, but the reconf method can be called by timeout, user
interaction, external signal, ....

As far as I know you can disconnect and reconnect at any level, and
even hier_block has lock and unlock methods, but I don't know if it
makes sense to lock a flow graph anywhere else than at the top block
level.

Alex
#!/usr/bin/env python
#
# Copyright 2004,2005,2007 Free Software Foundation, Inc.
# 
# This file is part of GNU Radio
# 
# GNU Radio is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
# 
# GNU Radio is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with GNU Radio; see the file COPYING.  If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
# 

from gnuradio import gr
from gnuradio import audio
from gnuradio.eng_option import eng_option
from optparse import OptionParser
import time

class my_top_block(gr.top_block):

    def __init__(self):
        gr.top_block.__init__(self)

        parser = OptionParser(option_class=eng_option)
        parser.add_option("-O", "--audio-output", type="string", default="",
                          help="pcm output device name.  E.g., hw:0,0 or /dev/dsp")
        parser.add_option("-r", "--sample-rate", type="eng_float", default=48000,
                          help="set sample rate to RATE (48000)")
        (options, args) = parser.parse_args ()
        if len(args) != 0:
            parser.print_help()
            raise SystemExit, 1

        sample_rate = int(options.sample_rate)
        ampl = 0.1

        self.src0 = gr.sig_source_f (sample_rate, gr.GR_SIN_WAVE, 350, ampl)
        self.src1 = gr.sig_source_f (sample_rate, gr.GR_SIN_WAVE, 440, ampl)
        self.src2 = gr.noise_source_f(gr.GR_GAUSSIAN, 0.1)
        self.dst = audio.sink (sample_rate, options.audio_output)
        self.connect (self.src0, (self.dst, 0))
        self.connect (self.src1, (self.dst, 1))
        
    def reconf(self):
        self.disconnect(self.src0, (self.dst, 0))
        self.connect(self.src2, (self.dst, 0))


if __name__ == '__main__':
    tb = my_top_block()
    tb.start()
    time.sleep(5)
    tb.lock()
    tb.reconf()
    tb.unlock()
    time.sleep(5)
    tb.stop()
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to