]> git.gag.com Git - debian/gnuradio/commitdiff
grc usrp supports 8 bits
authorjblum <jblum@221aa14e-8319-0410-a670-987f0aec2ac5>
Fri, 30 Jan 2009 19:30:03 +0000 (19:30 +0000)
committerjblum <jblum@221aa14e-8319-0410-a670-987f0aec2ac5>
Fri, 30 Jan 2009 19:30:03 +0000 (19:30 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10344 221aa14e-8319-0410-a670-987f0aec2ac5

grc/data/platforms/python/blocks/usrp_dual_sink_x.xml
grc/data/platforms/python/blocks/usrp_dual_source_x.xml
grc/data/platforms/python/blocks/usrp_simple_sink_x.xml
grc/data/platforms/python/blocks/usrp_simple_source_x.xml
grc/src/grc_gnuradio/usrp/common.py
grc/src/grc_gnuradio/usrp/dual_usrp.py
grc/src/grc_gnuradio/usrp/simple_usrp.py

index 3e665c0f8e67bee583b71381956a4dc47beec826..91c42adfea5af182c5d93deb1e2d10e9f87037ea 100644 (file)
@@ -9,6 +9,9 @@
        <key>usrp_dual_sink_x</key>
        <import>from grc_gnuradio import usrp as grc_usrp</import>
        <make>grc_usrp.dual_sink_$(type.fcn)(number=$number)
+#if $format.eval
+self.$(id).set_format(width=$format.width, shift=$format.shift)
+#end if
 self.$(id).set_interp_rate($interpolation)
 self.$(id).set_frequency_a($frequency_a, verbose=True)
 self.$(id).set_frequency_b($frequency_b, verbose=True)
@@ -45,11 +48,32 @@ self.$(id).set_auto_tr_b($auto_tr_b)
                        <name>Complex</name>
                        <key>complex</key>
                        <opt>fcn:c</opt>
+                       <opt>bits8:</opt>
                </option>
                <option>
                        <name>Short</name>
                        <key>short</key>
                        <opt>fcn:s</opt>
+                       <opt>bits8:</opt>
+               </option>
+       </param>
+       <param>
+               <name>Format</name>
+               <key>format</key>
+               <value></value>
+               <type>enum</type>
+               <hide>#if $format.eval then '' else 'part'#</hide>
+               <option>
+                       <name>16 Bits (Default)</name>
+                       <key></key>
+                       <opt>width:16</opt>
+                       <opt>shift:0</opt>
+               </option>
+               <option>
+                       <name>8 Bits, Shift 8</name>
+                       <key>w8_s8</key>
+                       <opt>width:8</opt>
+                       <opt>shift:8</opt>
                </option>
        </param>
        <param>
index 29ff7c8a080aadc59101ad4b8d8431b5b3a41856..ff355b51087c6be600040e55f81425ebb9bdf662 100644 (file)
@@ -9,6 +9,9 @@
        <key>usrp_dual_source_x</key>
        <import>from grc_gnuradio import usrp as grc_usrp</import>
        <make>grc_usrp.dual_source_$(type.fcn)(number=$number, side_a='$rx_ant_a.side', rx_ant_a='$rx_ant_a.rx_ant', side_b='$rx_ant_b.side', rx_ant_b='$rx_ant_b.rx_ant')
+#if $format.eval
+self.$(id).set_format(width=$format.width, shift=$format.shift)
+#end if
 self.$(id).set_decim_rate($decimation)
 self.$(id).set_frequency_a($frequency_a, verbose=True)
 self.$(id).set_frequency_b($frequency_b, verbose=True)
@@ -46,6 +49,25 @@ self.$(id).set_auto_tr_b($auto_tr_b)
                        <opt>fcn:s</opt>
                </option>
        </param>
+       <param>
+               <name>Format</name>
+               <key>format</key>
+               <value></value>
+               <type>enum</type>
+               <hide>#if $format.eval then '' else 'part'#</hide>
+               <option>
+                       <name>16 Bits (Default)</name>
+                       <key></key>
+                       <opt>width:16</opt>
+                       <opt>shift:0</opt>
+               </option>
+               <option>
+                       <name>8 Bits, Shift 8</name>
+                       <key>w8_s8</key>
+                       <opt>width:8</opt>
+                       <opt>shift:8</opt>
+               </option>
+       </param>
        <param>
                <name>Unit Number</name>
                <key>number</key>
index 885aec852ed41bdfa8440f0c196f8e831a3e6056..dc76199e8d9a0837c2643e0fbfca56197f5d485e 100644 (file)
@@ -9,6 +9,9 @@
        <key>usrp_simple_sink_x</key>
        <import>from grc_gnuradio import usrp as grc_usrp</import>
        <make>grc_usrp.simple_sink_$(type.fcn)(number=$number, side='$side')
+#if $format.eval
+self.$(id).set_format(width=$format.width, shift=$format.shift)
+#end if
 self.$(id).set_interp_rate($interpolation)
 self.$(id).set_frequency($frequency, verbose=True)
 self.$(id).set_gain($gain)
@@ -36,6 +39,25 @@ self.$(id).set_auto_tr($auto_tr)
                        <opt>fcn:s</opt>
                </option>
        </param>
+       <param>
+               <name>Format</name>
+               <key>format</key>
+               <value></value>
+               <type>enum</type>
+               <hide>#if $format.eval then '' else 'part'#</hide>
+               <option>
+                       <name>16 Bits (Default)</name>
+                       <key></key>
+                       <opt>width:16</opt>
+                       <opt>shift:0</opt>
+               </option>
+               <option>
+                       <name>8 Bits, Shift 8</name>
+                       <key>w8_s8</key>
+                       <opt>width:8</opt>
+                       <opt>shift:8</opt>
+               </option>
+       </param>
        <param>
                <name>Unit Number</name>
                <key>number</key>
index e1c43238adf533e2c01f03f18d2b1b0a018e3e17..f7f24898a74599167c647252429e542865de989c 100644 (file)
@@ -9,6 +9,9 @@
        <key>usrp_simple_source_x</key>
        <import>from grc_gnuradio import usrp as grc_usrp</import>
        <make>grc_usrp.simple_source_$(type.fcn)(number=$number, side='$side', rx_ant='$rx_ant')
+#if $format.eval
+self.$(id).set_format(width=$format.width, shift=$format.shift)
+#end if
 self.$(id).set_decim_rate($decimation)
 self.$(id).set_frequency($frequency, verbose=True)
 self.$(id).set_gain($gain)
@@ -33,6 +36,25 @@ self.$(id).set_auto_tr($auto_tr)
                        <opt>fcn:s</opt>
                </option>
        </param>
+       <param>
+               <name>Format</name>
+               <key>format</key>
+               <value></value>
+               <type>enum</type>
+               <hide>#if $format.eval then '' else 'part'#</hide>
+               <option>
+                       <name>16 Bits (Default)</name>
+                       <key></key>
+                       <opt>width:16</opt>
+                       <opt>shift:0</opt>
+               </option>
+               <option>
+                       <name>8 Bits, Shift 8</name>
+                       <key>w8_s8</key>
+                       <opt>width:8</opt>
+                       <opt>shift:8</opt>
+               </option>
+       </param>
        <param>
                <name>Unit Number</name>
                <key>number</key>
index 7c45c26048a159a9b563fb203955c098575352da..423e35816f7e9a86db1a1b517410ea59a5d46cfe 100644 (file)
@@ -22,39 +22,40 @@ import sys
 from gnuradio import usrp, gr
 
 ##################################################
-# Set frequency function w/ verbose option
+# USRP base class with common methods
 ##################################################
-def set_frequency(u, which, subdev, frequency, verbose=False):
-       """
-       Set the carrier frequency for the given subdevice.
-       @param u the usrp source/sink
-       @param which specifies the DDC/DUC number
-       @param frequency the carrier frequency in Hz
-       @param verbose if true, print usrp tuning information
-       """
-       r = u.tune(which, subdev, frequency)
-       if not verbose: return
-       print subdev.side_and_name()
-       if r:
-               print "\tr.baseband_frequency =", r.baseband_freq
-               print "\tr.dxc_frequency =", r.dxc_freq
-               print "\tr.residual_frequency =", r.residual_freq
-               print "\tr.inverted =", r.inverted, "\n"
-       else: print >> sys.stderr, 'Error calling tune on subdevice.'
+class usrp_helper(object):
+       def _make_usrp(self, *args, **kwargs): self._u = self._usrp_args[0](*args, **kwargs)
+       def _get_u(self): return self._u
+       def _get_io_size(self): return self._usrp_args[1]
+       def _set_frequency(self, which, subdev, frequency, verbose=False):
+               """
+               Set the carrier frequency for the given subdevice.
+               @param which specifies the DDC/DUC number
+               @param frequency the carrier frequency in Hz
+               @param verbose if true, print usrp tuning information
+               """
+               r = self._get_u().tune(which, subdev, frequency)
+               if not verbose: return
+               print subdev.side_and_name()
+               if r:
+                       print "\tr.baseband_frequency =", r.baseband_freq
+                       print "\tr.dxc_frequency =", r.dxc_freq
+                       print "\tr.residual_frequency =", r.residual_freq
+                       print "\tr.inverted =", r.inverted, "\n"
+               else: print >> sys.stderr, 'Error calling tune on subdevice.'
+       def set_format(self, width, shift): self._get_u().set_format(self._get_u().make_format(width, shift))
 
 ##################################################
 # Classes to associate usrp constructor w/ io size
 ##################################################
-class usrp_helper(object):
-       def _get_usrp_constructor(self): return self._usrp_args[0]
-       def _get_io_size(self): return self._usrp_args[1]
 class usrp_source_c(usrp_helper): _usrp_args = (usrp.source_c, gr.sizeof_gr_complex)
 class usrp_source_s(usrp_helper): _usrp_args = (usrp.source_s, gr.sizeof_short)
 class usrp_sink_c(usrp_helper): _usrp_args = (usrp.sink_c, gr.sizeof_gr_complex)
 class usrp_sink_s(usrp_helper): _usrp_args = (usrp.sink_s, gr.sizeof_short)
 
 ##################################################
-# RX antenna definitions and helpers
+# Side spec and antenna spec functions
 ##################################################
 def is_flex(rx_ant): return rx_ant.upper() in ('TX/RX', 'RX2')
 def to_spec(side, rx_ant='RXA'):
index d23e60cf91143bcd32c894c0d2c8d2bfafccf5a5..fac3ab74b2686e5c41fb758c0ebc1cec8e27f785 100644 (file)
@@ -43,34 +43,32 @@ class _dual_source(gr.hier_block2):
                        gr.io_signature(2, 2, self._get_io_size()),
                )
                #create usrp object
-               self._u = self._get_usrp_constructor()(number, nchan=2)
+               self._make_usrp(number, nchan=2)
                #get the mux for output A
                subdev_spec_a = common.to_spec(side_a, rx_ant_a)
-               self._subdev_a = usrp.selected_subdev(self._u, subdev_spec_a)
-               mux_a = usrp.determine_rx_mux_value(self._u, subdev_spec_a)
+               self._subdev_a = usrp.selected_subdev(self._get_u(), subdev_spec_a)
+               mux_a = usrp.determine_rx_mux_value(self._get_u(), subdev_spec_a)
                #get the mux for output B
                subdev_spec_b = common.to_spec(side_b, rx_ant_b)
-               self._subdev_b = usrp.selected_subdev(self._u, subdev_spec_b)
-               mux_b = usrp.determine_rx_mux_value(self._u, subdev_spec_b)
+               self._subdev_b = usrp.selected_subdev(self._get_u(), subdev_spec_b)
+               mux_b = usrp.determine_rx_mux_value(self._get_u(), subdev_spec_b)
                #move the lower byte of the mux b into the second byte of the mux a
-               self._u.set_mux(((mux_b & 0xff) << 8) | (mux_a - (mux_a & 0xff00)))
+               self._get_u().set_mux(((mux_b & 0xff) << 8) | (mux_a - (mux_a & 0xff00)))
                #connect
                deinter = gr.deinterleave(self._get_io_size())
-               self.connect(self._u, deinter)
+               self.connect(self._get_u(), deinter)
                for i in range(2): self.connect((deinter, i), (self, i))
 
-       def set_decim_rate(self, decim): self._u.set_decim_rate(int(decim))
+       def set_decim_rate(self, decim): self._get_u().set_decim_rate(int(decim))
        def set_frequency_a(self, frequency, verbose=False):
-               common.set_frequency(
-                       u=self._u,
+               self._set_frequency(
                        which=0, #ddc0
                        subdev=self._subdev_a,
                        frequency=frequency,
                        verbose=verbose,
                )
        def set_frequency_b(self, frequency, verbose=False):
-               common.set_frequency(
-                       u=self._u,
+               self._set_frequency(
                        which=1, #ddc1
                        subdev=self._subdev_b,
                        frequency=frequency,
@@ -102,34 +100,32 @@ class _dual_sink(gr.hier_block2):
                        gr.io_signature(0, 0, 0),
                )
                #create usrp object
-               self._u = self._get_usrp_constructor()(number, nchan=2)
+               self._make_usrp(number, nchan=2)
                #get the mux for side A
                subdev_spec_a = common.to_spec('A')
-               self._subdev_a = usrp.selected_subdev(self._u, subdev_spec_a)
-               mux_a = usrp.determine_tx_mux_value(self._u, subdev_spec_a)
+               self._subdev_a = usrp.selected_subdev(self._get_u(), subdev_spec_a)
+               mux_a = usrp.determine_tx_mux_value(self._get_u(), subdev_spec_a)
                #get the mux for side B
                subdev_spec_b = common.to_spec('B')
-               self._subdev_b = usrp.selected_subdev(self._u, subdev_spec_b)
-               mux_b = usrp.determine_tx_mux_value(self._u, subdev_spec_b)
+               self._subdev_b = usrp.selected_subdev(self._get_u(), subdev_spec_b)
+               mux_b = usrp.determine_tx_mux_value(self._get_u(), subdev_spec_b)
                #set the mux
-               self._u.set_mux(mux_a | mux_b)
+               self._get_u().set_mux(mux_a | mux_b)
                #connect
                inter = gr.interleave(self._get_io_size())
-               self.connect(inter, self._u)
+               self.connect(inter, self._get_u())
                for i in range(2): self.connect((self, i), (inter, i))
 
-       def set_interp_rate(self, interp): self._u.set_interp_rate(int(interp))
+       def set_interp_rate(self, interp): self._get_u().set_interp_rate(int(interp))
        def set_frequency_a(self, frequency, verbose=False):
-               common.set_frequency(
-                       u=self._u,
+               self._set_frequency(
                        which=self._subdev_a.which(),
                        subdev=self._subdev_a,
                        frequency=frequency,
                        verbose=verbose,
                )
        def set_frequency_b(self, frequency, verbose=False):
-               common.set_frequency(
-                       u=self._u,
+               self._set_frequency(
                        which=self._subdev_b.which(),
                        subdev=self._subdev_b,
                        frequency=frequency,
index 2420c7571387d242b0104326ff817545fd71733f..1a2cf8f440ca7d16a27822d76cb551e1cc45e339 100644 (file)
@@ -41,18 +41,17 @@ class _simple_source(gr.hier_block2):
                        gr.io_signature(1, 1, self._get_io_size()),
                )
                #create usrp object
-               self._u = self._get_usrp_constructor()(number, nchan=1)
+               self._make_usrp(number, nchan=1)
                subdev_spec = common.to_spec(side, rx_ant)
-               self._u.set_mux(usrp.determine_rx_mux_value(self._u, subdev_spec))
-               self._subdev = usrp.selected_subdev(self._u, subdev_spec)
+               self._get_u().set_mux(usrp.determine_rx_mux_value(self._get_u(), subdev_spec))
+               self._subdev = usrp.selected_subdev(self._get_u(), subdev_spec)
                if common.is_flex(rx_ant): self._subdev.select_rx_antenna(rx_ant)
                #connect
-               self.connect(self._u, self)
+               self.connect(self._get_u(), self)
 
-       def set_decim_rate(self, decim): self._u.set_decim_rate(int(decim))
+       def set_decim_rate(self, decim): self._get_u().set_decim_rate(int(decim))
        def set_frequency(self, frequency, verbose=False):
-               common.set_frequency(
-                       u=self._u,
+               self._set_frequency(
                        which=0, #ddc0
                        subdev=self._subdev,
                        frequency=frequency,
@@ -83,17 +82,16 @@ class _simple_sink(gr.hier_block2):
                        gr.io_signature(0, 0, 0),
                )
                #create usrp object
-               self._u = self._get_usrp_constructor()(number, nchan=1)
+               self._make_usrp(number, nchan=1)
                subdev_spec = common.to_spec(side)
-               self._u.set_mux(usrp.determine_tx_mux_value(self._u, subdev_spec))
-               self._subdev = usrp.selected_subdev(self._u, subdev_spec)
+               self._get_u().set_mux(usrp.determine_tx_mux_value(self._get_u(), subdev_spec))
+               self._subdev = usrp.selected_subdev(self._get_u(), subdev_spec)
                #connect
-               self.connect(self, self._u)
+               self.connect(self, self._get_u())
 
-       def set_interp_rate(self, interp): self._u.set_interp_rate(int(interp))
+       def set_interp_rate(self, interp): self._get_u().set_interp_rate(int(interp))
        def set_frequency(self, frequency, verbose=False):
-               common.set_frequency(
-                       u=self._u,
+               self._set_frequency(
                        which=self._subdev.which(),
                        subdev=self._subdev,
                        frequency=frequency,