diff options
Diffstat (limited to 'gnuradio-core/src/python')
8 files changed, 218 insertions, 569 deletions
diff --git a/gnuradio-core/src/python/gnuradio/blksimpl2/d8psk.py b/gnuradio-core/src/python/gnuradio/blksimpl2/d8psk.py index b499b8fa32..2760eb77b9 100644 --- a/gnuradio-core/src/python/gnuradio/blksimpl2/d8psk.py +++ b/gnuradio-core/src/python/gnuradio/blksimpl2/d8psk.py @@ -1,5 +1,5 @@ # -# Copyright 2005,2006 Free Software Foundation, Inc. +# Copyright 2005,2006,2007 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -115,21 +115,9 @@ class d8psk_mod(gr.hier_block2): self.rrc_filter = gr.interp_fir_filter_ccf(self._samples_per_symbol, self.rrc_taps) - # Define components from objects - self.define_component("bytes2chunks", self.bytes2chunks) - self.define_component("symbol_mapper", self.symbol_mapper) -# self.define_component("diffenc", self.diffenc) - self.define_component("chunks2symbols", self.chunks2symbols) - self.define_component("rrc_filter", self.rrc_filter) - # Connect components - self.connect("self", 0, "bytes2chunks", 0) - self.connect("bytes2chunks", 0, "symbol_mapper", 0) -# self.connect("symbol_mapper", 0, "diffenc", 0) -# self.connect("diffenc", 0, "chunks2symbols", 0) - self.connect("symbol_mapper", 0, "chunks2symbols", 0) - self.connect("chunks2symbols", 0, "rrc_filter", 0) - self.connect("rrc_filter", 0, "self", 0) + self.connect(self, self.bytes2chunks, self.symbol_mapper, self.chunks2symbols, + self.rrc_filter, self) if verbose: self._print_verbage() @@ -153,17 +141,10 @@ class d8psk_mod(gr.hier_block2): def _setup_logging(self): print "Modulation logging turned on." - self.define_component("bytes2chunks_dat", gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) - self.define_component("symbol_mapper_dat", gr.file_sink(gr.sizeof_char, "tx_symbol_mapper.dat")) -# self.define_component("diffenc_dat", gr.file_sink(gr.sizeof_char, "tx_diffenc.dat")) - self.define_component("chunks2symbols_dat", gr.file_sink(gr.sizeof_gr_complex, "tx_chunks2symbols.dat")) - self.define_component("rrc_filter_dat", gr.file_sink(gr.sizeof_gr_complex, "tx_rrc_filter.dat")) - - self.connect("bytes2chunks", 0, "bytes2chunks_dat", 0) - self.connect("symbol_mapper", 0, "symbol_mapper_dat", 0) -# self.connect("diffenc", 0, "diffenc_dat", 0) - self.connect("chunks2symbols", 0, "chunks2symbols_dat", 0) - self.connect("rrc_filter", 0, "rrc_filter_dat", 0) + self.connect(self.bytes2chunks, gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) + self.connect(self.symbol_mapper, gr.file_sink(gr.sizeof_char, "tx_symbol_mapper.dat")) + self.connect(self.chunks2symbols, gr.file_sink(gr.sizeof_gr_complex, "tx_chunks2symbols.dat")) + self.connect(self.rrc_filter, gr.file_sink(gr.sizeof_gr_complex, "tx_rrc_filter.dat")) def add_options(parser): """ @@ -295,27 +276,9 @@ class d8psk_demod(gr.hier_block2): self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol()) - # Define components - self.define_component("pre_scaler", self.pre_scaler) - self.define_component("agc", self.agc) - self.define_component("rrc_filter", self.rrc_filter) - self.define_component("receiver", self.receiver) - self.define_component("slicer", self.slicer) - #self.define_component("diffdec", self.diffdec) - self.define_component("symbol_mapper", self.symbol_mapper) - self.define_component("unpack", self.unpack) - # Connect and Initialize base class - self.connect("self", 0, "pre_scaler", 0) - self.connect("pre_scaler", 0, "agc", 0) - self.connect("agc", 0, "rrc_filter", 0) - self.connect("rrc_filter", 0, "receiver", 0) - self.connect("receiver", 0, "slicer", 0) - #self.connect("slicer", 0, "diffdec", 0) - #self.connect("diffdec", 0, "symbol_mapper", 0) - self.connect("slicer", 0, "symbol_mapper", 0) - self.connect("symbol_mapper", 0, "unpack", 0) - self.connect("unpack", 0, "self", 0) + self.connect(self, self.pre_scaler, self.agc, self.rrc_filter, self.receiver, + self.slicer, self.symbol_mapper, self.unpack, self) if verbose: self._print_verbage() @@ -347,31 +310,13 @@ class d8psk_demod(gr.hier_block2): def _setup_logging(self): print "Demodulation logging turned on." - self.define_component("prescaler_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_prescaler.dat")) - self.define_component("agc_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) - self.define_component("rrc_filter_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_rrc_filter.dat")) - self.define_component("receiver_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_receiver.dat")) - self.define_component("slicer_dat", - gr.file_sink(gr.sizeof_char, "rx_slicer.dat")) -# self.define_component("diffdec_dat", -# gr.file_sink(gr.sizeof_char, "rx_diffdec.dat")) - self.define_component("symbol_mapper_dat", - gr.file_sink(gr.sizeof_char, "rx_symbol_mapper.dat")) - self.define_component("unpack_dat", - gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) - - self.connect("pre_scaler", 0, "prescaler_dat", 0) - self.connect("agc", 0, "agc_dat", 0) - self.connect("rrc_filter", 0, "rrc_filter_dat", 0) - self.connect("receiver", 0, "receiver_dat", 0) - self.connect("slicer", 0, "slicer_dat", 0) -# self.connect("diffdec", 0, "diffdec_dat", 0) - self.connect("symbol_mapper", 0, "symbol_mapper_dat", 0) - self.connect("unpack", 0, "unpack_dat", 0) + self.connect(self.pre_scaler, gr.file_sink(gr.sizeof_gr_complex, "rx_prescaler.dat")) + self.connect(self.agc, gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) + self.connect(self.rrc_filter, gr.file_sink(gr.sizeof_gr_complex, "rx_rrc_filter.dat")) + self.connect(self.receiver, gr.file_sink(gr.sizeof_gr_complex, "rx_receiver.dat")) + self.connect(self.slicer, gr.file_sink(gr.sizeof_char, "rx_slicer.dat")) + self.connect(self.symbol_mapper, gr.file_sink(gr.sizeof_char, "rx_symbol_mapper.dat")) + self.connect(self.unpack, gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) def add_options(parser): """ diff --git a/gnuradio-core/src/python/gnuradio/blksimpl2/dbpsk.py b/gnuradio-core/src/python/gnuradio/blksimpl2/dbpsk.py index 36a2ea8af1..380fa54f21 100644 --- a/gnuradio-core/src/python/gnuradio/blksimpl2/dbpsk.py +++ b/gnuradio-core/src/python/gnuradio/blksimpl2/dbpsk.py @@ -1,5 +1,5 @@ # -# Copyright 2005,2006 Free Software Foundation, Inc. +# Copyright 2005,2006,2007 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -113,19 +113,9 @@ class dbpsk_mod(gr.hier_block2): self.rrc_filter = gr.interp_fir_filter_ccf(self._samples_per_symbol, self.rrc_taps) - self.define_component("bytes2chunks", self.bytes2chunks) - self.define_component("symbol_mapper", self.symbol_mapper) - self.define_component("diffenc", self.diffenc) - self.define_component("chunks2symbols", self.chunks2symbols) - self.define_component("rrc_filter", self.rrc_filter) - # Connect components - self.connect("self", 0, "bytes2chunks", 0) - self.connect("bytes2chunks", 0, "symbol_mapper", 0) - self.connect("symbol_mapper", 0, "diffenc", 0) - self.connect("diffenc", 0, "chunks2symbols", 0) - self.connect("chunks2symbols", 0, "rrc_filter", 0) - self.connect("rrc_filter", 0, "self", 0) + self.connect(self, self.bytes2chunks, self.symbol_mapper, self.diffenc, + self.chunks2symbols, self.rrc_filter, self) if verbose: self._print_verbage() @@ -168,22 +158,11 @@ class dbpsk_mod(gr.hier_block2): def _setup_logging(self): print "Modulation logging turned on." - self.define_component("bytes2chunks_dat", - gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) - self.define_component("symbol_mapper_dat", - gr.file_sink(gr.sizeof_char, "tx_symbol_mapper.dat")) - self.define_component("diffenc_dat", - gr.file_sink(gr.sizeof_char, "tx_diffenc.dat")) - self.define_component("chunks2symbols_dat", - gr.file_sink(gr.sizeof_gr_complex, "tx_chunks2symbols.dat")) - self.define_component("rrc_filter_dat", - gr.file_sink(gr.sizeof_gr_complex, "tx_rrc_filter.dat")) - - self.connect("bytes2chunks", 0, "bytes2chunks_dat", 0) - self.connect("symbol_mapper", 0, "symbol_mapper_dat", 0) - self.connect("diffenc", 0, "diffenc_dat", 0) - self.connect("chunks2symbols", 0, "chunks2symbols_dat", 0) - self.connect("rrc_filter", 0, "rrc_filter_dat", 0) + self.connect(self.bytes2chunks, gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) + self.connect(self.symbol_mapper, gr.file_sink(gr.sizeof_char, "tx_symbol_mapper.dat")) + self.connect(self.diffenc, gr.file_sink(gr.sizeof_char, "tx_diffenc.dat")) + self.connect(self.chunks2symbols, gr.file_sink(gr.sizeof_gr_complex, "tx_chunks2symbols.dat")) + self.connect(self.rrc_filter, gr.file_sink(gr.sizeof_gr_complex, "tx_rrc_filter.dat")) # ///////////////////////////////////////////////////////////////////////////// @@ -295,27 +274,10 @@ class dbpsk_demod(gr.hier_block2): # unpack the k bit vector into a stream of bits self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol()) - # Define components - self.define_component("pre_scaler", self.pre_scaler) - self.define_component("agc", self.agc) - self.define_component("rrc_filter", self.rrc_filter) - self.define_component("receiver", self.receiver) - self.define_component("slicer", self.slicer) - self.define_component("diffdec", self.diffdec) - self.define_component("symbol_mapper", self.symbol_mapper) - self.define_component("unpack", self.unpack) - # Connect and Initialize base class - self.connect("self", 0, "pre_scaler", 0) - self.connect("pre_scaler", 0, "agc", 0) - self.connect("agc", 0, "rrc_filter", 0) - self.connect("rrc_filter", 0, "receiver", 0) - self.connect("receiver", 0, "diffdec", 0) - self.connect("diffdec", 0, "slicer", 0) - self.connect("slicer", 0, "symbol_mapper", 0) - self.connect("symbol_mapper", 0, "unpack", 0) - self.connect("unpack", 0, "self", 0) - + self.connect(self, self.pre_scaler, self.agc, self.rrc_filter, self.receiver, + self.diffdec, self.slicer, self.symbol_mapper, self.unpack, self) + if verbose: self._print_verbage() @@ -344,32 +306,14 @@ class dbpsk_demod(gr.hier_block2): def _setup_logging(self): print "Demodulation logging turned on." - self.define_component("prescaler_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_prescaler.dat")) - self.define_component("agc_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) - self.define_component("rrc_filter_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_rrc_filter.dat")) - self.define_component("receiver_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_receiver.dat")) - self.define_component("diffdec_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.dat")) - self.define_component("slicer_dat", - gr.file_sink(gr.sizeof_char, "rx_slicer.dat")) - self.define_component("symbol_mapper_dat", - gr.file_sink(gr.sizeof_char, "rx_symbol_mapper.dat")) - self.define_component("unpack_dat", - gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) - - self.connect("pre_scaler", 0, "prescaler_dat", 0) - self.connect("agc", 0, "agc_dat", 0) - self.connect("rrc_filter", 0, "rrc_filter_dat", 0) - self.connect("receiver", 0, "receiver_dat", 0) - self.connect("diffdec", 0, "diffdec_dat", 0) - self.connect("slicer", 0, "slicer_dat", 0) - self.connect("symbol_mapper", 0, "symbol_mapper_dat", 0) - self.connect("unpack", 0, "unpack_dat", 0) - + self.connect(self.pre_scaler, gr.file_sink(gr.sizeof_gr_complex, "rx_prescaler.dat")) + self.connect(self.agc, gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) + self.connect(self.rrc_filter, gr.file_sink(gr.sizeof_gr_complex, "rx_rrc_filter.dat")) + self.connect(self.receiver, gr.file_sink(gr.sizeof_gr_complex, "rx_receiver.dat")) + self.connect(self.diffdec, gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.dat")) + self.connect(self.slicer, gr.file_sink(gr.sizeof_char, "rx_slicer.dat")) + self.connect(self.symbol_mapper, gr.file_sink(gr.sizeof_char, "rx_symbol_mapper.dat")) + self.connect(self.unpack, gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) def add_options(parser): """ diff --git a/gnuradio-core/src/python/gnuradio/blksimpl2/dqpsk.py b/gnuradio-core/src/python/gnuradio/blksimpl2/dqpsk.py index 04623c93e2..e9fc2092d3 100644 --- a/gnuradio-core/src/python/gnuradio/blksimpl2/dqpsk.py +++ b/gnuradio-core/src/python/gnuradio/blksimpl2/dqpsk.py @@ -1,5 +1,5 @@ # -# Copyright 2005,2006 Free Software Foundation, Inc. +# Copyright 2005,2006,2007 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -114,20 +114,9 @@ class dqpsk_mod(gr.hier_block2): self.rrc_filter = gr.interp_fir_filter_ccf(self._samples_per_symbol, self.rrc_taps) - # Define components from objects - self.define_component("bytes2chunks", self.bytes2chunks) - self.define_component("symbol_mapper", self.symbol_mapper) - self.define_component("diffenc", self.diffenc) - self.define_component("chunks2symbols", self.chunks2symbols) - self.define_component("rrc_filter", self.rrc_filter) - # Connect components - self.connect("self", 0, "bytes2chunks", 0) - self.connect("bytes2chunks", 0, "symbol_mapper", 0) - self.connect("symbol_mapper", 0, "diffenc", 0) - self.connect("diffenc", 0, "chunks2symbols", 0) - self.connect("chunks2symbols", 0, "rrc_filter", 0) - self.connect("rrc_filter", 0, "self", 0) + self.connect(self, self.bytes2chunks, self.symbol_mapper, self.diffenc, + self.chunks2symbols, self.rrc_filter, self) if verbose: self._print_verbage() @@ -150,17 +139,11 @@ class dqpsk_mod(gr.hier_block2): def _setup_logging(self): print "Modulation logging turned on." - self.define_component("bytes2chunks_dat", gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) - self.define_component("symbol_mapper_dat", gr.file_sink(gr.sizeof_char, "tx_symbol_mapper.dat")) - self.define_component("diffenc_dat", gr.file_sink(gr.sizeof_char, "tx_diffenc.dat")) - self.define_component("chunks2symbols_dat", gr.file_sink(gr.sizeof_gr_complex, "tx_chunks2symbols.dat")) - self.define_component("rrc_filter_dat", gr.file_sink(gr.sizeof_gr_complex, "tx_rrc_filter.dat")) - - self.connect("bytes2chunks", 0, "bytes2chunks_dat", 0) - self.connect("symbol_mapper", 0, "symbol_mapper_dat", 0) - self.connect("diffenc", 0, "diffenc_dat", 0) - self.connect("chunks2symbols", 0, "chunks2symbols_dat", 0) - self.connect("rrc_filter", 0, "rrc_filter_dat", 0) + self.connect(self.bytes2chunks, gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) + self.connect(self.symbol_mapper, gr.file_sink(gr.sizeof_char, "tx_symbol_mapper.dat")) + self.connect(self.diffenc, gr.file_sink(gr.sizeof_char, "tx_diffenc.dat")) + self.connect(self.chunks2symbols, gr.file_sink(gr.sizeof_gr_complex, "tx_chunks2symbols.dat")) + self.connect(self.rrc_filter, gr.file_sink(gr.sizeof_gr_complex, "tx_rrc_filter.dat")) def add_options(parser): """ @@ -288,27 +271,10 @@ class dqpsk_demod(gr.hier_block2): # unpack the k bit vector into a stream of bits self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol()) - - # Define components - self.define_component("pre_scaler", self.pre_scaler) - self.define_component("agc", self.agc) - self.define_component("rrc_filter", self.rrc_filter) - self.define_component("receiver", self.receiver) - self.define_component("diffdec", self.diffdec) - self.define_component("slicer", self.slicer) - self.define_component("symbol_mapper", self.symbol_mapper) - self.define_component("unpack", self.unpack) # Connect and Initialize base class - self.connect("self", 0, "pre_scaler", 0) - self.connect("pre_scaler", 0, "agc", 0) - self.connect("agc", 0, "rrc_filter", 0) - self.connect("rrc_filter", 0, "receiver", 0) - self.connect("receiver", 0, "diffdec", 0) - self.connect("diffdec", 0, "slicer", 0) - self.connect("slicer", 0, "symbol_mapper", 0) - self.connect("symbol_mapper", 0, "unpack", 0) - self.connect("unpack", 0, "self", 0) + self.connect(self, self.pre_scaler, self.agc, self.rrc_filter, self.receiver, self.diffdec, + self.slicer, self.symbol_mapper, self.unpack, self) if verbose: self._print_verbage() @@ -338,31 +304,14 @@ class dqpsk_demod(gr.hier_block2): def _setup_logging(self): print "Demodulation logging turned on." - self.define_component("prescaler_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_prescaler.dat")) - self.define_component("agc_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) - self.define_component("rrc_filter_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_rrc_filter.dat")) - self.define_component("receiver_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_receiver.dat")) - self.define_component("diffdec_dat", - gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.dat")) - self.define_component("slicer_dat", - gr.file_sink(gr.sizeof_char, "rx_slicer.dat")) - self.define_component("symbol_mapper_dat", - gr.file_sink(gr.sizeof_char, "rx_symbol_mapper.dat")) - self.define_component("unpack_dat", - gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) - - self.connect("pre_scaler", 0, "prescaler_dat", 0) - self.connect("agc", 0, "agc_dat", 0) - self.connect("rrc_filter", 0, "rrc_filter_dat", 0) - self.connect("receiver", 0, "receiver_dat", 0) - self.connect("diffdec", 0, "diffdec_dat", 0) - self.connect("slicer", 0, "slicer_dat", 0) - self.connect("symbol_mapper", 0, "symbol_mapper_dat", 0) - self.connect("unpack", 0, "unpack_dat", 0) + self.connect(self.pre_scaler, gr.file_sink(gr.sizeof_gr_complex, "rx_prescaler.dat")) + self.connect(self.agc, gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) + self.connect(self.rrc_filter, gr.file_sink(gr.sizeof_gr_complex, "rx_rrc_filter.dat")) + self.connect(self.receiver, gr.file_sink(gr.sizeof_gr_complex, "rx_receiver.dat")) + self.connect(self.diffdec, gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.dat")) + self.connect(self.slicer, gr.file_sink(gr.sizeof_char, "rx_slicer.dat")) + self.connect(self.symbol_mapper, gr.file_sink(gr.sizeof_char, "rx_symbol_mapper.dat")) + self.connect(self.unpack, gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) def add_options(parser): """ diff --git a/gnuradio-core/src/python/gnuradio/blksimpl2/gmsk.py b/gnuradio-core/src/python/gnuradio/blksimpl2/gmsk.py index e852b3c115..bc601e6797 100644 --- a/gnuradio-core/src/python/gnuradio/blksimpl2/gmsk.py +++ b/gnuradio-core/src/python/gnuradio/blksimpl2/gmsk.py @@ -2,7 +2,7 @@ # GMSK modulation and demodulation. # # -# Copyright 2005,2006 Free Software Foundation, Inc. +# Copyright 2005,2006,2007 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -103,16 +103,8 @@ class gmsk_mod(gr.hier_block2): # FM modulation self.fmmod = gr.frequency_modulator_fc(sensitivity) - # Define components from objects - self.define_component("nrz", self.nrz) - self.define_component("gaussian_filter", self.gaussian_filter) - self.define_component("fmmod", self.fmmod) - # Connect components - self.connect("self", 0, "nrz", 0) - self.connect("nrz", 0, "gaussian_filter", 0) - self.connect("gaussian_filter", 0, "fmmod", 0) - self.connect("fmmod", 0, "self", 0) + self.connect(self, self.nrz, self.gaussian_filter, self.fmmod, self) if verbose: self._print_verbage() @@ -135,13 +127,9 @@ class gmsk_mod(gr.hier_block2): def _setup_logging(self): print "Modulation logging turned on." - self.define_component("nrz_dat", gr.file_sink(gr.sizeof_float, "tx_nrz.dat")) - self.define_component("gaussian_filter_dat", gr.file_sink(gr.sizeof_float, "tx_gaussian_filter.dat")) - self.define_component("fmmod_dat", gr.file_sink(gr.sizeof_gr_complex, "tx_fmmod.dat")) - - self.connect("nrz", 0, "nrz_dat", 0) - self.connect("gaussian_filter", 0, "gaussian_filter_dat", 0) - self.connect("fmmod", 0, "fmmod_dat", 0) + self.connect(self.nrz, gr.file_sink(gr.sizeof_float, "tx_nrz.dat")) + self.connect(self.gaussian_filter, gr.file_sink(gr.sizeof_float, "tx_gaussian_filter.dat")) + self.connect(self.fmmod, gr.file_sink(gr.sizeof_gr_complex, "tx_fmmod.dat")) def add_options(parser): """ @@ -232,16 +220,8 @@ class gmsk_demod(gr.hier_block2): # slice the floats at 0, outputting 1 bit (the LSB of the output byte) per sample self.slicer = gr.binary_slicer_fb() - # Define components from objects - self.define_component("fmdemod", self.fmdemod) - self.define_component("clock_recovery", self.clock_recovery) - self.define_component("slicer", self.slicer) - # Connect components - self.connect("self", 0, "fmdemod", 0) - self.connect("fmdemod", 0, "clock_recovery", 0) - self.connect("clock_recovery", 0, "slicer", 0) - self.connect("slicer", 0, "self", 0) + self.connect(self, self.fmdemod, self.clock_recovery, self.slicer, self) if verbose: self._print_verbage() @@ -267,13 +247,9 @@ class gmsk_demod(gr.hier_block2): def _setup_logging(self): print "Demodulation logging turned on." - self.define_component("fmdemod_dat", gr.file_sink(gr.sizeof_float, "rx_fmdemod.dat")) - self.define_component("clock_recovery_dat", gr.file_sink(gr.sizeof_float, "rx_clock_recovery.dat")) - self.define_component("slicer_dat", gr.file_sink(gr.sizeof_char, "rx_slicer.dat")) - - self.connect("fmdemod", 0, "fmdemod_dat", 0) - self.connect("clock_recovery", 0, "clock_recovery_dat", 0) - self.connect("slicer", 0, "slicer_dat", 0) + self.connect(self.fmdemod, gr.file_sink(gr.sizeof_float, "rx_fmdemod.dat")) + self.connect(self.clock_recovery, gr.file_sink(gr.sizeof_float, "rx_clock_recovery.dat")) + self.connect(self.slicer, gr.file_sink(gr.sizeof_char, "rx_slicer.dat")) def add_options(parser): """ diff --git a/gnuradio-core/src/python/gnuradio/blksimpl2/pkt.py b/gnuradio-core/src/python/gnuradio/blksimpl2/pkt.py index 1e1dae17a4..c94c27338f 100644 --- a/gnuradio-core/src/python/gnuradio/blksimpl2/pkt.py +++ b/gnuradio-core/src/python/gnuradio/blksimpl2/pkt.py @@ -1,5 +1,5 @@ # -# Copyright 2005,2006 Free Software Foundation, Inc. +# Copyright 2005,2006,2007 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -67,11 +67,7 @@ class mod_pkts(gr.hier_block2): # accepts messages from the outside world self._pkt_input = gr.message_source(gr.sizeof_char, msgq_limit) - self.define_component("packet_source", self._pkt_input) - self.define_component("modulator", self._modulator) - - self.connect("packet_source", 0, "modulator", 0) - self.connect("modulator", 0, "self", 0) + self.connect(self._pkt_input, self._modulator, self) def send_pkt(self, payload='', eof=False): """ @@ -136,13 +132,9 @@ class demod_pkts(gr.hier_block2): self._rcvd_pktq = gr.msg_queue() # holds packets from the PHY - self.define_component("demodulator", self._demodulator) - self.define_component("correlator", gr.correlate_access_code_bb(access_code, threshold)) - self.define_component("framer_sink", gr.framer_sink_1(self._rcvd_pktq)) - - self.connect("self", 0, "demodulator",0) - self.connect("demodulator", 0, "correlator", 0) - self.connect("correlator", 0, "framer_sink", 0) + self._correlator = gr.correlate_access_code_bb(access_code, threshold) + self._framer_sink = gr.framer_sink_1(self._rcvd_pktq) + self.connect(self, self._demodulator, self._correlator, self._framer_sink) self._watcher = _queue_watcher_thread(self._rcvd_pktq, callback) diff --git a/gnuradio-core/src/python/gnuradio/gr/hier_block2.py b/gnuradio-core/src/python/gnuradio/gr/hier_block2.py index 5877401b55..4abe9d14f4 100644 --- a/gnuradio-core/src/python/gnuradio/gr/hier_block2.py +++ b/gnuradio-core/src/python/gnuradio/gr/hier_block2.py @@ -21,7 +21,7 @@ from gnuradio_swig_python import hier_block2_swig, gr_make_runtime, \ runtime_run_unlocked, runtime_start_unlocked, runtime_stop_unlocked, \ - runtime_wait_unlocked + runtime_wait_unlocked, runtime_restart_unlocked, io_signature # # This hack forces a 'has-a' relationship to look like an 'is-a' one. @@ -38,9 +38,55 @@ class hier_block2(object): def __getattr__(self, name): return getattr(self._hb, name) - def define_component(self, name, comp): - return self._hb.define_component(name, comp.basic_block()) + def connect(self, *points): + '''connect requires two or more arguments that can be coerced to endpoints. + If more than two arguments are provided, they are connected together successively. + ''' + if len (points) < 2: + raise ValueError, ("connect requires at least two endpoints; %d provided." % (len (points),)) + for i in range (1, len (points)): + self._connect(points[i-1], points[i]) + def _connect(self, src, dst): + (src_block, src_port) = self._coerce_endpoint(src) + (dst_block, dst_port) = self._coerce_endpoint(dst) + self._hb.connect(src_block.basic_block(), src_port, + dst_block.basic_block(), dst_port) + + def _coerce_endpoint(self, endp): + if hasattr(endp, 'basic_block'): + return (endp, 0) + else: + if hasattr(endp, "__getitem__") and len(endp) == 2: + return endp # Assume user put (block, port) + else: + raise ValueError("unable to coerce endpoint") + + def disconnect(self, *points): + '''connect requires two or more arguments that can be coerced to endpoints. + If more than two arguments are provided, they are disconnected successively. + ''' + if len (points) < 2: + raise ValueError, ("disconnect requires at least two endpoints; %d provided." % (len (points),)) + for i in range (1, len (points)): + self._disconnect(points[i-1], points[i]) + + def _disconnect(self, src, dst): + (src_block, src_port) = self._coerce_endpoint(src) + (dst_block, dst_port) = self._coerce_endpoint(dst) + self._hb.disconnect(src_block.basic_block(), src_port, + dst_block.basic_block(), dst_port) + +# Convenience class to create a no input, no output block for runtime top block +class top_block(hier_block2): + def __init__(self, name): + hier_block2.__init__(self, name, io_signature(0,0,0), io_signature(0,0,0)) + +# This allows the 'run_locked' methods, which are defined in gr_runtime.i, +# to release the Python global interpreter lock before calling the actual +# method in gr.runtime +# +# This probably should be elsewhere but it works here class runtime(object): def __init__(self, top_block): if (isinstance(top_block, hier_block2)): @@ -59,3 +105,6 @@ class runtime(object): def wait(self): runtime_wait_unlocked(self._r) + + def restart(self): + runtime_restart_unlocked(self._r) diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py b/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py index 9253b892af..98691cfb52 100755 --- a/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py +++ b/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py @@ -6,10 +6,10 @@ class test_hier_block2(gr_unittest.TestCase): def setUp(self): pass - + def tearDown(self): pass - + def test_001_make(self): hblock = gr.hier_block2("test_block", gr.io_signature(1,1,gr.sizeof_int), @@ -20,219 +20,155 @@ class test_hier_block2(gr_unittest.TestCase): self.assertEqual(1, hblock.output_signature().max_streams()) self.assertEqual(gr.sizeof_int, hblock.output_signature().sizeof_stream_item(0)) - def test_002_define_component(self): + def test_001_connect_internal(self): hblock = gr.hier_block2("test_block", gr.io_signature(1,1,gr.sizeof_int), gr.io_signature(1,1,gr.sizeof_int)) - hblock.define_component("src", gr.null_source(gr.sizeof_int)) - hblock.define_component("dst", gr.null_sink(gr.sizeof_int)) + nop1 = gr.nop(gr.sizeof_int) + nop2 = gr.nop(gr.sizeof_int) + hblock.connect(nop1, nop2) - def test_003_define_component_reserved_input(self): + def test_002_connect_input(self): hblock = gr.hier_block2("test_block", gr.io_signature(1,1,gr.sizeof_int), gr.io_signature(1,1,gr.sizeof_int)) - self.assertRaises(ValueError, - lambda: hblock.define_component("self", gr.nop(gr.sizeof_int))) + nop1 = gr.nop(gr.sizeof_int) + hblock.connect(hblock, nop1) - def test_004_define_component_name_in_use(self): + def test_002a_connect_input_in_use(self): hblock = gr.hier_block2("test_block", gr.io_signature(1,1,gr.sizeof_int), gr.io_signature(1,1,gr.sizeof_int)) - hblock.define_component("src", gr.null_source(gr.sizeof_int)) - self.assertRaises(ValueError, - lambda: hblock.define_component("src", gr.null_sink(gr.sizeof_int))) + nop1 = gr.nop(gr.sizeof_int) + nop2 = gr.nop(gr.sizeof_int) + hblock.connect(hblock, nop1) + self.assertRaises(ValueError, + lambda: hblock.connect(hblock, nop2)) - def test_006_connect_internal(self): + def test_003_connect_output(self): hblock = gr.hier_block2("test_block", gr.io_signature(1,1,gr.sizeof_int), gr.io_signature(1,1,gr.sizeof_int)) - hblock.define_component("nop1", gr.nop(gr.sizeof_int)) - hblock.define_component("nop2", gr.nop(gr.sizeof_int)) - hblock.connect("nop1", 0, "nop2", 0) + nop1 = gr.nop(gr.sizeof_int) + hblock.connect(nop1, hblock) - def test_007_connect_input(self): + def test_003a_connect_output_in_use(self): hblock = gr.hier_block2("test_block", gr.io_signature(1,1,gr.sizeof_int), gr.io_signature(1,1,gr.sizeof_int)) - hblock.define_component("nop1", gr.nop(gr.sizeof_int)) - hblock.connect("self", 0, "nop1", 0) + nop1 = gr.nop(gr.sizeof_int) + nop2 = gr.nop(gr.sizeof_int) + hblock.connect(nop1, hblock) + self.assertRaises(ValueError, + lambda: hblock.connect(nop2, hblock)) - def test_008_connect_output(self): + def test_004_connect_invalid_src_port_neg(self): hblock = gr.hier_block2("test_block", gr.io_signature(1,1,gr.sizeof_int), gr.io_signature(1,1,gr.sizeof_int)) - hblock.define_component("nop1", gr.nop(gr.sizeof_int)) - hblock.connect("nop1", 0, "self", 0) + nop1 = gr.nop(gr.sizeof_int) + self.assertRaises(ValueError, + lambda: hblock.connect((hblock, -1), nop1)) - def test_009_connect_unknown_src(self): + def test_005_connect_invalid_src_port_exceeds(self): hblock = gr.hier_block2("test_block", gr.io_signature(1,1,gr.sizeof_int), gr.io_signature(1,1,gr.sizeof_int)) nop1 = gr.nop(gr.sizeof_int) - hblock.define_component("nop1", nop1) self.assertRaises(ValueError, - lambda: hblock.connect("nop2", 0, "self", 0)) - - def test_010_connect_unknown_dst(self): + lambda: hblock.connect((hblock, 1), nop1)) + + def test_006_connect_invalid_dst_port_neg(self): hblock = gr.hier_block2("test_block", gr.io_signature(1,1,gr.sizeof_int), gr.io_signature(1,1,gr.sizeof_int)) - hblock.define_component("nop1", gr.nop(gr.sizeof_int)) + nop1 = gr.nop(gr.sizeof_int) + nop2 = gr.nop(gr.sizeof_int) self.assertRaises(ValueError, - lambda: hblock.connect("self", 0, "nop2", 0)) + lambda: hblock.connect(nop1, (nop2, -1))) - def test_011_connect_invalid_src_port_neg(self): + def test_007_connect_invalid_dst_port_exceeds(self): hblock = gr.hier_block2("test_block", gr.io_signature(1,1,gr.sizeof_int), gr.io_signature(1,1,gr.sizeof_int)) - hblock.define_component("nop1", gr.nop(gr.sizeof_int)) + nop1 = gr.null_sink(gr.sizeof_int) + nop2 = gr.null_sink(gr.sizeof_int) self.assertRaises(ValueError, - lambda: hblock.connect("self", -1, "nop1", 0)) + lambda: hblock.connect(nop1, (nop2, 1))) - def test_012_connect_invalid_src_port_exceeds(self): + def test_008_connect_dst_port_in_use(self): hblock = gr.hier_block2("test_block", gr.io_signature(1,1,gr.sizeof_int), gr.io_signature(1,1,gr.sizeof_int)) - hblock.define_component("nop1", gr.nop(gr.sizeof_int)) + nop1 = gr.nop(gr.sizeof_int) + nop2 = gr.nop(gr.sizeof_int) + hblock.connect(nop1, nop2); self.assertRaises(ValueError, - lambda: hblock.connect("self", 1, "nop1", 0)) - - def test_013_connect_invalid_dst_port_neg(self): - hblock = gr.hier_block2("test_block", - gr.io_signature(1,1,gr.sizeof_int), - gr.io_signature(1,1,gr.sizeof_int)) - hblock.define_component("nop1", gr.nop(gr.sizeof_int)) + lambda: hblock.connect(nop1, nop2)) + + def test_009_connect_one_src_two_dst(self): + hblock = gr.top_block("test_block") + src = gr.null_source(gr.sizeof_int) + dst1 = gr.null_sink(gr.sizeof_int) + dst2 = gr.null_sink(gr.sizeof_int) + hblock.connect(src, dst1) + hblock.connect(src, dst2) + + def test_010_connect_type_mismatch(self): + hblock = gr.top_block("test_block") + nop1 = gr.nop(gr.sizeof_char) + nop2 = gr.nop(gr.sizeof_int) self.assertRaises(ValueError, - lambda: hblock.connect("self", -1, "nop1", 0)) + lambda: hblock.connect(nop1, nop2)) - def test_014_connect_invalid_dst_port_exceeds(self): - hblock = gr.hier_block2("test_block", - gr.io_signature(1,1,gr.sizeof_int), - gr.io_signature(1,1,gr.sizeof_int)) - hblock.define_component("nop1", gr.nop(gr.sizeof_int)) - self.assertRaises(ValueError, - lambda: hblock.connect("self", 1, "nop1", 0)) + def test_011_check_topology(self): + hblock = gr.top_block("test_block") + hblock.check_topology(0, 0) - def test_015_connect_dst_port_in_use(self): - hblock = gr.hier_block2("test_block", - gr.io_signature(1,1,gr.sizeof_int), - gr.io_signature(1,1,gr.sizeof_int)) + def test_012_disconnect(self): + hblock = gr.top_block("test_block") nop1 = gr.nop(gr.sizeof_int) - hblock.define_component("nop1", nop1) - hblock.connect("nop1", 0, "self", 0); - self.assertRaises(ValueError, - lambda: hblock.connect("nop1", 0, "self", 0)) - - def test_016_connect_one_src_two_dst(self): - hblock = gr.hier_block2("test_block", - gr.io_signature(1,1,gr.sizeof_int), - gr.io_signature(1,1,gr.sizeof_int)) - hblock.define_component("src", gr.null_source(gr.sizeof_int)) - hblock.define_component("dst1", gr.null_sink(gr.sizeof_int)) - hblock.define_component("dst2", gr.null_sink(gr.sizeof_int)) - hblock.connect("src", 0, "dst1", 0) - hblock.connect("src", 0, "dst2", 0) + nop2 = gr.nop(gr.sizeof_int) + hblock.connect(nop1, nop2) + hblock.disconnect(nop1, nop2) - def test_017_connect_type_mismatch(self): + def test_013_disconnect_not_connected(self): hblock = gr.hier_block2("test_block", gr.io_signature(1,1,gr.sizeof_int), gr.io_signature(1,1,gr.sizeof_int)) - hblock.define_component("nop1", gr.nop(gr.sizeof_char)) + nop1 = gr.nop(gr.sizeof_int) + nop2 = gr.nop(gr.sizeof_int) + nop3 = gr.nop(gr.sizeof_int) + hblock.connect(nop1, nop2) self.assertRaises(ValueError, - lambda: hblock.connect("nop1", 0, "self", 0)) - - def test_018_check_topology(self): - hblock = gr.hier_block2("test_block", - gr.io_signature(0,0,gr.sizeof_int), - gr.io_signature(0,0,gr.sizeof_int)) - hblock.check_topology(0, 0); - """ - def test_019_validate(self): - hblock = gr.hier_block2("test_block", - gr.io_signature(0,0,gr.sizeof_int), - gr.io_signature(0,0,gr.sizeof_int)) - runtime = gr.runtime(hblock) - runtime.validate() + lambda: hblock.disconnect(nop1, nop3)) + + def test_014_run(self): + expected = (1.0, 2.0, 3.0, 4.0) + hblock = gr.top_block("test_block") + src = gr.vector_source_f(expected, False) + sink1 = gr.vector_sink_f() + sink2 = gr.vector_sink_f() + hblock.connect(src, sink1) + hblock.connect(src, sink2) + runtime = gr.runtime(hblock) + runtime.run() + actual1 = sink1.data() + actual2 = sink2.data() + self.assertEquals(expected, actual1) + self.assertEquals(expected, actual2) + + def test_015_connect_disconnect(self): + expected = (1.0, 2.0, 3.0, 4.0) + hblock = gr.top_block("test_block") + src = gr.vector_source_f(expected, False) + sink1 = gr.vector_sink_f() + sink2 = gr.vector_sink_f() + hblock.connect(src, sink1) + hblock.connect(src, sink2) + hblock.disconnect(src, sink2) + runtime = gr.runtime(hblock) + runtime.run() - def test_020_validate_1(self): - hblock = gr.hier_block2("test_block", - gr.io_signature(0,0,gr.sizeof_int), - gr.io_signature(0,0,gr.sizeof_int)) - hblock.define_component("src", gr.null_source(gr.sizeof_int)) - hblock.define_component("dst1", gr.null_sink(gr.sizeof_int)) - hblock.define_component("dst2", gr.null_sink(gr.sizeof_int)) - hblock.connect("src", 0, "dst1", 0) - hblock.connect("src", 0, "dst2", 0) - runtime = gr.runtime(hblock) - runtime.validate() - - def test_021_validate_2(self): - hblock = gr.hier_block2("test_block", - gr.io_signature(0,0,gr.sizeof_int), - gr.io_signature(0,0,gr.sizeof_int)) - hblock.define_component("src1", gr.null_source(gr.sizeof_int)) - hblock.define_component("nop1", gr.nop(gr.sizeof_int)) - hblock.define_component("dst1", gr.null_sink(gr.sizeof_int)) - hblock.define_component("dst2", gr.null_sink(gr.sizeof_int)) - hblock.connect("src1", 0, "nop1", 0) - hblock.connect("src1", 0, "nop1", 1) - hblock.connect("nop1", 0, "dst1", 0) - hblock.connect("nop1", 1, "dst2", 0) - runtime = gr.runtime(hblock) - runtime.validate() - - def test_022_validate_3(self): - hblock = gr.hier_block2("test_block", - gr.io_signature(0,0,gr.sizeof_int), - gr.io_signature(0,0,gr.sizeof_int)) - hblock.define_component("src1", gr.null_source(gr.sizeof_int)) - hblock.define_component("nop1", gr.nop(gr.sizeof_int)) - hblock.define_component("dst1", gr.null_sink(gr.sizeof_int)) - hblock.define_component("dst2", gr.null_sink(gr.sizeof_int)) - hblock.connect("src1", 0, "nop1", 0) - hblock.connect("src1", 0, "nop1", 2) - hblock.connect("nop1", 0, "dst1", 0) - hblock.connect("nop1", 1, "dst2", 0) - runtime = gr.runtime(hblock) - self.assertRaises(RuntimeError, - lambda: runtime.validate()) - - def test_023_validate_4(self): - hblock = gr.hier_block2("test_block", - gr.io_signature(0,0,gr.sizeof_int), - gr.io_signature(0,0,gr.sizeof_int)) - hblock.define_component("src1", gr.null_source(gr.sizeof_int)) - hblock.define_component("nop1", gr.nop(gr.sizeof_int)) - hblock.define_component("dst1", gr.null_sink(gr.sizeof_int)) - hblock.define_component("dst2", gr.null_sink(gr.sizeof_int)) - hblock.connect("src1", 0, "nop1", 0) - hblock.connect("src1", 0, "nop1", 1) - hblock.connect("nop1", 0, "dst1", 0) - hblock.connect("nop1", 2, "dst2", 0) - runtime = gr.runtime(hblock) - self.assertRaises(RuntimeError, - lambda: runtime.validate()) - - def test_024_validate_5(self): - hblock = gr.hier_block2("test_block", - gr.io_signature(0,0,gr.sizeof_int), - gr.io_signature(0,0,gr.sizeof_int)) - hblock.define_component("src1", gr.null_source(gr.sizeof_int)) - hblock.define_component("nop1", gr.nop(gr.sizeof_int)) - hblock.define_component("dst1", gr.null_sink(gr.sizeof_int)) - hblock.define_component("dst2", gr.null_sink(gr.sizeof_int)) - hblock.connect("src1", 0, "nop1", 0) - hblock.connect("src1", 0, "nop1", 1) - hblock.connect("nop1", 0, "dst1", 0) - hblock.connect("nop1", 1, "dst2", 0) - runtime = gr.runtime(hblock) - runtime.validate() - # Pending implementation of disconnect - # hblock.disconnect("src1", 0, "nop1", 1) - # runtime.validate() - # self.assertRaises(ValueError, - # lambda: hblock.disconnect("src1", 0, "nop1", 1)) - """ - if __name__ == "__main__": gr_unittest.main() diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_simple_flowgraph.py b/gnuradio-core/src/python/gnuradio/gr/qa_simple_flowgraph.py deleted file mode 100755 index 939f5855fc..0000000000 --- a/gnuradio-core/src/python/gnuradio/gr/qa_simple_flowgraph.py +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/env python - -from gnuradio import gr, gr_unittest - -class test_simple_flowgraph(gr_unittest.TestCase): - - def setUp(self): - pass - - def tearDown(self): - pass - - def test_001_define_component(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src", gr.null_source(gr.sizeof_int)) - sfg.define_component("dst", gr.null_sink(gr.sizeof_int)) - - def test_002_define_component_name_in_use(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src", gr.null_source(gr.sizeof_int)) - self.assertRaises(ValueError, - lambda: sfg.define_component("src", gr.null_sink(gr.sizeof_int))) - - def test_003_connect(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src", gr.null_source(gr.sizeof_int)) - sfg.define_component("dst", gr.null_sink(gr.sizeof_int)) - sfg.connect("src", 0, "dst", 0) - - def test_004connect_unknown_src(self): - sfg = gr.simple_flowgraph() - sfg.define_component("dst", gr.null_sink(gr.sizeof_int)) - self.assertRaises(ValueError, - lambda: sfg.connect("src", 0, "dst", 0)) - - def test_005_connect_unknown_dst(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src", gr.null_source(gr.sizeof_int)) - self.assertRaises(ValueError, - lambda: sfg.connect("src", 0, "dst", 0)) - - def test_006_connect_invalid_src_port_neg(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src", gr.null_source(gr.sizeof_int)) - sfg.define_component("dst", gr.null_sink(gr.sizeof_int)) - self.assertRaises(ValueError, - lambda: sfg.connect("src", -1, "dst", 0)) - - def test_007_connect_invalid_src_port_exceeds(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src", gr.null_source(gr.sizeof_int)) - sfg.define_component("dst", gr.null_sink(gr.sizeof_int)) - self.assertRaises(ValueError, - lambda: sfg.connect("src", 1, "dst", 0)) - - def test_008_connect_invalid_dst_port_neg(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src", gr.null_source(gr.sizeof_int)) - sfg.define_component("dst", gr.null_sink(gr.sizeof_int)) - self.assertRaises(ValueError, - lambda: sfg.connect("src", 0, "dst", -1)) - - def test_009_connect_invalid_dst_port_exceeds(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src", gr.null_source(gr.sizeof_int)) - sfg.define_component("dst", gr.null_sink(gr.sizeof_int)) - self.assertRaises(ValueError, - lambda: sfg.connect("src", 0, "dst", 1)) - - def test_010_connect_invalid_dst_port_in_use(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src1", gr.null_source(gr.sizeof_int)) - sfg.define_component("src2", gr.null_source(gr.sizeof_int)) - sfg.define_component("dst", gr.null_sink(gr.sizeof_int)) - sfg.connect("src1", 0, "dst", 0) - self.assertRaises(ValueError, - lambda: sfg.connect("src2", 0, "dst", 0)) - - def test_011_connect_one_src_two_dst(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src", gr.null_source(gr.sizeof_int)) - sfg.define_component("dst1", gr.null_sink(gr.sizeof_int)) - sfg.define_component("dst2", gr.null_sink(gr.sizeof_int)) - sfg.connect("src", 0, "dst1", 0) - sfg.connect("src", 0, "dst2", 0) - - def test_012_connect_type_mismatch(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src", gr.null_source(gr.sizeof_int)) - sfg.define_component("dst", gr.null_sink(gr.sizeof_char)) - self.assertRaises(ValueError, - lambda: sfg.connect("src", 0, "dst", 0)) - - def test_013_validate(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src", gr.null_source(gr.sizeof_int)) - sfg.define_component("dst1", gr.null_sink(gr.sizeof_int)) - sfg.define_component("dst2", gr.null_sink(gr.sizeof_int)) - sfg.connect("src", 0, "dst1", 0) - sfg.connect("src", 0, "dst2", 0) - sfg.validate() - - def test_014_validate(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src1", gr.null_source (gr.sizeof_int)) - sfg.define_component("nop1", gr.nop (gr.sizeof_int)) - sfg.define_component("dst1", gr.null_sink (gr.sizeof_int)) - sfg.define_component("dst2", gr.null_sink (gr.sizeof_int)) - sfg.connect("src1", 0, "nop1", 0) - sfg.connect("src1", 0, "nop1", 1) - sfg.connect("nop1", 0, "dst1", 0) - sfg.connect("nop1", 1, "dst2", 0) - sfg.validate () - - def test_015_validate(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src1", gr.null_source (gr.sizeof_int)) - sfg.define_component("nop1", gr.nop (gr.sizeof_int)) - sfg.define_component("dst1", gr.null_sink (gr.sizeof_int)) - sfg.define_component("dst2", gr.null_sink (gr.sizeof_int)) - sfg.connect("src1", 0, "nop1", 0) - sfg.connect("src1", 0, "nop1", 2) - sfg.connect("nop1", 0, "dst1", 0) - sfg.connect("nop1", 1, "dst2", 0) - self.assertRaises(RuntimeError, - lambda: sfg.validate ()) - - def test_016_validate(self): - sfg = gr.simple_flowgraph() - sfg.define_component("src1", gr.null_source (gr.sizeof_int)) - sfg.define_component("nop1", gr.nop (gr.sizeof_int)) - sfg.define_component("dst1", gr.null_sink (gr.sizeof_int)) - sfg.define_component("dst2", gr.null_sink (gr.sizeof_int)) - sfg.connect("src1", 0, "nop1", 0) - sfg.connect("src1", 0, "nop1", 1) - sfg.connect("nop1", 0, "dst1", 0) - sfg.connect("nop1", 2, "dst2", 0) - self.assertRaises(RuntimeError, - lambda: sfg.validate ()) - -if __name__ == "__main__": - gr_unittest.main() |