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