[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r6349 - in gnuradio/branches/developers/jcorgan/t162:
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r6349 - in gnuradio/branches/developers/jcorgan/t162: gnuradio-core/src/lib/runtime gnuradio-core/src/python/gnuradio/blks2impl gnuradio-examples/python/digital |
Date: |
Fri, 7 Sep 2007 10:06:24 -0600 (MDT) |
Author: jcorgan
Date: 2007-09-07 10:06:24 -0600 (Fri, 07 Sep 2007)
New Revision: 6349
Modified:
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.cc
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.h
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.i
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.h
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/python/gnuradio/blks2impl/gmsk.py
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/benchmark_tx.py
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/transmit_path.py
Log:
Partial conversion of digital/benchmark_tx.py, work-in-progress.
Modified:
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
2007-09-07 15:46:11 UTC (rev 6348)
+++
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
2007-09-07 16:06:24 UTC (rev 6349)
@@ -31,7 +31,7 @@
#include <iostream>
#include <map>
-#define GR_FLAT_FLOWGRAPH_DEBUG 0
+#define GR_FLAT_FLOWGRAPH_DEBUG 1
gr_flat_flowgraph_sptr
gr_make_flat_flowgraph()
Modified:
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.cc
2007-09-07 15:46:11 UTC (rev 6348)
+++
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.cc
2007-09-07 16:06:24 UTC (rev 6349)
@@ -88,3 +88,9 @@
{
d_impl->unlock();
}
+
+void
+gr_top_block::set_verbose(int verbosity)
+{
+ d_impl->set_verbose(verbosity);
+}
Modified:
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.h
===================================================================
---
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.h
2007-09-07 15:46:11 UTC (rev 6348)
+++
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.h
2007-09-07 16:06:24 UTC (rev 6349)
@@ -97,6 +97,13 @@
* reconfiguration happens.
*/
virtual void unlock();
+
+ /*!
+ * Set debug verbosity
+ *
+ */
+ void set_verbose(int verbosity);
+
};
#endif /* INCLUDED_GR_TOP_BLOCK_H */
Modified:
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.i
===================================================================
---
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.i
2007-09-07 15:46:11 UTC (rev 6348)
+++
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block.i
2007-09-07 16:06:24 UTC (rev 6349)
@@ -46,6 +46,7 @@
void run();
void lock();
void unlock();
+ void set_verbose(int verbosity);
};
%{
Modified:
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
2007-09-07 15:46:11 UTC (rev 6348)
+++
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.cc
2007-09-07 16:06:24 UTC (rev 6349)
@@ -34,7 +34,7 @@
#include <iostream>
#include <string.h>
-#define GR_TOP_BLOCK_IMPL_DEBUG 0
+#define VERBOSE 1
static gr_top_block_impl *s_impl = 0;
@@ -59,7 +59,7 @@
static void
runtime_sigint_handler(int signum)
{
- if (GR_TOP_BLOCK_IMPL_DEBUG){
+ if (VERBOSE) {
char *msg = "SIGINT received, calling stop()\n";
::write(1, msg, strlen(msg)); // write is OK to call from signal
handler
}
@@ -71,7 +71,8 @@
// ----------------------------------------------------------------
gr_top_block_impl::gr_top_block_impl(gr_top_block *owner)
- : d_running(false),
+ : d_verbose(0),
+ d_running(false),
d_ffg(),
d_owner(owner),
d_lock_count(0)
@@ -91,7 +92,7 @@
void
gr_top_block_impl::start()
{
- if (GR_TOP_BLOCK_IMPL_DEBUG)
+ if (d_verbose)
std::cout << "start: entered" << std::endl;
if (d_running)
@@ -111,15 +112,18 @@
void
gr_top_block_impl::start_threads()
{
- if (GR_TOP_BLOCK_IMPL_DEBUG)
+ if (d_verbose)
std::cout << "start_threads: entered" << std::endl;
d_graphs = d_ffg->partition();
+ if (d_verbose)
+ std::cout << "flow graph has " << d_graphs.size() << " disjoint
sub-graphs"
+ << std::endl;
for (std::vector<gr_basic_block_vector_t>::iterator p = d_graphs.begin();
p != d_graphs.end(); p++) {
gr_scheduler_thread *thread = new
gr_scheduler_thread(make_gr_block_vector(*p));
d_threads.push_back(thread);
- if (GR_TOP_BLOCK_IMPL_DEBUG)
+ if (d_verbose)
std::cout << "start_threads: starting " << thread << std::endl;
thread->start();
}
@@ -134,7 +138,7 @@
void
gr_top_block_impl::stop()
{
- if (GR_TOP_BLOCK_IMPL_DEBUG){
+ if (d_verbose){
char *msg = "stop: entered\n";
::write(1, msg, strlen(msg));
}
@@ -149,18 +153,18 @@
void
gr_top_block_impl::wait()
{
- if (GR_TOP_BLOCK_IMPL_DEBUG)
+ if (d_verbose)
std::cout << "wait: entered" << std::endl;
void *dummy_status; // don't ever dereference this
gr_local_sighandler sigint(SIGINT, runtime_sigint_handler);
for (gr_scheduler_thread_viter_t p = d_threads.begin(); p !=
d_threads.end(); p++) {
- if (GR_TOP_BLOCK_IMPL_DEBUG)
+ if (d_verbose)
std::cout << "wait: joining thread " << (*p) << std::endl;
(*p)->join(&dummy_status); // pthreads will self-delete, so pointer is now
dead
(*p) = 0; // FIXME: switch to stl::list and actually remove from container
- if (GR_TOP_BLOCK_IMPL_DEBUG)
+ if (d_verbose)
std::cout << "wait: join returned" << std::endl;
}
@@ -174,7 +178,7 @@
{
omni_mutex_lock lock(d_reconf);
d_lock_count++;
- if (GR_TOP_BLOCK_IMPL_DEBUG)
+ if (d_verbose)
std::cout << "runtime: locked, count = " << d_lock_count << std::endl;
}
@@ -186,11 +190,11 @@
throw std::runtime_error("unpaired unlock() call");
d_lock_count--;
- if (GR_TOP_BLOCK_IMPL_DEBUG)
+ if (d_verbose)
std::cout << "unlock: unlocked, count = " << d_lock_count << std::endl;
if (d_lock_count == 0) {
- if (GR_TOP_BLOCK_IMPL_DEBUG)
+ if (d_verbose)
std::cout << "unlock: restarting flowgraph" << std::endl;
restart();
}
@@ -199,7 +203,7 @@
void
gr_top_block_impl::restart()
{
- if (GR_TOP_BLOCK_IMPL_DEBUG)
+ if (d_verbose)
std::cout << "restart: entered" << std::endl;
if (!d_running)
@@ -208,7 +212,7 @@
// Stop scheduler threads and wait for completion
stop();
wait();
- if (GR_TOP_BLOCK_IMPL_DEBUG)
+ if (d_verbose)
std::cout << "restart: threads stopped" << std::endl;
// Create new simple flow graph
@@ -216,9 +220,15 @@
new_ffg->validate(); // check consistency, sanity, etc
new_ffg->merge_connections(d_ffg); // reuse buffers, etc
- if (GR_TOP_BLOCK_IMPL_DEBUG)
+ if (d_verbose)
std::cout << "restart: replacing old flow graph with new" << std::endl;
d_ffg = new_ffg;
start_threads();
}
+
+void
+gr_top_block_impl::set_verbose(int verbosity)
+{
+ d_verbose = verbosity;
+}
Modified:
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.h
===================================================================
---
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.h
2007-09-07 15:46:11 UTC (rev 6348)
+++
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_top_block_impl.h
2007-09-07 16:06:24 UTC (rev 6349)
@@ -53,8 +53,12 @@
// Unlock the top block at end of reconfiguration
void unlock();
+ // Enable verbose messages
+ void set_verbose(int verbosity);
+
private:
+ int d_verbose;
bool d_running;
gr_flat_flowgraph_sptr d_ffg;
gr_scheduler_thread_vector_t d_threads;
Modified:
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/python/gnuradio/blks2impl/gmsk.py
===================================================================
---
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/python/gnuradio/blks2impl/gmsk.py
2007-09-07 15:46:11 UTC (rev 6348)
+++
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/python/gnuradio/blks2impl/gmsk.py
2007-09-07 16:06:24 UTC (rev 6349)
@@ -47,9 +47,9 @@
# GMSK modulator
# /////////////////////////////////////////////////////////////////////////////
-class gmsk_mod(gr.hier_block):
+class gmsk_mod(gr.hier_block2):
- def __init__(self, fg,
+ def __init__(self,
samples_per_symbol=_def_samples_per_symbol,
bt=_def_bt,
verbose=_def_verbose,
@@ -61,8 +61,6 @@
The input is a byte stream (unsigned char) and the
output is the complex modulated signal at baseband.
- @param fg: flow graph
- @type fg: flow graph
@param samples_per_symbol: samples per baud >= 2
@type samples_per_symbol: integer
@param bt: Gaussian filter bandwidth * symbol time
@@ -73,7 +71,10 @@
@type debug: bool
"""
- self._fg = fg
+ gr.hier_block2.__init__(self, "gmsk_mod",
+ gr.io_signature(1, 1, gr.sizeof_char), #
Input signature
+ gr.io_signature(1, 1, gr.sizeof_gr_complex)) #
Output signature
+
self._samples_per_symbol = samples_per_symbol
self._bt = bt
@@ -109,8 +110,7 @@
self._setup_logging()
# Connect & Initialize base class
- self._fg.connect(self.nrz, self.gaussian_filter, self.fmmod)
- gr.hier_block.__init__(self, self._fg, self.nrz, self.fmmod)
+ self.connect(self, self.nrz, self.gaussian_filter, self.fmmod, self)
def samples_per_symbol(self):
return self._samples_per_symbol
@@ -127,12 +127,12 @@
def _setup_logging(self):
print "Modulation logging turned on."
- self._fg.connect(self.nrz,
- gr.file_sink(gr.sizeof_float, "nrz.dat"))
- self._fg.connect(self.gaussian_filter,
- gr.file_sink(gr.sizeof_float, "gaussian_filter.dat"))
- self._fg.connect(self.fmmod,
- gr.file_sink(gr.sizeof_gr_complex, "fmmod.dat"))
+ self.connect(self.nrz,
+ gr.file_sink(gr.sizeof_float, "nrz.dat"))
+ self.connect(self.gaussian_filter,
+ gr.file_sink(gr.sizeof_float, "gaussian_filter.dat"))
+ self.connect(self.fmmod,
+ gr.file_sink(gr.sizeof_gr_complex, "fmmod.dat"))
def add_options(parser):
@@ -158,9 +158,9 @@
# GMSK demodulator
# /////////////////////////////////////////////////////////////////////////////
-class gmsk_demod(gr.hier_block):
+class gmsk_demod(gr.hier_block2):
- def __init__(self, fg,
+ def __init__(self,
samples_per_symbol=_def_samples_per_symbol,
gain_mu=_def_gain_mu,
mu=_def_mu,
@@ -175,8 +175,6 @@
The input is the complex modulated signal at baseband.
The output is a stream of bits packed 1 bit per byte (the LSB)
- @param fg: flow graph
- @type fg: flow graph
@param samples_per_symbol: samples per baud
@type samples_per_symbol: integer
@param verbose: Print information about modulator?
@@ -196,7 +194,10 @@
@param float
"""
- self._fg = fg
+ gr.hier_block2.__init__(self, "gmsk_demod",
+ gr.io_signature(1, 1, gr.sizeof_gr_complex), #
Input signature
+ gr.io_signature(1, 1, gr.sizeof_char)) #
Output signature
+
self._samples_per_symbol = samples_per_symbol
self._gain_mu = gain_mu
self._mu = mu
@@ -233,8 +234,7 @@
self._setup_logging()
# Connect & Initialize base class
- self._fg.connect(self.fmdemod, self.clock_recovery, self.slicer)
- gr.hier_block.__init__(self, self._fg, self.fmdemod, self.slicer)
+ self._fg.connect(self, self.fmdemod, self.clock_recovery, self.slicer,
self)
def samples_per_symbol(self):
return self._samples_per_symbol
@@ -255,12 +255,12 @@
def _setup_logging(self):
print "Demodulation logging turned on."
- self._fg.connect(self.fmdemod,
- gr.file_sink(gr.sizeof_float, "fmdemod.dat"))
- self._fg.connect(self.clock_recovery,
- gr.file_sink(gr.sizeof_float, "clock_recovery.dat"))
- self._fg.connect(self.slicer,
- gr.file_sink(gr.sizeof_char, "slicer.dat"))
+ self.connect(self.fmdemod,
+ gr.file_sink(gr.sizeof_float, "fmdemod.dat"))
+ self.connect(self.clock_recovery,
+ gr.file_sink(gr.sizeof_float, "clock_recovery.dat"))
+ self.connect(self.slicer,
+ gr.file_sink(gr.sizeof_char, "slicer.dat"))
def add_options(parser):
"""
Modified:
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/benchmark_tx.py
===================================================================
---
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/benchmark_tx.py
2007-09-07 15:46:11 UTC (rev 6348)
+++
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/benchmark_tx.py
2007-09-07 16:06:24 UTC (rev 6349)
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2005, 2006 Free Software Foundation, Inc.
+# Copyright 2005, 2006, 2007 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -37,10 +37,10 @@
#raw_input('Attach and press enter')
-class my_graph(gr.flow_graph):
+class my_top_block(gr.top_block):
def __init__(self, modulator_class, options):
- gr.flow_graph.__init__(self)
- self.txpath = transmit_path(self, modulator_class, options)
+ gr.top_block.__init__(self)
+ self.txpath = transmit_path(modulator_class, options)
# /////////////////////////////////////////////////////////////////////////////
@@ -50,7 +50,7 @@
def main():
def send_pkt(payload='', eof=False):
- return fg.txpath.send_pkt(payload, eof)
+ return tb.txpath.send_pkt(payload, eof)
def rx_callback(ok, payload):
print "ok = %r, payload = '%s'" % (ok, payload)
@@ -95,14 +95,15 @@
source_file = open(options.from_file, 'r')
# build the graph
- fg = my_graph(mods[options.modulation], options)
+ tb = my_top_block(mods[options.modulation], options)
+ tb.set_verbose(1)
r = gr.enable_realtime_scheduling()
if r != gr.RT_OK:
print "Warning: failed to enable realtime scheduling"
- fg.start() # start flow graph
-
+ tb.start() # start flow graph
+
# generate and send packets
nbytes = int(1e6 * options.megabytes)
n = 0
@@ -126,8 +127,9 @@
pktno += 1
send_pkt(eof=True)
- fg.wait() # wait for it to finish
+ tb.wait() # wait for it to finish
+
if __name__ == '__main__':
try:
main()
Modified:
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/transmit_path.py
===================================================================
---
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/transmit_path.py
2007-09-07 15:46:11 UTC (rev 6348)
+++
gnuradio/branches/developers/jcorgan/t162/gnuradio-examples/python/digital/transmit_path.py
2007-09-07 16:06:24 UTC (rev 6349)
@@ -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
#
@@ -19,7 +19,7 @@
# Boston, MA 02110-1301, USA.
#
-from gnuradio import gr, gru, blks
+from gnuradio import gr, gru, blks2
from gnuradio import usrp
from gnuradio import eng_notation
@@ -33,11 +33,14 @@
# transmit path
# /////////////////////////////////////////////////////////////////////////////
-class transmit_path(gr.hier_block):
- def __init__(self, fg, modulator_class, options):
+class transmit_path(gr.hier_block2):
+ def __init__(self, modulator_class, options):
'''
See below for what options should hold
'''
+ gr.hier_block2.__init__(self, "transmit_path",
+ gr.io_signature(0, 0, 0), # Input signature
+ gr.io_signature(0, 0, 0)) # Output signature
options = copy.copy(options) # make a copy so we can destructively
modify
@@ -77,12 +80,11 @@
# transmitter
self.packet_transmitter = \
- blks.mod_pkts(fg,
- self._modulator_class(fg, **mod_kwargs),
- access_code=None,
- msgq_limit=4,
- pad_for_usrp=True,
- use_whitener_offset=options.use_whitener_offset)
+ blks2.mod_pkts(self._modulator_class(**mod_kwargs),
+ access_code=None,
+ msgq_limit=4,
+ pad_for_usrp=True,
+ use_whitener_offset=options.use_whitener_offset)
# Set the USRP for maximum transmit gain
@@ -100,8 +102,7 @@
self._print_verbage()
# Create and setup transmit path flow graph
- fg.connect(self.packet_transmitter, self.amp, self.u)
- gr.hier_block.__init__(self, fg, None, None)
+ self.connect(self.packet_transmitter, self.amp, self.u)
def _setup_usrp_sink(self):
"""
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r6349 - in gnuradio/branches/developers/jcorgan/t162: gnuradio-core/src/lib/runtime gnuradio-core/src/python/gnuradio/blks2impl gnuradio-examples/python/digital,
jcorgan <=