From e692e71305ecd71d3681fe37f3d76f350d67e276 Mon Sep 17 00:00:00 2001
From: jcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Date: Tue, 18 Sep 2007 18:59:00 +0000
Subject: Merge r6461:6464 from jcorgan/t162-staging into trunk.

* Final gr.top_block and gr.hier_block2 implementation inside
  gnuradio-core/src/lib/runtime

* Implementation of gr.hier_block2 versions of all the old-style blocks
  in blks.  These live in blks2.

* Addition of gr.hier_block2 based versions of gr-wxgui blocks

* Conversion of all the example code in gnuradio-examples to use this
  new code

* Conversion of all the gr-utils scripts to use the new code

The OFDM examples and related hierarchical blocks have not yet been
converted.  Code in the rest of the tree that is outside the core
and example components has also not yet been converted.



git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@6466 221aa14e-8319-0410-a670-987f0aec2ac5
---
 gnuradio-examples/python/hier/digital/tunnel.py | 290 ------------------------
 1 file changed, 290 deletions(-)
 delete mode 100755 gnuradio-examples/python/hier/digital/tunnel.py

(limited to 'gnuradio-examples/python/hier/digital/tunnel.py')

diff --git a/gnuradio-examples/python/hier/digital/tunnel.py b/gnuradio-examples/python/hier/digital/tunnel.py
deleted file mode 100755
index 7d17ff958a..0000000000
--- a/gnuradio-examples/python/hier/digital/tunnel.py
+++ /dev/null
@@ -1,290 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2005,2006 Free Software Foundation, Inc.
-# 
-# This file is part of GNU Radio
-# 
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-# 
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-# 
-
-
-# /////////////////////////////////////////////////////////////////////////////
-#
-#    This code sets up up a virtual ethernet interface (typically gr0),
-#    and relays packets between the interface and the GNU Radio PHY+MAC
-#
-#    What this means in plain language, is that if you've got a couple
-#    of USRPs on different machines, and if you run this code on those
-#    machines, you can talk between them using normal TCP/IP networking.
-#
-# /////////////////////////////////////////////////////////////////////////////
-
-
-from gnuradio import gr, gru, modulation_utils
-from gnuradio import usrp
-from gnuradio import eng_notation
-from gnuradio.eng_option import eng_option
-from optparse import OptionParser
-
-import random
-import time
-import struct
-import sys
-import os
-
-# from current dir
-from transmit_path import transmit_path
-from receive_path import receive_path
-import fusb_options
-
-#print os.getpid()
-#raw_input('Attach and press enter')
-
-
-# /////////////////////////////////////////////////////////////////////////////
-#
-#   Use the Universal TUN/TAP device driver to move packets to/from kernel
-#
-#   See /usr/src/linux/Documentation/networking/tuntap.txt
-#
-# /////////////////////////////////////////////////////////////////////////////
-
-# Linux specific...
-# TUNSETIFF ifr flags from <linux/tun_if.h>
-
-IFF_TUN		= 0x0001   # tunnel IP packets
-IFF_TAP		= 0x0002   # tunnel ethernet frames
-IFF_NO_PI	= 0x1000   # don't pass extra packet info
-IFF_ONE_QUEUE	= 0x2000   # beats me ;)
-
-def open_tun_interface(tun_device_filename):
-    from fcntl import ioctl
-    
-    mode = IFF_TAP | IFF_NO_PI
-    TUNSETIFF = 0x400454ca
-
-    tun = os.open(tun_device_filename, os.O_RDWR)
-    ifs = ioctl(tun, TUNSETIFF, struct.pack("16sH", "gr%d", mode))
-    ifname = ifs[:16].strip("\x00")
-    return (tun, ifname)
-    
-
-# /////////////////////////////////////////////////////////////////////////////
-#                             the flow graph
-# /////////////////////////////////////////////////////////////////////////////
-
-class my_graph(gr.flow_graph):
-
-    def __init__(self, mod_class, demod_class,
-                 rx_callback, options):
-
-        gr.flow_graph.__init__(self)
-        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)
-
-    def carrier_sensed(self):
-        """
-        Return True if the receive path thinks there's carrier
-        """
-        return self.rxpath.carrier_sensed()
-
-
-# /////////////////////////////////////////////////////////////////////////////
-#                           Carrier Sense MAC
-# /////////////////////////////////////////////////////////////////////////////
-
-class cs_mac(object):
-    """
-    Prototype carrier sense MAC
-
-    Reads packets from the TUN/TAP interface, and sends them to the PHY.
-    Receives packets from the PHY via phy_rx_callback, and sends them
-    into the TUN/TAP interface.
-
-    Of course, we're not restricted to getting packets via TUN/TAP, this
-    is just an example.
-    """
-    def __init__(self, tun_fd, verbose=False):
-        self.tun_fd = tun_fd       # file descriptor for TUN/TAP interface
-        self.verbose = verbose
-        self.fg = None             # flow graph (access to PHY)
-
-    def set_flow_graph(self, fg):
-        self.fg = fg
-
-    def phy_rx_callback(self, ok, payload):
-        """
-        Invoked by thread associated with PHY to pass received packet up.
-
-        @param ok: bool indicating whether payload CRC was OK
-        @param payload: contents of the packet (string)
-        """
-        if self.verbose:
-            print "Rx: ok = %r  len(payload) = %4d" % (ok, len(payload))
-        if ok:
-            os.write(self.tun_fd, payload)
-
-    def main_loop(self):
-        """
-        Main loop for MAC.
-        Only returns if we get an error reading from TUN.
-
-        FIXME: may want to check for EINTR and EAGAIN and reissue read
-        """
-        min_delay = 0.001               # seconds
-
-        while 1:
-            payload = os.read(self.tun_fd, 10*1024)
-            if not payload:
-                self.fg.send_pkt(eof=True)
-                break
-
-            if self.verbose:
-                print "Tx: len(payload) = %4d" % (len(payload),)
-
-            delay = min_delay
-            while self.fg.carrier_sensed():
-                sys.stderr.write('B')
-                time.sleep(delay)
-                if delay < 0.050:
-                    delay = delay * 2       # exponential back-off
-
-            self.fg.send_pkt(payload)
-
-
-# /////////////////////////////////////////////////////////////////////////////
-#                                   main
-# /////////////////////////////////////////////////////////////////////////////
-
-def main():
-
-    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)
-    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(sys.stderr)
-        sys.exit(1)
-
-    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)
-
-    # open the TUN/TAP interface
-    (tun_fd, tun_ifname) = open_tun_interface(options.tun_device_filename)
-
-    # Attempt to enable realtime scheduling
-    r = gr.enable_realtime_scheduling()
-    if r == gr.RT_OK:
-        realtime = True
-    else:
-        realtime = False
-        print "Note: failed to enable realtime scheduling"
-
-
-    # If the user hasn't set the fusb_* parameters on the command line,
-    # pick some values that will reduce latency.
-
-    if options.fusb_block_size == 0 and options.fusb_nblocks == 0:
-        if realtime:                        # be more aggressive
-            options.fusb_block_size = gr.prefs().get_long('fusb', 'rt_block_size', 1024)
-            options.fusb_nblocks    = gr.prefs().get_long('fusb', 'rt_nblocks', 16)
-        else:
-            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
-
-    # instantiate the MAC
-    mac = cs_mac(tun_fd, verbose=True)
-
-
-    # build the graph (PHY)
-    fg = my_graph(mods[options.modulation],
-                  demods[options.modulation],
-                  mac.phy_rx_callback,
-                  options)
-
-    mac.set_flow_graph(fg)    # give the MAC a handle for the PHY
-
-    if fg.txpath.bitrate() != fg.rxpath.bitrate():
-        print "WARNING: Transmit bitrate = %sb/sec, Receive bitrate = %sb/sec" % (
-            eng_notation.num_to_str(fg.txpath.bitrate()),
-            eng_notation.num_to_str(fg.rxpath.bitrate()))
-             
-    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(),)
-
-    fg.rxpath.set_carrier_threshold(options.carrier_threshold)
-    print "Carrier sense threshold:", options.carrier_threshold, "dB"
-    
-    print
-    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 192.168.200.1" % (tun_ifname,)
-    print
-    print "Be sure to use a different address in the same subnet for each machine."
-    print
-
-
-    fg.start()    # Start executing the flow graph (runs in separate threads)
-
-    mac.main_loop()    # don't expect this to return...
-
-    fg.stop()     # but if it does, tell flow graph to stop.
-    fg.wait()     # wait for it to finish
-                
-
-if __name__ == '__main__':
-    try:
-        main()
-    except KeyboardInterrupt:
-        pass
-- 
cgit v1.2.3