[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r3590 - gnuradio/branches/developers/eb/digital-wip/gn
From: |
eb |
Subject: |
[Commit-gnuradio] r3590 - gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2 |
Date: |
Tue, 19 Sep 2006 22:24:06 -0600 (MDT) |
Author: eb
Date: 2006-09-19 22:24:06 -0600 (Tue, 19 Sep 2006)
New Revision: 3590
Modified:
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/README
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/benchmark_rx.py
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/benchmark_tx.py
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/fusb_options.py
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/receive_path.py
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/transmit_path.py
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/tunnel.py
Log:
Updated tunnel.py to work with arbitrary type-1 modulations.
Split command line arguments into "normal" and "expert" to remove some
of the overwhelm from --help.
Modified:
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/README
===================================================================
---
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/README
2006-09-20 01:23:36 UTC (rev 3589)
+++
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/README
2006-09-20 04:24:06 UTC (rev 3590)
@@ -52,7 +52,7 @@
$ su
# ./tunnel.py --freq 423.0M --bitrate 500k
# # in another window on A, also as root...
- # ifconfig gr0 netmask 255.255.255.0 10.10.10.1
+ # ifconfig gr0 192.168.200.1
On machine B:
@@ -60,18 +60,18 @@
$ su
# ./tunnel.py --freq 423.0M --bitrate 500k
# # in another window on B, also as root...
- # ifconfig gr0 netmask 255.255.255.0 10.10.10.2
+ # ifconfig gr0 192.168.200.2
Now, on machine A you shold be able to ping machine B:
- $ ping 10.10.10.2
+ $ ping 192.168.200.2
and you should see some output for each packet in the
tunnel.py window if you used the -v option.
Likewise, on machine B:
- $ ping 10.10.10.1
+ $ ping 192.168.200.1
This now uses a carrier sense MAC, so you should be able to ssh
between the machines, web browse, etc.
Modified:
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/benchmark_rx.py
===================================================================
---
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/benchmark_rx.py
2006-09-20 01:23:36 UTC (rev 3589)
+++
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/benchmark_rx.py
2006-09-20 04:24:06 UTC (rev 3590)
@@ -28,6 +28,7 @@
import random
import struct
+import sys
# from current dir
from receive_path import receive_path
@@ -66,31 +67,36 @@
print "ok = %r pktno = %4d n_rcvd = %4d n_right = %4d" % (
ok, pktno, n_rcvd, n_right)
+
+ demods = modulation_utils.type_1_demods()
+
# Create Options Parser:
parser = OptionParser (option_class=eng_option, conflict_handler="resolve")
+ expert_grp = parser.add_option_group("Expert")
- demods = modulation_utils.type_1_demods()
parser.add_option("-m", "--modulation", type="choice",
choices=demods.keys(),
- default='dbpsk',
- help="Select modulation from %s [default=%%default]"
+ default='gmsk',
+ help="Select modulation from: %s [default=%%default]"
% (', '.join(demods.keys()),))
- receive_path.add_options(parser)
+ receive_path.add_options(parser, expert_grp)
- mod_grp = parser.add_option_group("Modulation")
for mod in demods.values():
- mod.add_options(mod_grp)
+ mod.add_options(expert_grp)
- fusb_options.add_options(parser)
+ fusb_options.add_options(expert_grp)
(options, args) = parser.parse_args ()
if len(args) != 0:
- parser.print_help()
+ parser.print_help(sys.stderr)
sys.exit(1)
- #if options.freq < 1e6:
- # options.freq *= 1e6
+ if options.rx_freq is None:
+ sys.stderr.write("You must specify -f FREQ or --freq FREQ\n")
+ parser.print_help(sys.stderr)
+ sys.exit(1)
+
# build the graph
fg = my_graph(demods[options.modulation], rx_callback, options)
Modified:
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/benchmark_tx.py
===================================================================
---
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/benchmark_tx.py
2006-09-20 01:23:36 UTC (rev 3589)
+++
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/benchmark_tx.py
2006-09-20 04:24:06 UTC (rev 3590)
@@ -55,12 +55,14 @@
def rx_callback(ok, payload):
print "ok = %r, payload = '%s'" % (ok, payload)
+ mods = modulation_utils.type_1_mods()
+
parser = OptionParser(option_class=eng_option, conflict_handler="resolve")
+ expert_grp = parser.add_option_group("Expert")
- mods = modulation_utils.type_1_mods()
parser.add_option("-m", "--modulation", type="choice", choices=mods.keys(),
- default='dbpsk',
- help="Select modulation from %s [default=%%default]"
+ default='gmsk',
+ help="Select modulation from: %s [default=%%default]"
% (', '.join(mods.keys()),))
parser.add_option("-s", "--size", type="eng_float", default=1500,
@@ -70,22 +72,24 @@
parser.add_option("","--discontinuous", action="store_true", default=False,
help="enable discontinous transmission (bursts of 5
packets)")
- transmit_path.add_options(parser)
+ transmit_path.add_options(parser, expert_grp)
- mod_grp = parser.add_option_group("Modulation")
for mod in mods.values():
- mod.add_options(mod_grp)
+ mod.add_options(expert_grp)
- fusb_options.add_options(parser)
+ fusb_options.add_options(expert_grp)
(options, args) = parser.parse_args ()
if len(args) != 0:
parser.print_help()
sys.exit(1)
- #if options.freq < 1e6:
- # options.freq *= 1e6
+ if options.tx_freq is None:
+ sys.stderr.write("You must specify -f FREQ or --freq FREQ\n")
+ parser.print_help(sys.stderr)
+ sys.exit(1)
+
pkt_size = int(options.size)
# build the graph
Modified:
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/fusb_options.py
===================================================================
---
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/fusb_options.py
2006-09-20 01:23:36 UTC (rev 3589)
+++
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/fusb_options.py
2006-09-20 04:24:06 UTC (rev 3590)
@@ -25,8 +25,7 @@
@param parser: instance of OptionParser
"""
- fusb_grp = parser.add_option_group("Fast USB")
- fusb_grp.add_option("-B", "--fusb-block-size", type="int", default=0,
- help="specify fast usb block size [default=%default]")
- fusb_grp.add_option("-N", "--fusb-nblocks", type="int", default=0,
- help="specify number of fast usb blocks
[default=%default]")
+ parser.add_option("-B", "--fusb-block-size", type="int", default=0,
+ help="specify fast usb block size [default=%default]")
+ parser.add_option("-N", "--fusb-nblocks", type="int", default=0,
+ help="specify number of fast usb blocks
[default=%default]")
Modified:
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/receive_path.py
===================================================================
---
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/receive_path.py
2006-09-20 01:23:36 UTC (rev 3589)
+++
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/receive_path.py
2006-09-20 04:24:06 UTC (rev 3590)
@@ -24,6 +24,7 @@
from gnuradio import usrp
from gnuradio import eng_notation
import copy
+import sys
# from current dir
from pick_bitrate import pick_rx_bitrate
@@ -82,6 +83,10 @@
callback=self._rx_callback,
threshold=-1)
+ if self._rx_freq is None:
+ sys.stderr.write("-f FREQ or --freq FREQ or --rx-freq FREQ must be
specified\n")
+ raise SystemExit
+
ok = self.set_freq(self._rx_freq)
if not ok:
print "Failed to set Rx frequency to %s" %
(eng_notation.num_to_str(self._rx_freq))
@@ -187,24 +192,26 @@
self.probe.set_threshold(threshold_in_db)
- def add_options(parser):
+ def add_options(normal, expert):
"""
Adds receiver-specific options to the Options Parser
"""
- parser.add_option("-v", "--verbose", action="store_true",
default=False)
- rx_grp = parser.add_option_group("Receive Path")
- rx_grp.add_option("-R", "--rx-subdev-spec", type="subdev",
default=None,
+ add_freq_option(normal)
+ if not normal.has_option("--bitrate"):
+ normal.add_option("-r", "--bitrate", type="eng_float",
default=None,
+ help="specify bitrate. samples-per-symbol and
interp/decim will be derived.")
+ normal.add_option("-R", "--rx-subdev-spec", type="subdev",
default=None,
help="select USRP Rx side A or B")
- rx_grp.add_option("", "--rx-freq", type="eng_float", default=None,
+ normal.add_option("", "--rx-gain", type="eng_float", default=50.0,
metavar="GAIN",
+ help="normalized receiver gain: 0 <= GAIN <= 100
[default=%default]")
+ normal.add_option("-v", "--verbose", action="store_true",
default=False)
+
+ expert.add_option("-S", "--samples-per-symbol", type="int",
default=None,
+ help="set samples/symbol [default=%default]")
+ expert.add_option("", "--rx-freq", type="eng_float", default=None,
help="set Rx frequency to FREQ [default=%default]",
metavar="FREQ")
- rx_grp.add_option("-r", "--bitrate", type="eng_float", default=None,
- help="specify bitrate. samples_per_symbol and decim
will be derived.")
- rx_grp.add_option("-S", "--samples-per-symbol", type="int",
default=None,
- help="set samples/symbol [default=%default]")
- rx_grp.add_option("-d", "--decim", type="intx", default=None,
+ expert.add_option("-d", "--decim", type="intx", default=None,
help="set fpga decimation rate to DECIM
[default=%default]")
- rx_grp.add_option("", "--rx-gain", type="eng_float", default=50.0,
metavar="GAIN",
- help="normalized receiver gain: 0 <= GAIN <= 100
[default=%default]")
# Make a static method to call before instantiation
add_options = staticmethod(add_options)
@@ -220,3 +227,17 @@
print "decim: %3d" % (self._decim)
print "Rx Frequency: %s" %
(eng_notation.num_to_str(self._rx_freq))
# print "Rx Frequency: %f" % (self._rx_freq)
+
+def add_freq_option(parser):
+ """
+ Hackery that has the -f / --freq option set both tx_freq and rx_freq
+ """
+ def freq_callback(option, opt_str, value, parser):
+ parser.values.rx_freq = value
+ parser.values.tx_freq = value
+
+ if not parser.has_option('--freq'):
+ parser.add_option('-f', '--freq', type="eng_float",
+ action="callback", callback=freq_callback,
+ help="set Tx and/or Rx frequency to FREQ
[default=%default]",
+ metavar="FREQ")
Modified:
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/transmit_path.py
===================================================================
---
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/transmit_path.py
2006-09-20 01:23:36 UTC (rev 3589)
+++
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/transmit_path.py
2006-09-20 04:24:06 UTC (rev 3590)
@@ -24,6 +24,7 @@
from gnuradio import eng_notation
import copy
+import sys
# from current dir
from pick_bitrate import pick_tx_bitrate
@@ -63,6 +64,10 @@
# Get mod_kwargs
mod_kwargs = self._modulator_class.extract_kwargs_from_options(options)
+ if self._tx_freq is None:
+ sys.stderr.write("-f FREQ or --freq FREQ or --tx-freq FREQ must be
specified\n")
+ raise SystemExit
+
# Set center frequency of USRP
ok = self.set_freq(self._tx_freq)
if not ok:
@@ -173,24 +178,26 @@
def interp(self):
return self._interp
- def add_options(parser):
+ def add_options(normal, expert):
"""
Adds transmitter-specific options to the Options Parser
"""
- parser.add_option("-v", "--verbose", action="store_true",
default=False)
- tx_grp = parser.add_option_group("Transmit Path")
- tx_grp.add_option("-T", "--tx-subdev-spec", type="subdev",
default=None,
+ add_freq_option(normal)
+ if not normal.has_option('--bitrate'):
+ normal.add_option("-r", "--bitrate", type="eng_float",
default=None,
+ help="specify bitrate. samples-per-symbol and
interp/decim will be derived.")
+ normal.add_option("-T", "--tx-subdev-spec", type="subdev",
default=None,
help="select USRP Tx side A or B")
- tx_grp.add_option("", "--tx-freq", type="eng_float", default=None,
+ normal.add_option("", "--tx-amplitude", type="eng_float",
default=12000, metavar="AMPL",
+ help="set transmitter digital amplitude: 0 <= AMPL <
32768 [default=%default]")
+ normal.add_option("-v", "--verbose", action="store_true",
default=False)
+
+ expert.add_option("-S", "--samples-per-symbol", type="int",
default=None,
+ help="set samples/symbol [default=%default]")
+ expert.add_option("", "--tx-freq", type="eng_float", default=None,
help="set transmit frequency to FREQ
[default=%default]", metavar="FREQ")
- tx_grp.add_option("-r", "--bitrate", type="eng_float", default=None,
- help="specify bitrate. samples-per-symbol and
interp will be derived.")
- tx_grp.add_option("-S", "--samples-per-symbol", type="int",
default=None,
- help="set samples/symbol [default=%default]")
- tx_grp.add_option("-i", "--interp", type="intx", default=None,
+ expert.add_option("-i", "--interp", type="intx", default=None,
help="set fpga interpolation rate to INTERP
[default=%default]")
- tx_grp.add_option("", "--tx-amplitude", type="eng_float",
default=12000, metavar="AMPL",
- help="set transmitter digital amplitude: 0 <= AMPL <
32768 [default=%default]")
# Make a static method to call before instantiation
add_options = staticmethod(add_options)
@@ -205,3 +212,17 @@
print "interp: %3d" % (self._interp)
print "Tx Frequency: %s" %
(eng_notation.num_to_str(self._tx_freq))
+
+def add_freq_option(parser):
+ """
+ Hackery that has the -f / --freq option set both tx_freq and rx_freq
+ """
+ def freq_callback(option, opt_str, value, parser):
+ parser.values.rx_freq = value
+ parser.values.tx_freq = value
+
+ if not parser.has_option('--freq'):
+ parser.add_option('-f', '--freq', type="eng_float",
+ action="callback", callback=freq_callback,
+ help="set Tx and/or Rx frequency to FREQ
[default=%default]",
+ metavar="FREQ")
Modified:
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/tunnel.py
===================================================================
---
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/tunnel.py
2006-09-20 01:23:36 UTC (rev 3589)
+++
gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2/tunnel.py
2006-09-20 04:24:06 UTC (rev 3590)
@@ -33,7 +33,7 @@
# /////////////////////////////////////////////////////////////////////////////
-from gnuradio import gr, gru, blks
+from gnuradio import gr, gru, modulation_utils
from gnuradio import usrp
from gnuradio import eng_notation
from gnuradio.eng_option import eng_option
@@ -89,17 +89,11 @@
class my_graph(gr.flow_graph):
def __init__(self, mod_class, demod_class,
- tx_subdev_spec, rx_subdev_spec,
- rx_callback,
- options, kwargs):
+ rx_callback, options):
gr.flow_graph.__init__(self)
- self.txpath = transmit_path(self, mod_class, tx_subdev_spec,
- options.bitrate, options.interp,
options.spb,
- options.tx_gain, options, kwargs)
- self.rxpath = receive_path(self, demod_class, rx_subdev_spec,
- options.bitrate, options.decim, options.spb,
- rx_callback, options, {})
+ self.txpath = transmit_path(self, mod_class, options)
+ self.rxpath = receive_path(self, demod_class, rx_callback, options)
def send_pkt(self, payload='', eof=False):
return self.txpath.send_pkt(payload, eof)
@@ -180,47 +174,44 @@
def main():
- parser = OptionParser (option_class=eng_option)
- parser.add_option("-f", "--freq", type="eng_float", default=423.1e6,
- help="set Tx and Rx frequency to FREQ
[default=%default]",
- metavar="FREQ")
- parser.add_option("-r", "--bitrate", type="eng_float", default=None,
- help="specify bitrate. spb and interp will be derived.")
- parser.add_option("-g", "--rx-gain", type="eng_float", default=27,
- help="set rx gain")
- parser.add_option("-p", "--tx-gain", type="eng_float", default=100,
- help="set tx gain")
- parser.add_option("-T", "--tx-subdev-spec", type="subdev", default=None,
- help="select USRP Tx side A or B")
- parser.add_option("-R", "--rx-subdev-spec", type="subdev", default=None,
- help="select USRP Rx side A or B")
- parser.add_option("-S", "--spb", type="int", default=None,
- help="set samples/baud [default=%default]")
- parser.add_option("-d", "--decim", type="intx", default=None,
- help="set fpga decim rate to DECIM [default=%default]")
- parser.add_option("-i", "--interp", type="intx", default=None,
- help="set fpga interpolation rate to INTERP
[default=%default]")
- parser.add_option("-c", "--carrier-threshold", type="eng_float",
default=30,
- help="set carrier detect threshold (dB)
[default=%default]")
- parser.add_option("", "--bt", type="float", default=0.3,
- help="set bandwidth-time product [default=%default]")
- parser.add_option("","--tun-device-filename", default="/dev/net/tun",
- help="path to tun device file [default=%default]")
+ mods = modulation_utils.type_1_mods()
+ demods = modulation_utils.type_1_demods()
+
+ parser = OptionParser (option_class=eng_option, conflict_handler="resolve")
+ expert_grp = parser.add_option_group("Expert")
+
+ parser.add_option("-m", "--modulation", type="choice", choices=mods.keys(),
+ default='gmsk',
+ help="Select modulation from: %s [default=%%default]"
+ % (', '.join(mods.keys()),))
+
parser.add_option("-v","--verbose", action="store_true", default=False)
- fusb_options.add_options(parser)
- (options, args) = parser.parse_args ()
+ expert_grp.add_option("-c", "--carrier-threshold", type="eng_float",
default=30,
+ help="set carrier detect threshold (dB)
[default=%default]")
+ expert_grp.add_option("","--tun-device-filename", default="/dev/net/tun",
+ help="path to tun device file [default=%default]")
+ transmit_path.add_options(parser, expert_grp)
+ receive_path.add_options(parser, expert_grp)
+
+ for mod in mods.values():
+ mod.add_options(expert_grp)
+
+ for demod in demods.values():
+ demod.add_options(expert_grp)
+
+ fusb_options.add_options(expert_grp)
+
+ (options, args) = parser.parse_args ()
if len(args) != 0:
- parser.print_help()
+ parser.print_help(sys.stderr)
sys.exit(1)
- if options.freq < 1e6:
- options.freq *= 1e6
+ if options.rx_freq is None or options.tx_freq is None:
+ sys.stderr.write("You must specify -f FREQ or --freq FREQ\n")
+ parser.print_help(sys.stderr)
+ sys.exit(1)
- mod_kwargs = {
- 'bt' : options.bt,
- }
-
# open the TUN/TAP interface
(tun_fd, tun_ifname) = open_tun_interface(options.tun_device_filename)
@@ -244,18 +235,18 @@
options.fusb_block_size = gr.prefs().get_long('fusb',
'block_size', 4096)
options.fusb_nblocks = gr.prefs().get_long('fusb', 'nblocks',
16)
- print "fusb_block_size =", options.fusb_block_size
- print "fusb_nblocks =", options.fusb_nblocks
+ #print "fusb_block_size =", options.fusb_block_size
+ #print "fusb_nblocks =", options.fusb_nblocks
# instantiate the MAC
mac = cs_mac(tun_fd, verbose=True)
# build the graph (PHY)
- fg = my_graph(blks.gmsk2_mod, blks.gmsk2_demod,
- options.tx_subdev_spec, options.rx_subdev_spec,
+ fg = my_graph(mods[options.modulation],
+ demods[options.modulation],
mac.phy_rx_callback,
- options, mod_kwargs)
+ options)
mac.set_flow_graph(fg) # give the MAC a handle for the PHY
@@ -264,24 +255,13 @@
eng_notation.num_to_str(fg.txpath.bitrate()),
eng_notation.num_to_str(fg.rxpath.bitrate()))
- print "bitrate: %sb/sec" % (eng_notation.num_to_str(fg.txpath.bitrate()),)
- print "spb: %3d" % (fg.txpath.spb(),)
- print "interp: %3d" % (fg.txpath.interp(),)
+ print "modulation: %s" % (options.modulation,)
+ print "freq: %s" %
(eng_notation.num_to_str(options.tx_freq))
+ print "bitrate: %sb/sec" %
(eng_notation.num_to_str(fg.txpath.bitrate()),)
+ print "samples/symbol: %3d" % (fg.txpath.samples_per_symbol(),)
+ print "interp: %3d" % (fg.txpath.interp(),)
+ print "decim: %3d" % (fg.rxpath.decim(),)
- ok = fg.txpath.set_freq(options.freq)
- if not ok:
- print "Failed to set Tx frequency to %s" %
(eng_notation.num_to_str(options.freq),)
- raise SystemExit
-
- ok = fg.rxpath.set_freq(options.freq)
- if not ok:
- print "Failed to set Rx frequency to %s" %
(eng_notation.num_to_str(options.freq),)
- raise SystemExit
-
- print "Tx gain: ", options.tx_gain
- fg.rxpath.set_gain(options.rx_gain)
- print "Rx gain_range: ", fg.rxpath.subdev.gain_range(), " using",
fg.rxpath.gain
-
fg.rxpath.set_carrier_threshold(options.carrier_threshold)
print "Carrier sense threshold:", options.carrier_threshold, "dB"
@@ -289,7 +269,7 @@
print "Allocated virtual ethernet interface: %s" % (tun_ifname,)
print "You must now use ifconfig to set its IP address. E.g.,"
print
- print " $ sudo ifconfig %s 10.10.10.1" % (tun_ifname,)
+ print " $ sudo ifconfig %s 192.168.200.1" % (tun_ifname,)
print
print "Be sure to use a different address in the same subnet for each
machine."
print
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r3590 - gnuradio/branches/developers/eb/digital-wip/gnuradio-examples/python/gmsk2,
eb <=