diff options
author | Johnathan Corgan | 2010-08-09 19:00:28 -0400 |
---|---|---|
committer | Johnathan Corgan | 2010-08-09 19:00:28 -0400 |
commit | 316ced6169d3a4f44f80b6a5b98aeffce1317188 (patch) | |
tree | 4a9d86b0a606d625a59ec0ceafc1d4c2ee6ec1f9 /gr-uhd | |
parent | 939dfda488e0a3ef0e21d422a79b3ad30151b626 (diff) | |
parent | 97fed571222f034b62afa4de51c66d0566d5c74e (diff) | |
download | gnuradio-316ced6169d3a4f44f80b6a5b98aeffce1317188.tar.gz gnuradio-316ced6169d3a4f44f80b6a5b98aeffce1317188.tar.bz2 gnuradio-316ced6169d3a4f44f80b6a5b98aeffce1317188.zip |
Merge branch 'uhd' of git://gnuradio.org/jblum into next
Diffstat (limited to 'gr-uhd')
-rw-r--r-- | gr-uhd/grc/.gitignore | 1 | ||||
-rw-r--r-- | gr-uhd/grc/Makefile.am | 10 | ||||
-rwxr-xr-x | gr-uhd/grc/gen_uhd_mimo_blocks_xml.py | 190 | ||||
-rw-r--r-- | gr-uhd/grc/uhd_mimo_sink.xml | 102 | ||||
-rw-r--r-- | gr-uhd/grc/uhd_mimo_source.xml | 102 | ||||
-rw-r--r-- | gr-uhd/grc/uhd_simple_sink.xml | 11 | ||||
-rw-r--r-- | gr-uhd/grc/uhd_simple_source.xml | 9 | ||||
-rw-r--r-- | gr-uhd/lib/uhd_mimo_sink.cc | 4 | ||||
-rw-r--r-- | gr-uhd/lib/uhd_mimo_sink.h | 7 | ||||
-rw-r--r-- | gr-uhd/lib/uhd_mimo_source.cc | 4 | ||||
-rw-r--r-- | gr-uhd/lib/uhd_mimo_source.h | 7 | ||||
-rw-r--r-- | gr-uhd/lib/uhd_simple_sink.cc | 4 | ||||
-rw-r--r-- | gr-uhd/lib/uhd_simple_sink.h | 6 | ||||
-rw-r--r-- | gr-uhd/lib/uhd_simple_source.cc | 4 | ||||
-rw-r--r-- | gr-uhd/lib/uhd_simple_source.h | 6 | ||||
-rw-r--r-- | gr-uhd/lib/utils.cc | 22 |
16 files changed, 273 insertions, 216 deletions
diff --git a/gr-uhd/grc/.gitignore b/gr-uhd/grc/.gitignore index b336cc7ce..479c2b650 100644 --- a/gr-uhd/grc/.gitignore +++ b/gr-uhd/grc/.gitignore @@ -1,2 +1,3 @@ +/uhd_mimo*.xml /Makefile /Makefile.in diff --git a/gr-uhd/grc/Makefile.am b/gr-uhd/grc/Makefile.am index cf3f77080..fa056ca8a 100644 --- a/gr-uhd/grc/Makefile.am +++ b/gr-uhd/grc/Makefile.am @@ -28,3 +28,13 @@ dist_grcblocks_DATA = \ uhd_mimo_sink.xml \ uhd_simple_source.xml \ uhd_simple_sink.xml + +######################################################################## +# Rules for generating the mimo source and sink blocks +######################################################################## +BUILT_SOURCES = uhd_mimo_sink.xml uhd_mimo_source.xml +EXTRA_DIST = $(srcdir)/gen_uhd_mimo_blocks_xml.py + +$(BUILT_SOURCES): $(srcdir)/gen_uhd_mimo_blocks_xml.py + @echo "generating $@..." + $(PYTHON) $< $@ diff --git a/gr-uhd/grc/gen_uhd_mimo_blocks_xml.py b/gr-uhd/grc/gen_uhd_mimo_blocks_xml.py new file mode 100755 index 000000000..7e61563cc --- /dev/null +++ b/gr-uhd/grc/gen_uhd_mimo_blocks_xml.py @@ -0,0 +1,190 @@ +#!/usr/bin/env python +""" +Copyright 2010 Free Software Foundation, Inc. + +This file is part of GNU Radio + +GNU Radio Companion 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 +of the License, or (at your option) any later version. + +GNU Radio Companion 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 this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +""" + +MAIN_TMPL = """\ +<?xml version="1.0"?> +<block> + <name>UHD MIMO $sourk.title()</name> + <key>uhd_mimo_$(sourk)</key> + <category>UHD</category> + <import>from gnuradio import uhd</import> + <make>uhd.mimo_$(sourk)(\$nchan, \$args, uhd.io_type_t.\$type.type) +self.\$(id).set_samp_rate_all(\$samp_rate) +#for $n in range($max_nchan) +\#if \$nchan() > $n +self.\$(id).set_subdev_spec($n, \$sd_spec$(n)) +self.\$(id).set_center_freq($n, \$center_freq$(n)) +self.\$(id).set_gain($n, \$gain$(n)) + \#if \$ant$(n)() +self.\$(id).set_antenna($n, \$ant$(n)) + \#end if +\#end if +#end for +</make> + <callback>set_samp_rate(\$samp_rate)</callback> + #for $n in range($max_nchan) + <callback>set_center_freq($n, \$center_freq$(n))</callback> + <callback>set_gain($n, \$gain$(n))</callback> + <callback>set_antenna($n, \$ant$(n))</callback> + #end for + <param> + <name>Input Type</name> + <key>type</key> + <type>enum</type> + <option> + <name>Complex</name> + <key>complex</key> + <opt>type:COMPLEX_FLOAT32</opt> + <opt>vlen:1</opt> + </option> + <option> + <name>Short</name> + <key>short</key> + <opt>type:COMPLEX_INT16</opt> + <opt>vlen:2</opt> + </option> + </param> + <param> + <name>Num Channels</name> + <key>nchan</key> + <value>2</value> + <type>int</type> + #for $n in range(2, $max_nchan+1) + <option> + <name>$n Channels</name> + <key>$n</key> + </option> + #end for + </param> + <param> + <name>Args</name> + <key>args</key> + <value>addr=192.168.10.2 192.168.20.2</value> + <type>string</type> + </param> + <param> + <name>Samp Rate (Sps)</name> + <key>samp_rate</key> + <value>samp_rate</value> + <type>real</type> + </param> + $params + <check>$max_nchan >= \$nchan</check> + <check>\$nchan >= 0</check> + <$sourk> + <name>$direction</name> + <type>\$type</type> + <vlen>\$type.vlen</vlen> + <nports>\$nchan</nports> + </$sourk> + <doc> +The UHD $sourk.title() Block: + +Args: +Args is a delimited string used to locate UHD devices on your system. \\ +If left blank, the first UHD device found will be used. \\ +Used args to specify a specfic device. \\ +USRP2 Example: addr=192.168.10.2 + +Sample rate: +The sample rate is the number of samples per second input by this block. \\ +The UHD device driver will try its best to match the requested sample rate. \\ +If the requested rate is not possible, the UHD block will print an error at runtime. + +Antenna: +For subdevices/daughterboards with only one antenna, this may be left blank. \\ +Otherwise, the user should specify one of the possible antenna choices. \\ +See the daughterboard application notes for the possible antenna choices. + </doc> +</block> +""" + +PARAMS_TMPL = """ + <param> + <name>Ch$(n): Subdev Spec</name> + <key>sd_spec$(n)</key> + <value></value> + <type>string</type> + <hide> + \#if not \$nchan() > $n + all + \#elif \$sd_spec$(n)() + none + \#else + part + \#end if + </hide> + </param> + <param> + <name>Ch$(n): Center Freq (Hz)</name> + <key>center_freq$(n)</key> + <value>0</value> + <type>real</type> + <hide>\#if \$nchan() > $n then 'none' else 'all'#</hide> + </param> + <param> + <name>Ch$(n): Gain (dB)</name> + <key>gain$(n)</key> + <value>0</value> + <type>real</type> + <hide>\#if \$nchan() > $n then 'none' else 'all'#</hide> + </param> + <param> + <name>Ch$(n): Antenna</name> + <key>ant$(n)</key> + <value></value> + <type>string</type> + <hide> + \#if not \$nchan() > $n + all + \#elif \$ant$(n)() + none + \#else + part + \#end if + </hide> + </param> +""" + +def parse_tmpl(_tmpl, **kwargs): + from Cheetah import Template + return str(Template.Template(_tmpl, kwargs)) + +max_num_channels = 8 + +if __name__ == '__main__': + import sys + for file in sys.argv[1:]: + if 'source' in file: + sourk = 'source' + direction = 'out' + elif 'sink' in file: + sourk = 'sink' + direction = 'in' + else: raise Exception, 'is %s a source or sink?'%file + + params = ''.join([parse_tmpl(PARAMS_TMPL, n=n) for n in range(max_num_channels)]) + open(file, 'w').write(parse_tmpl(MAIN_TMPL, + max_nchan=max_num_channels, + params=params, + sourk=sourk, + direction=direction, + )) diff --git a/gr-uhd/grc/uhd_mimo_sink.xml b/gr-uhd/grc/uhd_mimo_sink.xml deleted file mode 100644 index 00d7f678f..000000000 --- a/gr-uhd/grc/uhd_mimo_sink.xml +++ /dev/null @@ -1,102 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -## UHD MIMO Sink -################################################### - --> -<block> - <name>UHD MIMO Sink</name> - <key>uhd_mimo_sink</key> - <category>UHD</category> - <import>from gnuradio import uhd</import> - <make>uhd.mimo_sink($nchan, $args, uhd.io_type_t.$type.type) -self.$(id).set_samp_rate_all($samp_rate) -map(lambda x: self.$(id).set_center_freq(*x), enumerate($center_freqs)) -map(lambda x: self.$(id).set_gain(*x), enumerate($gains)) -#if $ants() -map(lambda x: self.$(id).set_antenna(*x), enumerate($ants)) -#end if</make> - <callback>set_samp_rate($samp_rate)</callback> - <callback>map(lambda x: self.$(id).set_center_freq(*x), enumerate($center_freqs))</callback> - <callback>map(lambda x: self.$(id).set_gain(*x), enumerate($gains))</callback> - <callback>map(lambda x: self.$(id).set_antenna(*x), enumerate($ants))</callback> - <param> - <name>Input Type</name> - <key>type</key> - <type>enum</type> - <option> - <name>Complex</name> - <key>complex</key> - <opt>type:COMPLEX_FLOAT32</opt> - <opt>vlen:1</opt> - </option> - <option> - <name>Short</name> - <key>short</key> - <opt>type:COMPLEX_INT16</opt> - <opt>vlen:2</opt> - </option> - </param> - <param> - <name>Num Channels</name> - <key>nchan</key> - <value>2</value> - <type>int</type> - </param> - <param> - <name>Args</name> - <key>args</key> - <value>addr=192.168.10.2 192.168.20.2</value> - <type>string</type> - </param> - <param> - <name>Samp Rate (Sps)</name> - <key>samp_rate</key> - <value>samp_rate</value> - <type>real</type> - </param> - <param> - <name>Center Freqs (Hz)</name> - <key>center_freqs</key> - <value>0, 0</value> - <type>real_vector</type> - </param> - <param> - <name>Gains (dB)</name> - <key>gains</key> - <value>0, 0</value> - <type>real_vector</type> - </param> - <param> - <name>Antennas</name> - <key>ants</key> - <value>['RX2', 'RX2']</value> - <type>raw</type> - <hide>#if not $ants() then 'part' else 'none'#</hide> - </param> - <sink> - <name>out</name> - <type>$type</type> - <vlen>$type.vlen</vlen> - <nports>$nchan</nports> - </sink> - <doc> -The UHD Sink Block: - -Args: -Args is a delimited string used to locate UHD devices on your system. \ -If left blank, the first UHD device found will be used. \ -Used args to specify a specfic device. \ -USRP2 Example: addr=192.168.10.2 - -Sample rate: -The sample rate is the number of samples per second input by this block. \ -The UHD device driver will try its best to match the requested sample rate. \ -If the requested rate is not possible, the UHD block will print an error at runtime. - -Antenna: -For subdevices/daughterboards with only one antenna, this may be left blank. \ -Otherwise, the user should specify one of the possible antenna choices. \ -See the daughterboard application notes for the possible antenna choices. - </doc> -</block> diff --git a/gr-uhd/grc/uhd_mimo_source.xml b/gr-uhd/grc/uhd_mimo_source.xml deleted file mode 100644 index 98081bff0..000000000 --- a/gr-uhd/grc/uhd_mimo_source.xml +++ /dev/null @@ -1,102 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -## UHD MIMO Source -################################################### - --> -<block> - <name>UHD MIMO Source</name> - <key>uhd_mimo_source</key> - <category>UHD</category> - <import>from gnuradio import uhd</import> - <make>uhd.mimo_source($nchan, $args, uhd.io_type_t.$type.type) -self.$(id).set_samp_rate_all($samp_rate) -map(lambda x: self.$(id).set_center_freq(*x), enumerate($center_freqs)) -map(lambda x: self.$(id).set_gain(*x), enumerate($gains)) -#if $ants() -map(lambda x: self.$(id).set_antenna(*x), enumerate($ants)) -#end if</make> - <callback>set_samp_rate($samp_rate)</callback> - <callback>map(lambda x: self.$(id).set_center_freq(*x), enumerate($center_freqs))</callback> - <callback>map(lambda x: self.$(id).set_gain(*x), enumerate($gains))</callback> - <callback>map(lambda x: self.$(id).set_antenna(*x), enumerate($ants))</callback> - <param> - <name>Output Type</name> - <key>type</key> - <type>enum</type> - <option> - <name>Complex</name> - <key>complex</key> - <opt>type:COMPLEX_FLOAT32</opt> - <opt>vlen:1</opt> - </option> - <option> - <name>Short</name> - <key>short</key> - <opt>type:COMPLEX_INT16</opt> - <opt>vlen:2</opt> - </option> - </param> - <param> - <name>Num Channels</name> - <key>nchan</key> - <value>2</value> - <type>int</type> - </param> - <param> - <name>Args</name> - <key>args</key> - <value>addr=192.168.10.2 192.168.20.2</value> - <type>string</type> - </param> - <param> - <name>Samp Rate (Sps)</name> - <key>samp_rate</key> - <value>samp_rate</value> - <type>real</type> - </param> - <param> - <name>Center Freqs (Hz)</name> - <key>center_freqs</key> - <value>0, 0</value> - <type>real_vector</type> - </param> - <param> - <name>Gains (dB)</name> - <key>gains</key> - <value>0, 0</value> - <type>real_vector</type> - </param> - <param> - <name>Antennas</name> - <key>ants</key> - <value>['RX2', 'RX2']</value> - <type>raw</type> - <hide>#if not $ants() then 'part' else 'none'#</hide> - </param> - <source> - <name>out</name> - <type>$type</type> - <vlen>$type.vlen</vlen> - <nports>$nchan</nports> - </source> - <doc> -The UHD Source Block: - -Args: -Args is a delimited string used to locate UHD devices on your system. \ -If left blank, the first UHD device found will be used. \ -Used args to specify a specfic device. \ -USRP2 Example: addr=192.168.10.2 - -Sample rate: -The sample rate is the number of samples per second output by this block. \ -The UHD device driver will try its best to match the requested sample rate. \ -If the requested rate is not possible, the UHD block will print an error at runtime. - -Antenna: -For subdevices/daughterboards with only one antenna, this may be left blank. \ -Otherwise, the user should specify one of the possible antenna choices. \ -See the daughterboard application notes for the possible antenna choices. - </doc> -</block> diff --git a/gr-uhd/grc/uhd_simple_sink.xml b/gr-uhd/grc/uhd_simple_sink.xml index 2992f650e..1913d7ffb 100644 --- a/gr-uhd/grc/uhd_simple_sink.xml +++ b/gr-uhd/grc/uhd_simple_sink.xml @@ -10,6 +10,7 @@ <category>UHD</category> <import>from gnuradio import uhd</import> <make>uhd.simple_sink($args, uhd.io_type_t.$type.type) +self.$(id).set_subdev_spec($sd_spec) self.$(id).set_samp_rate($samp_rate) self.$(id).set_center_freq($center_freq) self.$(id).set_gain($gain) @@ -44,6 +45,13 @@ self.$(id).set_antenna($ant) <type>string</type> </param> <param> + <name>Subdev Spec</name> + <key>sd_spec</key> + <value></value> + <type>string</type> + <hide>#if $sd_spec() then 'none' else 'part'#</hide> + </param> + <param> <name>Samp Rate (Sps)</name> <key>samp_rate</key> <value>samp_rate</value> @@ -52,6 +60,7 @@ self.$(id).set_antenna($ant) <param> <name>Center Freq (Hz)</name> <key>center_freq</key> + <value>0</value> <type>real</type> </param> <param> @@ -67,7 +76,7 @@ self.$(id).set_antenna($ant) <hide>#if $ant() == '' then 'part' else 'none'#</hide> </param> <sink> - <name>out</name> + <name>in</name> <type>$type</type> <vlen>$type.vlen</vlen> </sink> diff --git a/gr-uhd/grc/uhd_simple_source.xml b/gr-uhd/grc/uhd_simple_source.xml index ecd963928..614204157 100644 --- a/gr-uhd/grc/uhd_simple_source.xml +++ b/gr-uhd/grc/uhd_simple_source.xml @@ -10,6 +10,7 @@ <category>UHD</category> <import>from gnuradio import uhd</import> <make>uhd.simple_source($args, uhd.io_type_t.$type.type) +self.$(id).set_subdev_spec($sd_spec) self.$(id).set_samp_rate($samp_rate) self.$(id).set_center_freq($center_freq) self.$(id).set_gain($gain) @@ -44,6 +45,13 @@ self.$(id).set_antenna($ant) <type>string</type> </param> <param> + <name>Subdev Spec</name> + <key>sd_spec</key> + <value></value> + <type>string</type> + <hide>#if $sd_spec() then 'none' else 'part'#</hide> + </param> + <param> <name>Samp Rate (Sps)</name> <key>samp_rate</key> <value>samp_rate</value> @@ -52,6 +60,7 @@ self.$(id).set_antenna($ant) <param> <name>Center Freq (Hz)</name> <key>center_freq</key> + <value>0</value> <type>real</type> </param> <param> diff --git a/gr-uhd/lib/uhd_mimo_sink.cc b/gr-uhd/lib/uhd_mimo_sink.cc index 95174522a..0a2ce1b0a 100644 --- a/gr-uhd/lib/uhd_mimo_sink.cc +++ b/gr-uhd/lib/uhd_mimo_sink.cc @@ -53,6 +53,10 @@ public: //NOP } + void set_subdev_spec(size_t chan, const std::string &spec){ + return _dev->set_tx_subdev_spec(chan, spec); + } + void set_samp_rate_all(double rate){ _dev->set_tx_rate_all(rate); do_samp_rate_error_message(rate, get_samp_rate_all(), "TX"); diff --git a/gr-uhd/lib/uhd_mimo_sink.h b/gr-uhd/lib/uhd_mimo_sink.h index 951980908..46679d973 100644 --- a/gr-uhd/lib/uhd_mimo_sink.h +++ b/gr-uhd/lib/uhd_mimo_sink.h @@ -44,6 +44,13 @@ public: uhd_mimo_sink(gr_io_signature_sptr sig); /*! + * Set the subdevice specification. + * \param chan the channel number from 0 to N-1 + * \param spec the subdev spec markup string + */ + virtual void set_subdev_spec(size_t chan, const std::string &spec) = 0; + + /*! * Set the sample rate for the usrp device (across all mboards). * \param rate a new rate in Sps */ diff --git a/gr-uhd/lib/uhd_mimo_source.cc b/gr-uhd/lib/uhd_mimo_source.cc index 2b5384ce3..62157142d 100644 --- a/gr-uhd/lib/uhd_mimo_source.cc +++ b/gr-uhd/lib/uhd_mimo_source.cc @@ -53,6 +53,10 @@ public: set_streaming(false); } + void set_subdev_spec(size_t chan, const std::string &spec){ + return _dev->set_rx_subdev_spec(chan, spec); + } + void set_samp_rate_all(double rate){ _dev->set_rx_rate_all(rate); do_samp_rate_error_message(rate, get_samp_rate_all(), "RX"); diff --git a/gr-uhd/lib/uhd_mimo_source.h b/gr-uhd/lib/uhd_mimo_source.h index e234779df..fbd7f2c42 100644 --- a/gr-uhd/lib/uhd_mimo_source.h +++ b/gr-uhd/lib/uhd_mimo_source.h @@ -44,6 +44,13 @@ public: uhd_mimo_source(gr_io_signature_sptr sig); /*! + * Set the subdevice specification. + * \param chan the channel number from 0 to N-1 + * \param spec the subdev spec markup string + */ + virtual void set_subdev_spec(size_t chan, const std::string &spec) = 0; + + /*! * Set the sample rate for the usrp device (across all mboards). * \param rate a new rate in Sps */ diff --git a/gr-uhd/lib/uhd_simple_sink.cc b/gr-uhd/lib/uhd_simple_sink.cc index 9df6c8e02..7b31218db 100644 --- a/gr-uhd/lib/uhd_simple_sink.cc +++ b/gr-uhd/lib/uhd_simple_sink.cc @@ -50,6 +50,10 @@ public: //NOP } + void set_subdev_spec(const std::string &spec){ + return _dev->set_tx_subdev_spec(spec); + } + void set_samp_rate(double rate){ _dev->set_tx_rate(rate); do_samp_rate_error_message(rate, get_samp_rate(), "TX"); diff --git a/gr-uhd/lib/uhd_simple_sink.h b/gr-uhd/lib/uhd_simple_sink.h index 7f1596259..0abf30681 100644 --- a/gr-uhd/lib/uhd_simple_sink.h +++ b/gr-uhd/lib/uhd_simple_sink.h @@ -43,6 +43,12 @@ public: uhd_simple_sink(gr_io_signature_sptr sig); /*! + * Set the subdevice specification. + * \param spec the subdev spec markup string + */ + virtual void set_subdev_spec(const std::string &spec) = 0; + + /*! * Set the sample rate for the usrp device. * \param rate a new rate in Sps */ diff --git a/gr-uhd/lib/uhd_simple_source.cc b/gr-uhd/lib/uhd_simple_source.cc index 846c0faeb..2ace1da68 100644 --- a/gr-uhd/lib/uhd_simple_source.cc +++ b/gr-uhd/lib/uhd_simple_source.cc @@ -51,6 +51,10 @@ public: set_streaming(false); } + void set_subdev_spec(const std::string &spec){ + return _dev->set_rx_subdev_spec(spec); + } + void set_samp_rate(double rate){ _dev->set_rx_rate(rate); do_samp_rate_error_message(rate, get_samp_rate(), "RX"); diff --git a/gr-uhd/lib/uhd_simple_source.h b/gr-uhd/lib/uhd_simple_source.h index 8568fc2d4..b95c0cfd9 100644 --- a/gr-uhd/lib/uhd_simple_source.h +++ b/gr-uhd/lib/uhd_simple_source.h @@ -43,6 +43,12 @@ public: uhd_simple_source(gr_io_signature_sptr sig); /*! + * Set the subdevice specification. + * \param spec the subdev spec markup string + */ + virtual void set_subdev_spec(const std::string &spec) = 0; + + /*! * Set the sample rate for the usrp device. * \param rate a new rate in Sps */ diff --git a/gr-uhd/lib/utils.cc b/gr-uhd/lib/utils.cc index 5d40c4fff..da8352965 100644 --- a/gr-uhd/lib/utils.cc +++ b/gr-uhd/lib/utils.cc @@ -21,8 +21,8 @@ */ #include "utils.h" //local include +#include <uhd/utils/warning.hpp> #include <boost/format.hpp> -#include <iostream> #include <cmath> void do_samp_rate_error_message( @@ -32,11 +32,11 @@ void do_samp_rate_error_message( ){ static const double max_allowed_error = 1.0; //Sps if (std::abs(target_rate - actual_rate) > max_allowed_error){ - std::cerr << boost::format( - "Warning: The hardware does not support the requested %s sample rate:\n" - " Target sample rate: %f MSps\n" - " Actual sample rate: %f MSps\n" - ) % xx % (target_rate/1e6) % (actual_rate/1e6) << std::endl; + uhd::print_warning(str(boost::format( + "The hardware does not support the requested %s sample rate:\n" + "Target sample rate: %f MSps\n" + "Actual sample rate: %f MSps\n" + ) % xx % (target_rate/1e6) % (actual_rate/1e6))); } } @@ -47,10 +47,10 @@ void do_tune_freq_error_message( ){ static const double max_allowed_error = 1.0; //Hz if (std::abs(target_freq - actual_freq) > max_allowed_error){ - std::cerr << boost::format( - "Warning: The hardware does not support the requested %s frequency:\n" - " Target frequency: %f MHz\n" - " Actual frequency: %f MHz\n" - ) % xx % (target_freq/1e6) % (actual_freq/1e6) << std::endl; + uhd::print_warning(str(boost::format( + "The hardware does not support the requested %s frequency:\n" + "Target frequency: %f MHz\n" + "Actual frequency: %f MHz\n" + ) % xx % (target_freq/1e6) % (actual_freq/1e6))); } } |