From 1dcc69dbebd9fac1b7277657223369e3e9b19b7b Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Mon, 12 Sep 2011 14:28:10 -0400
Subject: shd: adding a very rudimentary siggen application to test gr-shd tx
 driver.

---
 gr-shd/apps/shd_siggen.py | 120 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 120 insertions(+)
 create mode 100755 gr-shd/apps/shd_siggen.py

(limited to 'gr-shd/apps/shd_siggen.py')

diff --git a/gr-shd/apps/shd_siggen.py b/gr-shd/apps/shd_siggen.py
new file mode 100755
index 0000000000..9eef015874
--- /dev/null
+++ b/gr-shd/apps/shd_siggen.py
@@ -0,0 +1,120 @@
+#!/usr/bin/env python
+#
+# Copyright 2011 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.
+# 
+
+"""
+Read samples from a SHD device and write to file formatted as binary
+outputs single precision complex float values or complex short values 
+(interleaved 16 bit signed short integers).
+"""
+
+from gnuradio import gr, eng_notation
+from gnuradio import shd
+from gnuradio.eng_option import eng_option
+from optparse import OptionParser
+import sys
+
+n2s = eng_notation.num_to_str
+
+class shd_siggen(gr.top_block):
+
+    def __init__(self, options):
+        gr.top_block.__init__(self)
+
+        self._src = gr.sig_source_c(options.samp_rate, gr.GR_SIN_WAVE,
+                                    200, 1)
+
+        self._snk = shd.xmini_sink(device_addr=options.address,
+                                   io_type=shd.io_type.COMPLEX_FLOAT32,
+                                   num_channels=1)
+
+        # Set receiver sample rate
+        self._snk.set_samp_rate(options.samp_rate)
+
+        # Set receive daughterboard gain
+        if options.gain is None:
+            g = self._snk.get_gain_range()
+            options.gain = float(g.start()+g.stop())/2
+	    print "Using mid-point gain of", \
+                options.gain, "(", g.start(), "-", g.stop(), ")"
+        self._snk.set_gain(options.gain)
+
+        # Set the antenna
+        if(options.antenna):
+            self._snk.set_antenna(options.antenna, 0)
+
+        # Set frequency (tune request takes lo_offset)
+        if(options.lo_offset is not None):
+            treq = shd.tune_request(options.freq, options.lo_offset)
+        else:
+            treq = shd.tune_request(options.freq)
+        tr = self._snk.set_center_freq(treq)
+        if tr == None:
+            sys.stderr.write('Failed to set center frequency\n')
+            raise SystemExit, 1
+
+        # Create head block if needed and wire it up
+        self.connect(self._src, self._snk)
+        input_rate = self._snk.get_samp_rate()
+        
+        if options.verbose:
+            print "Address:", options.address
+            print "Rx gain:", options.gain
+            print "Rx baseband frequency:", n2s(tr.actual_rf_freq)
+            print "Rx DDC frequency:", n2s(tr.actual_dsp_freq)
+            print "Rx Sample Rate:", n2s(input_rate)
+        
+def get_options():
+    usage="%prog: [options]"
+    parser = OptionParser(option_class=eng_option, usage=usage)
+    parser.add_option("-a", "--address", type="string", default="type=xmini",
+                      help="Address of SHD device, [default=%default]")
+    parser.add_option("-A", "--antenna", type="string", default=None,
+                      help="select Rx Antenna where appropriate")
+    parser.add_option("", "--samp-rate", type="eng_float", default=1e6,
+                      help="set sample rate (bandwidth) [default=%default]")
+    parser.add_option("-f", "--freq", type="eng_float", default=None,
+                      help="set frequency to FREQ", metavar="FREQ")
+    parser.add_option("-g", "--gain", type="eng_float", default=None,
+                      help="set gain in dB (default is midpoint)")
+    parser.add_option("-v", "--verbose", action="store_true", default=False,
+                      help="verbose output")
+    parser.add_option("", "--lo-offset", type="eng_float", default=None,
+                      help="set daughterboard LO offset to OFFSET [default=hw default]")
+
+    (options, args) = parser.parse_args ()
+
+    if options.freq is None:
+        parser.print_help()
+        sys.stderr.write('You must specify the frequency with -f FREQ\n');
+        raise SystemExit, 1
+    
+    return (options)
+
+
+if __name__ == '__main__':
+    options = get_options()
+    tb = shd_siggen(options)
+  
+    try:
+        tb.run()
+    except KeyboardInterrupt:
+        pass
-- 
cgit v1.2.3


From b205e8cda30fb3a20e2d0d0409c12e58417d92f3 Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Tue, 4 Oct 2011 12:56:09 -0400
Subject: shd: changed gr-shd names from xmini to smini

---
 gr-shd/apps/shd_fft.py      | 25 +++++++++++--------------
 gr-shd/apps/shd_rx_cfile.py |  4 ++--
 gr-shd/apps/shd_siggen.py   |  2 +-
 3 files changed, 14 insertions(+), 17 deletions(-)

(limited to 'gr-shd/apps/shd_siggen.py')

diff --git a/gr-shd/apps/shd_fft.py b/gr-shd/apps/shd_fft.py
index 42f0e18b0d..81e84d3836 100755
--- a/gr-shd/apps/shd_fft.py
+++ b/gr-shd/apps/shd_fft.py
@@ -39,7 +39,8 @@ class app_top_block(stdgui2.std_top_block):
         self.panel = panel
         
         parser = OptionParser(option_class=eng_option)
-        parser.add_option("-a", "--address", type="string", default="type=xmini",
+        parser.add_option("-a", "--address", type="string",
+                          default="type=xmini",
                           help="Address of SHD device, [default=%default]")
         parser.add_option("-A", "--antenna", type="string", default=None,
                           help="select Rx Antenna where appropriate")
@@ -66,23 +67,13 @@ class app_top_block(stdgui2.std_top_block):
 	self.options = options
         self.show_debug_info = True
         
-        self.src = shd.xmini_source(device_addr=options.address,
-                                  io_type=shd.io_type.COMPLEX_FLOAT32,
-                                  num_channels=1)
+        self.src = shd.smini_source(device_addr=options.address,
+                                    io_type=shd.io_type.COMPLEX_FLOAT32,
+                                    num_channels=1)
 
         self.src.set_samp_rate(options.samp_rate)
         input_rate = self.src.get_samp_rate()
 
-        print "Antenna:     ", self.src.get_antenna()
-        print "Antennas:    ", self.src.get_antennas()
-        print "Dboard:      ", self.src.get_dboard_iface()
-        print "Device:      ", self.src.get_device
-        print "Center Freq: ", self.src.get_center_freq()
-        print "Freq Range:  ", self.src.get_freq_range()
-        print "Gain:        ", self.src.get_gain()
-        print "Gain Names:  ", self.src.get_gain_names()
-        print "Gain Range:  ", self.src.get_gain_range()
-        
         if options.waterfall:
             self.scope = \
               waterfallsink2.waterfall_sink_c (panel, fft_size=1024,
@@ -133,6 +124,12 @@ class app_top_block(stdgui2.std_top_block):
         if not(self.set_freq(options.freq)):
             self._set_status_msg("Failed to set initial frequency")
 
+        print "Center Freq: ", self.src.get_center_freq()
+        print "Freq Range:  ", self.src.get_freq_range()
+        print "Gain:        ", self.src.get_gain()
+        print "Gain Names:  ", self.src.get_gain_names()
+        print "Gain Range:  ", self.src.get_gain_range()
+
     def _set_status_msg(self, msg):
         self.frame.GetStatusBar().SetStatusText(msg, 0)
 
diff --git a/gr-shd/apps/shd_rx_cfile.py b/gr-shd/apps/shd_rx_cfile.py
index 7ba16b4c4e..007bc809f2 100755
--- a/gr-shd/apps/shd_rx_cfile.py
+++ b/gr-shd/apps/shd_rx_cfile.py
@@ -41,12 +41,12 @@ class rx_cfile_block(gr.top_block):
 
         # Create a SHD device source
         if options.output_shorts:
-            self._src = shd.xmini_source(device_addr=options.address,
+            self._src = shd.smini_source(device_addr=options.address,
                                        io_type=shd.io_type.COMPLEX_INT16,
                                        num_channels=1)
             self._sink = gr.file_sink(gr.sizeof_short*2, filename)
         else:
-            self._src = shd.xmini_source(device_addr=options.address,
+            self._src = shd.smini_source(device_addr=options.address,
                                        io_type=shd.io_type.COMPLEX_FLOAT32,
                                        num_channels=1)
             self._sink = gr.file_sink(gr.sizeof_gr_complex, filename)
diff --git a/gr-shd/apps/shd_siggen.py b/gr-shd/apps/shd_siggen.py
index 9eef015874..112eeea159 100755
--- a/gr-shd/apps/shd_siggen.py
+++ b/gr-shd/apps/shd_siggen.py
@@ -42,7 +42,7 @@ class shd_siggen(gr.top_block):
         self._src = gr.sig_source_c(options.samp_rate, gr.GR_SIN_WAVE,
                                     200, 1)
 
-        self._snk = shd.xmini_sink(device_addr=options.address,
+        self._snk = shd.smini_sink(device_addr=options.address,
                                    io_type=shd.io_type.COMPLEX_FLOAT32,
                                    num_channels=1)
 
-- 
cgit v1.2.3