commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r5559 - gnuradio/branches/developers/jcorgan/snd/gr-so


From: jcorgan
Subject: [Commit-gnuradio] r5559 - gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python
Date: Mon, 28 May 2007 15:41:22 -0600 (MDT)

Author: jcorgan
Date: 2007-05-28 15:41:22 -0600 (Mon, 28 May 2007)
New Revision: 5559

Added:
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/sounder.py
Removed:
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_lp.sh
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_rx.sh
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_tx.sh
Modified:
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/Makefile.am
   
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/usrp_sounder.py
Log:
Work in progress.

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/Makefile.am
===================================================================
--- gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/Makefile.am  
2007-05-28 20:38:36 UTC (rev 5558)
+++ gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/Makefile.am  
2007-05-28 21:41:22 UTC (rev 5559)
@@ -21,12 +21,21 @@
 
 include $(top_srcdir)/Makefile.common
 
+# Install this stuff so that it ends up as the gnuradio.sounder module
+# This usually ends up at:
+#   ${prefix}/lib/python${python_version}/site-packages/gnuradio
+
+ourpythondir = $(grpythondir)
+ourlibdir    = $(grpyexecdir)
+
 EXTRA_DIST =           \
-       usrp_sounder.py \
        qa_nothing.py   \
        run_tests.in
 
 bin_SCRIPTS =          \
        usrp_sounder.py
 
-MOSTLYCLEANFILES = *~ *.pyc *.pyo output.*
+ourpython_PYTHON =     \
+       sounder.py
+
+MOSTLYCLEANFILES = *~ *.pyc *.pyo
\ No newline at end of file

Added: gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/sounder.py
===================================================================
--- gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/sounder.py   
                        (rev 0)
+++ gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/sounder.py   
2007-05-28 21:41:22 UTC (rev 5559)
@@ -0,0 +1,228 @@
+#!/usr/bin/env python
+#
+# Copyright 2007 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 2, 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.
+# 
+
+from gnuradio import gr, usrp
+from gnuradio import eng_notation
+
+n2s = eng_notation.num_to_str
+
+FR_MODE = usrp.FR_USER_0
+bmFR_MODE_RESET = 1 << 0       # bit 0: active high reset
+bmFR_MODE_TX    = 1 << 1       # bit 1: enable transmitter
+bmFR_MODE_RX    = 1 << 2       # bit 2: enable receiver
+bmFR_MODE_LP    = 1 << 3       # bit 3: enable digital loopback
+
+FR_DEGREE = usrp.FR_USER_1
+
+def pick_subdevice(u):
+    """
+    The user didn't specify a subdevice on the command line.
+    If there's a daughterboard on A, select A.
+    If there's a daughterboard on B, select B.
+    Otherwise, select A.
+    """
+    if u.db[0][0].dbid() >= 0:       # dbid is < 0 if there's no d'board or a 
problem
+        return (0, 0)
+    if u.db[1][0].dbid() >= 0:
+        return (1, 0)
+    return (0, 0)
+
+class sounder_tx:
+    def __init__(self, verbose=False):
+       self._verbose = verbose
+        self._u = usrp.sink_s(fpga_filename='usrp_sounder.rbf')
+        self._subdev_spec = usrp.pick_tx_subdevice(self._u)
+        self._subdev = usrp.selected_subdev(self._u, self._subdev_spec)
+        if self._verbose:
+            print "Using", self._subdev.name(), "for sounder transmitter."     
       
+        self._u.start()
+
+    def tune(self, frequency):
+        if self._verbose:
+            print "Setting transmitter frequency to", n2s(frequency)
+        result = self._u.tune(0, self._subdev, frequency)
+        if result == False:
+            raise RuntimeError("Failed to set transmitter frequency.")
+
+class sounder_rx:
+    def __init__(self, subdev_spec=None, samples=-1, verbose=False, 
debug=False):
+       self._subdev_spec = subdev_spec
+       self._samples = samples
+       self._verbose = verbose
+       self._debug = debug
+               
+        self._fg = gr.flow_graph()
+        self._u = usrp.source_c(fpga_filename='usrp_sounder.rbf')
+        if self._subdev_spec == None:
+            self._subdev_spec = pick_subdevice(self._u)
+        self._u.set_mux(usrp.determine_rx_mux_value(self._u, 
self._subdev_spec))
+        self._subdev = usrp.selected_subdev(self._u, self._subdev_spec)
+        if self._verbose:
+            print "Using", self._subdev.name(), "for sounder receiver."
+        self._sink = gr.file_sink(gr.sizeof_gr_complex, "output.dat")
+
+        if self._samples >= 0:
+            self._head = gr.head(gr.sizeof_gr_complex, self._samples)
+            self._fg.connect(self._u, self._head, self._sink)
+        else:
+            self._fg.connect(self._u, self._sink)
+
+    def tune(self, frequency):
+        if self._verbose:
+            print "Setting receiver frequency to", n2s(frequency)
+        result = self._u.tune(0, self._subdev, frequency)
+        if result == False:
+            raise RuntimeError("Failed to set receiver frequency.")
+
+    def start(self):
+        if self._debug:
+            print "Starting receiver flow graph."
+        self._fg.start()
+
+    def wait(self):
+        if self._debug:
+            print "Waiting for threads..."
+        self._fg.wait()
+
+    def stop(self):
+        if self._debug:
+            print "Stopping receiver flow graph."
+        self._fg.stop()
+        self.wait()
+        if self._debug:
+            print "Receiver flow graph stopped."
+
+
+class sounder:
+    def __init__(self,transmit=False,receive=False,loopback=False,
+                 
rx_subdev_spec=None,frequency=0.0,degree=10,samples=-1,verbose=False,debug=False):
+        self._transmit = transmit
+        self._receive = receive
+        self._loopback = loopback
+        self._rx_subdev_spec = rx_subdev_spec
+        self._frequency = frequency
+        self._degree = degree
+        self._samples = samples
+        self._verbose = verbose
+        self._debug = debug
+        
+       self._mode = 0
+       self._u = None
+       self._trans = None
+       self._rcvr = None
+       self._transmitting = False
+       self._receiving = False
+               
+       if self._transmit:
+           self._trans = sounder_tx(verbose=self._verbose)
+            self._u = self._trans._u
+            
+       if self._receive:
+            self._rcvr = sounder_rx(subdev_spec=self._rx_subdev_spec, 
samples=self._samples,
+                                   verbose=self._verbose, debug=self._debug)
+           self._u = self._rcvr._u # either receiver or transmitter object 
will do
+       
+       self.set_reset(True)
+        if self._loopback == False:
+            self.tune(self._frequency)
+       self.set_degree(self._degree)
+       self.set_loopback(self._loopback)       
+       self.set_reset(False)
+               
+    def tune(self, frequency):
+        self._frequency = frequency
+        print self._rcvr
+       if self._rcvr:
+            self._rcvr.tune(frequency)
+       if self._trans:
+           self._trans.tune(frequency)
+
+    def set_degree(self, degree):
+        if self._verbose:
+            print "Setting PN code degree to", degree
+        self._u._write_fpga_reg(FR_DEGREE, degree);
+           
+    def _write_mode(self):
+        if self._debug:
+            print "Writing mode register with:", hex(self._mode)
+        self._u._write_fpga_reg(FR_MODE, self._mode)
+
+    def enable_tx(self, value):
+       if value:
+            if self._verbose:
+                print "Enabling transmitter."
+           self._mode |= bmFR_MODE_TX
+           self._transmitting = True
+       else:
+            if self._verbose:
+                print "Disabling transmitter."
+           self._mode &= ~bmFR_MODE_TX
+       self._write_mode()
+                   
+    def enable_rx(self, value):
+       if value:
+           self._mode |= bmFR_MODE_RX
+           self._write_mode()
+           self._rcvr.start()
+           self._receiving = True
+           if self._samples >= 0:
+               self._rcvr.wait()
+       else:
+           if self._samples < 0:
+                self._rcvr.stop()
+           self._mode &= ~bmFR_MODE_RX
+           self._write_mode()
+           self._receiving = False
+               
+    def set_loopback(self, value):
+       if value:
+            if self._verbose:
+                print "Enabling digital loopback."
+           self._mode |= bmFR_MODE_LP
+       else:
+            if self._verbose:
+                print "Disabling digital loopback."
+           self._mode &= ~bmFR_MODE_LP
+       self._write_mode()
+
+    def set_reset(self, value):
+       if value:
+            if self._debug:
+                print "Asserting reset."
+           self._mode |= bmFR_MODE_RESET
+       else:
+            if self._debug:
+                print "De-asserting reset."
+           self._mode &= ~bmFR_MODE_RESET
+       self._write_mode()
+
+    def start(self):
+        self.enable_tx(self._transmit)
+       self.enable_rx(self._receive)
+
+    def __del__(self):
+       if self._transmitting:
+           self.enable_tx(False)
+           
+       if self._receiving:
+           self.enable_rx(False)
+           

Deleted: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_lp.sh

Deleted: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_rx.sh

Deleted: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_tx.sh

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/usrp_sounder.py
===================================================================
--- 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/usrp_sounder.py  
    2007-05-28 20:38:36 UTC (rev 5558)
+++ 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/usrp_sounder.py  
    2007-05-28 21:41:22 UTC (rev 5559)
@@ -20,197 +20,14 @@
 # Boston, MA 02110-1301, USA.
 # 
 
-from gnuradio import gr, usrp
+from gnuradio.sounder import sounder
 from gnuradio import eng_notation
 from gnuradio.eng_option import eng_option
 from optparse import OptionParser
-import sys, time
+import sys
 
 n2s = eng_notation.num_to_str
 
-FR_MODE = usrp.FR_USER_0
-bmFR_MODE_RESET = 1 << 0       # bit 0: active high reset
-bmFR_MODE_TX    = 1 << 1       # bit 1: enable transmitter
-bmFR_MODE_RX    = 1 << 2       # bit 2: enable receiver
-bmFR_MODE_LP    = 1 << 3       # bit 3: enable digital loopback
-
-FR_DEGREE = usrp.FR_USER_1
-
-def pick_subdevice(u):
-    """
-    The user didn't specify a subdevice on the command line.
-    If there's a daughterboard on A, select A.
-    If there's a daughterboard on B, select B.
-    Otherwise, select A.
-    """
-    if u.db[0][0].dbid() >= 0:       # dbid is < 0 if there's no d'board or a 
problem
-        return (0, 0)
-    if u.db[1][0].dbid() >= 0:
-        return (1, 0)
-    return (0, 0)
-
-class sounder_tx:
-    def __init__(self, options):
-        self._options = options
-        self._u = usrp.sink_s(fpga_filename='usrp_sounder.rbf')
-        self._subdev_spec = usrp.pick_tx_subdevice(self._u)
-        self._subdev = usrp.selected_subdev(self._u, self._subdev_spec)
-        if options.verbose:
-            print "Using", self._subdev.name(), "for sounder transmitter."     
       
-        self._u.start()
-
-    def tune(self, frequency):
-        if self._options.verbose:
-            print "Setting transmitter frequency to", n2s(frequency)
-        result = self._u.tune(0, self._subdev, frequency)
-        if result == False:
-            raise RuntimeError("Failed to set transmitter frequency.")
-
-class sounder_rx:
-    def __init__(self, options):
-        self._options = options
-        self._fg = gr.flow_graph()
-        self._u = usrp.source_c(fpga_filename='usrp_sounder.rbf')
-        if options.rx_subdev_spec == None:
-            options.rx_subdev_spec = usrp.pick_rx_subdevice(self._u)
-        self._u.set_mux(usrp.determine_rx_mux_value(self._u, 
options.rx_subdev_spec))
-        self._subdev = usrp.selected_subdev(self._u, options.rx_subdev_spec)
-        if options.verbose:
-            print "Using", self._subdev.name(), "for sounder receiver."
-        self._sink = gr.file_sink(gr.sizeof_gr_complex, "output.dat")
-
-        if options.samples >= 0:
-            self._head = gr.head(gr.sizeof_gr_complex, options.samples)
-            self._fg.connect(self._u, self._head, self._sink)
-        else:
-            self._fg.connect(self._u, self._sink)
-
-    def tune(self, frequency):
-        if self._options.verbose:
-            print "Setting receiver frequency to", n2s(frequency)
-        result = self._u.tune(0, self._subdev, frequency)
-        if result == False:
-            raise RuntimeError("Failed to set receiver frequency.")
-
-    def start(self):
-        if self._options.debug:
-            print "Starting receiver flow graph."
-        self._fg.start()
-
-    def wait(self):
-        self._fg.wait()
-
-    def stop(self):
-        if self._options.debug:
-            print "Stopping receiver flow graph."
-        self._fg.stop()
-        if self._options.debug:
-            print "Waiting for threads..."
-        self._fg.wait()
-        if self._options.debug:
-            print "Receiver flow graph stopped."
-
-
-class sounder:
-    def __init__(self, options):
-       self._options = options
-       self._mode = 0
-       
-       self._u = None
-       self._trans = None
-       self._rcvr = None
-       self._transmitting = False
-       self._receiving = False
-               
-       if options.transmit:
-           self._trans = sounder_tx(options)
-            self._u = self._trans._u
-            
-       if options.receive:
-            self._rcvr = sounder_rx(options)
-           self._u = self._rcvr._u # either receiver or transmitter object 
will do
-       
-       self.set_reset(True)
-        if options.loopback == False:
-            self.tune(options.frequency)
-       self.set_degree(options.degree)
-       self.set_loopback(options.loopback)     
-       self.set_reset(False)
-               
-    def tune(self, frequency):
-       if self._rcvr:
-            self._rcvr.tune(frequency)
-       if self._trans:
-           self._trans.tune(frequency)
-
-    def set_degree(self, degree):
-        if self._options.verbose:
-            print "Setting PN code degree to", degree
-        self._u._write_fpga_reg(FR_DEGREE, degree);
-           
-    def _write_mode(self):
-        if self._options.debug:
-            print "Writing mode register with:", hex(self._mode)
-        self._u._write_fpga_reg(FR_MODE, self._mode)
-
-    def enable_tx(self, value):
-       if value:
-            if self._options.verbose:
-                print "Enabling transmitter."
-           self._mode |= bmFR_MODE_TX
-           self._transmitting = True
-       else:
-            if self._options.verbose:
-                print "Disabling transmitter."
-           self._mode &= ~bmFR_MODE_TX
-       self._write_mode()
-                   
-    def enable_rx(self, value):
-       if value:
-           self._mode |= bmFR_MODE_RX
-           self._write_mode()
-           self._rcvr.start()
-           self._receiving = True
-           if self._options.samples >= 0:
-               self._rcvr.wait()
-       else:
-           if self._options.samples < 0:
-                self._rcvr.stop()
-           self._mode &= ~bmFR_MODE_RX
-           self._write_mode()
-           self._receiving = False
-               
-    def set_loopback(self, value):
-       if value:
-            if self._options.verbose:
-                print "Enabling digital loopback."
-           self._mode |= bmFR_MODE_LP
-       else:
-            if self._options.verbose:
-                print "Disabling digital loopback."
-           self._mode &= ~bmFR_MODE_LP
-       self._write_mode()
-
-    def set_reset(self, value):
-       if value:
-            if self._options.debug:
-                print "Asserting reset."
-           self._mode |= bmFR_MODE_RESET
-       else:
-            if self._options.debug:
-                print "De-asserting reset."
-           self._mode &= ~bmFR_MODE_RESET
-       self._write_mode()
-
-    def __del__(self):
-       if self._transmitting:
-           self.enable_tx(False)
-           
-       if self._receiving:
-           self.enable_rx(False)
-           
-# 
------------------------------------------------------------------------------
-    
 def main():
     parser = OptionParser(option_class=eng_option)
     parser.add_option("-R", "--rx-subdev-spec", type="subdev", default=(0, 0),
@@ -243,14 +60,11 @@
        if options.loopback == False:
             print "Sounding frequency range is", n2s(options.frequency-16e6), 
"to", n2s(options.frequency+16e6)
     
-    s = sounder(options)
+    s = 
sounder(transmit=options.transmit,receive=options.receive,loopback=options.loopback,
+                
rx_subdev_spec=options.rx_subdev_spec,frequency=options.frequency,degree=options.degree,
+                
samples=options.samples,verbose=options.verbose,debug=options.debug)
 
-    if options.transmit:
-       s.enable_tx(True)
-
-    if options.receive:
-       s.enable_rx(True)
-
+    s.start()
     if options.samples < 0:
         raw_input("Press enter to exit.")
        





reply via email to

[Prev in Thread] Current Thread [Next in Thread]