summaryrefslogtreecommitdiff
path: root/gnuradio-core/src/python
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-core/src/python')
-rw-r--r--gnuradio-core/src/python/gnuradio/blksimpl2/d8psk.py87
-rw-r--r--gnuradio-core/src/python/gnuradio/blksimpl2/dbpsk.py94
-rw-r--r--gnuradio-core/src/python/gnuradio/blksimpl2/dqpsk.py87
-rw-r--r--gnuradio-core/src/python/gnuradio/blksimpl2/gmsk.py42
-rw-r--r--gnuradio-core/src/python/gnuradio/blksimpl2/pkt.py18
-rw-r--r--gnuradio-core/src/python/gnuradio/gr/hier_block2.py55
-rwxr-xr-xgnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py262
-rwxr-xr-xgnuradio-core/src/python/gnuradio/gr/qa_simple_flowgraph.py142
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()