[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r9454 - gnuradio/branches/features/gr-usrp2/gr-usrp2/s
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r9454 - gnuradio/branches/features/gr-usrp2/gr-usrp2/src |
Date: |
Fri, 29 Aug 2008 21:22:51 -0600 (MDT) |
Author: jcorgan
Date: 2008-08-29 21:22:50 -0600 (Fri, 29 Aug 2008)
New Revision: 9454
Modified:
gnuradio/branches/features/gr-usrp2/gr-usrp2/src/test_gr_usrp2.cc
gnuradio/branches/features/gr-usrp2/gr-usrp2/src/usrp2.i
gnuradio/branches/features/gr-usrp2/gr-usrp2/src/usrp2_source_base.cc
gnuradio/branches/features/gr-usrp2/gr-usrp2/src/usrp2_source_base.h
Log:
wip
Modified: gnuradio/branches/features/gr-usrp2/gr-usrp2/src/test_gr_usrp2.cc
===================================================================
--- gnuradio/branches/features/gr-usrp2/gr-usrp2/src/test_gr_usrp2.cc
2008-08-30 00:58:33 UTC (rev 9453)
+++ gnuradio/branches/features/gr-usrp2/gr-usrp2/src/test_gr_usrp2.cc
2008-08-30 03:22:50 UTC (rev 9454)
@@ -22,7 +22,12 @@
#include <usrp2/strtod_si.h>
#include <gruel/realtime.h>
+#include <gr_top_block.h>
#include <usrp2_source_32fc.h>
+#include <gr_head.h>
+#include <gr_null_sink.h>
+#include <gr_file_sink.h>
+#include <sys/time.h>
#include <string.h>
#include <iostream>
@@ -44,12 +49,11 @@
fprintf(stderr, " -g GAIN specify receive daughterboard gain
[default=0]\n");
fprintf(stderr, " -f FREQUENCY specify receive center frequency in
Hz [default=0.0]\n");
fprintf(stderr, " -d DECIM specify receive decimation rate
[default=5]\n");
-#if 0
fprintf(stderr, " -N NSAMPLES specify number of samples to receive
[default=infinite]\n");
fprintf(stderr, " -o OUTPUT_FILENAME specify file to receive samples
[default=none]\n");
+#if 0
fprintf(stderr, " -s write complex<short>
[default=complex<float>]\n");
#endif
- fprintf(stderr, " -v verbose output\n");
}
int
@@ -61,18 +65,16 @@
double rx_gain = 0.0;
double rx_freq = 0.0;
int rx_decim = 5;
+ char *output_filename = 0;
+ uint64_t nsamples = 0;
#if 0
- uint64_t nsamples = 0;
bool output_shorts = false;
- char *output_filename = 0;
#endif
- bool verbose = false;
int ch;
- //while ((ch = getopt(argc, argv, "he:m:f:d:g:N:o:sv")) != EOF){
- while ((ch = getopt(argc, argv, "he:m:g:f:d:v")) != EOF){
- //double tmp;
+ while ((ch = getopt(argc, argv, "he:m:g:f:d:N:o:")) != EOF){
+ double tmp;
switch (ch){
case 'e':
@@ -108,7 +110,6 @@
}
break;
-#if 0
case 'N':
if (!strtod_si(optarg, &tmp)) {
std::cerr << "invalid number: " << optarg << std::endl;
@@ -118,17 +119,14 @@
nsamples = static_cast<uint64_t>(tmp);
break;
- case 's':
- output_shorts = true;
- break;
-
case 'o':
output_filename = optarg;
break;
-#endif
- case 'v':
- verbose = true;
+#if 0
+ case 's':
+ output_shorts = true;
break;
+#endif
case 'h':
default:
@@ -137,58 +135,84 @@
}
}
+ // Get real-time scheduling priority
gruel::rt_status_t rt = gruel::enable_realtime_scheduling();
if (rt != gruel::RT_OK)
std::cerr << "Failed to enable realtime scheduling" << std::endl;
+ // Flow graph top block
+ gr_top_block_sptr tb = gr_make_top_block("test_gr_usrp2");
+
+ // Construct and configure a USRP2 block
usrp2_source_32fc_sptr u2 = usrp2_make_source_32fc(interface, mac_addr_str);
- if (!u2->set_gain(rx_gain)){
+ // Set the received decimation rate
+ if (!u2->set_decim(rx_decim)) {
+ fprintf(stderr, "set_decim(%d) failed\n", rx_decim);
+ exit(1);
+ }
+
+ // Set the daughterboard receive gain
+ if (!u2->set_gain(rx_gain)) {
fprintf(stderr, "set_gain(%f) failed\n", rx_gain);
exit(1);
}
+ // Tune the receive center frequency
usrp2::tune_result tr;
- if (!u2->set_center_freq(rx_freq, &tr)){
+ if (!u2->set_center_freq(rx_freq, &tr)) {
fprintf(stderr, "set_center_freq(%g) failed\n", rx_freq);
exit(1);
}
- if (verbose){
- printf("USRP2 MAC address: %s\n\n", u2->mac_addr().c_str());
- printf("Daughterboard configuration:\n");
- printf(" baseband_freq=%f\n", tr.baseband_freq);
- printf(" ddc_freq=%f\n", tr.dxc_freq);
- printf(" residual_freq=%f\n", tr.residual_freq);
- printf(" inverted=%s\n\n", tr.spectrum_inverted ? "yes" : "no");
- }
+ // Construct a file sink or null sink if no file specified
+ gr_block_sptr sink;
+ if (output_filename == 0)
+ sink = gr_make_null_sink(sizeof(gr_complex));
+ else
+ sink = gr_make_file_sink(sizeof(gr_complex), output_filename);
- if (!u2->set_decim(rx_decim)) {
- fprintf(stderr, "set_decim(%d) failed\n", rx_decim);
- exit(1);
+ // Construct a head block if number of samples was specified
+ // Wire flowgraph
+ gr_block_sptr head;
+ if (nsamples > 0) {
+ head = gr_make_head(sizeof(gr_complex), nsamples);
+ tb->connect(u2, 0, head, 0);
+ tb->connect(head, 0, sink, 0);
}
+ else
+ tb->connect(u2, 0, sink, 0);
+
+ printf("USRP2 MAC address: %s\n\n", u2->mac_addr().c_str());
+ printf("Daughterboard configuration:\n");
+ printf(" baseband_freq=%f\n", tr.baseband_freq);
+ printf(" ddc_freq=%f\n", tr.dxc_freq);
+ printf(" residual_freq=%f\n", tr.residual_freq);
+ printf(" inverted=%s\n\n", tr.spectrum_inverted ? "yes" : "no");
+ printf("USRP2 using decimation rate of %d\n", rx_decim);
- if (verbose)
- printf("USRP2 using decimation rate of %d\n", rx_decim);
+ if (nsamples > 0)
+ printf("Receiving %zd samples\n", nsamples);
+ else
+ printf("Receiving infinite samples (Ctrl-C to stop)\n");
-#if 0
- if (verbose) {
- if (nsamples > 0)
- printf("Receiving %zd samples\n\n", nsamples);
- else
- printf("Receiving infinite samples\n\n");
- }
+ if (output_filename)
+ printf("Writing samples to %s\n", output_filename);
+ else
+ printf("Dumping samples to null sink\n");
+
struct timeval start, end;
gettimeofday(&start, 0);
- // Run flowgraph here
+ tb->run();
gettimeofday(&end, 0);
long n_usecs = end.tv_usec-start.tv_usec;
long n_secs = end.tv_sec-start.tv_sec;
double elapsed = (double)n_secs + (double)n_usecs*1e-6;
-#endif
+ printf("\nElapsed time: %.3f seconds\n", elapsed);
+
return 0;
}
Modified: gnuradio/branches/features/gr-usrp2/gr-usrp2/src/usrp2.i
===================================================================
--- gnuradio/branches/features/gr-usrp2/gr-usrp2/src/usrp2.i 2008-08-30
00:58:33 UTC (rev 9453)
+++ gnuradio/branches/features/gr-usrp2/gr-usrp2/src/usrp2.i 2008-08-30
03:22:50 UTC (rev 9454)
@@ -102,6 +102,8 @@
%rename(_real_set_center_freq) set_center_freq;
bool set_center_freq(double frequency, usrp2::tune_result *r);
bool set_decim(int decimation_factor);
+
+ const std::string &mac_addr();
};
// create a more pythonic interface
Modified: gnuradio/branches/features/gr-usrp2/gr-usrp2/src/usrp2_source_base.cc
===================================================================
--- gnuradio/branches/features/gr-usrp2/gr-usrp2/src/usrp2_source_base.cc
2008-08-30 00:58:33 UTC (rev 9453)
+++ gnuradio/branches/features/gr-usrp2/gr-usrp2/src/usrp2_source_base.cc
2008-08-30 03:22:50 UTC (rev 9454)
@@ -66,3 +66,9 @@
{
return d_u2->set_rx_decim(decimation_factor);
}
+
+const std::string &
+usrp2_source_base::mac_addr()
+{
+ return d_u2->mac_addr();
+}
Modified: gnuradio/branches/features/gr-usrp2/gr-usrp2/src/usrp2_source_base.h
===================================================================
--- gnuradio/branches/features/gr-usrp2/gr-usrp2/src/usrp2_source_base.h
2008-08-30 00:58:33 UTC (rev 9453)
+++ gnuradio/branches/features/gr-usrp2/gr-usrp2/src/usrp2_source_base.h
2008-08-30 03:22:50 UTC (rev 9454)
@@ -62,6 +62,11 @@
bool set_decim(int decimation_factor);
/*!
+ * \brief Get USRP2 hardware MAC address
+ */
+ const std::string &mac_addr();
+
+ /*!
* \brief Derived class must override this
*/
virtual int work(int noutput_items,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r9454 - gnuradio/branches/features/gr-usrp2/gr-usrp2/src,
jcorgan <=