[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r9121 - usrp2/branches/developers/eb/merge-wip/host-ng
From: |
eb |
Subject: |
[Commit-gnuradio] r9121 - usrp2/branches/developers/eb/merge-wip/host-ng/apps |
Date: |
Fri, 1 Aug 2008 02:49:25 -0600 (MDT) |
Author: eb
Date: 2008-08-01 02:49:23 -0600 (Fri, 01 Aug 2008)
New Revision: 9121
Modified:
usrp2/branches/developers/eb/merge-wip/host-ng/apps/
usrp2/branches/developers/eb/merge-wip/host-ng/apps/Makefile.am
usrp2/branches/developers/eb/merge-wip/host-ng/apps/tx_samples.cc
Log:
tx work-in-progress
Property changes on: usrp2/branches/developers/eb/merge-wip/host-ng/apps
___________________________________________________________________
Name: svn:ignore
- Makefile
Makefile.in
.libs
.deps
test_eth
test_usrp2
test2_usrp2
gen_const
find_usrps
cerr
*.sh
+ Makefile
Makefile.in
.libs
.deps
test_eth
test_usrp2
test2_usrp2
gen_const
find_usrps
cerr
*.sh
tx_samples
Modified: usrp2/branches/developers/eb/merge-wip/host-ng/apps/Makefile.am
===================================================================
--- usrp2/branches/developers/eb/merge-wip/host-ng/apps/Makefile.am
2008-08-01 07:57:03 UTC (rev 9120)
+++ usrp2/branches/developers/eb/merge-wip/host-ng/apps/Makefile.am
2008-08-01 08:49:23 UTC (rev 9121)
@@ -28,8 +28,10 @@
noinst_PROGRAMS = \
gen_const \
- test2_usrp2
+ test2_usrp2 \
+ tx_samples
find_usrps = find_usrps.cc
test2_usrp2_SOURCES = test2_usrp2.cc
-gen_const_SOURCES = gen_const.cc
\ No newline at end of file
+gen_const_SOURCES = gen_const.cc
+tx_samples_SOURCES = tx_samples.cc
Modified: usrp2/branches/developers/eb/merge-wip/host-ng/apps/tx_samples.cc
===================================================================
--- usrp2/branches/developers/eb/merge-wip/host-ng/apps/tx_samples.cc
2008-08-01 07:57:03 UTC (rev 9120)
+++ usrp2/branches/developers/eb/merge-wip/host-ng/apps/tx_samples.cc
2008-08-01 08:49:23 UTC (rev 9121)
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,18 +19,15 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
-#include "usrp2_basic.h"
+#include <usrp2/usrp2.h>
+#include <usrp2/strtod_si.h>
#include <iostream>
#include <complex>
#include <getopt.h>
-#include <gr_realtime.h>
-#include "strtod_si.h"
+#include <gruel/realtime.h>
-#define T_NOW (-1)
-
typedef std::complex<float> fcomplex;
-
static const char *
prettify_progname(const char *progname) // that's probably
almost a word ;)
{
@@ -57,11 +54,11 @@
fprintf(stderr, " -f FREQ set frequency to FREQ
[default=0]\n");
fprintf(stderr, " -i INTERP set interpolation rate to INTERP
[default=32]\n");
fprintf(stderr, " -g gain set tx gain\n");
- fprintf(stderr, " -F SAMPLES_PER_FRAME number of samples in each frame
[default=371]\n");
fprintf(stderr, " -S SCALE fpga scaling factor for I & Q
[default=256]\n");
}
#define GAIN_NOT_SET (-1000)
+#define MAX_SAMPLES (371)
int
main(int argc, char **argv)
@@ -69,18 +66,18 @@
const char *interface = "eth0";
const char *input_filename = 0;
bool repeat = false;
- const char *mac_addr_str = 0;
+ const char *mac_addr_str = "";
double freq = 0;
int32_t interp = 32;
- int32_t samples_per_frame = U2_MAX_SAMPLES;
- int32_t scale = 256;
+ int32_t samples_per_frame = MAX_SAMPLES;
+ int32_t scale = 3000;
double gain = GAIN_NOT_SET;
int ch;
double tmp;
- u2_mac_addr_t mac_addr;
- while ((ch = getopt(argc, argv, "he:m:I:rf:i:F:S:g:")) != EOF){
+
+ while ((ch = getopt(argc, argv, "he:m:I:rf:i:S:F:g:")) != EOF){
switch (ch){
case 'e':
@@ -89,11 +86,13 @@
case 'm':
mac_addr_str = optarg;
+#if 0
if (!usrp2_basic::parse_mac_addr(optarg, &mac_addr)){
std::cerr << "invalid mac addr: " << optarg << std::endl;
usage(argv[0]);
return 1;
}
+#endif
break;
case 'I':
@@ -142,6 +141,15 @@
return 1;
}
+ if (samples_per_frame < 9 || samples_per_frame > MAX_SAMPLES){
+ std::cerr << prettify_progname(argv[0])
+ << ": samples_per_frame is out of range. "
+ << "Must be in [9, " << MAX_SAMPLES << "].\n";
+ usage(argv[0]);
+ return 1;
+ }
+
+
FILE *fp = 0;
if (input_filename == 0)
fp = stdin;
@@ -153,72 +161,55 @@
}
}
- if (samples_per_frame < 9 || samples_per_frame > U2_MAX_SAMPLES){
- std::cerr << prettify_progname(argv[0])
- << ": samples_per_frame is out of range. "
- << "Must be in [9, " << U2_MAX_SAMPLES << "].\n";
- usage(argv[0]);
- return 1;
- }
- gr_rt_status_t rt = gr_enable_realtime_scheduling();
- if (rt != RT_OK)
- std::cerr << "failed to enable realtime scheduling\n";
+ gruel::rt_status_t rt = gruel::enable_realtime_scheduling();
+ if (rt != gruel::RT_OK)
+ std::cerr << "Failed to enable realtime scheduling" << std::endl;
- usrp2_basic *u2 = new usrp2_basic();
- if (!u2->open(interface)){
- std::cerr << "couldn't open " << interface << std::endl;
- return 1;
- }
-
- std::vector<op_id_reply_t> r = u2->find_usrps();
-
- for (size_t i = 0; i < r.size(); i++){
- std::cout << r[i] << std::endl;
- }
-
- if (r.size() == 0){
- std::cerr << "No USRP2 found.\n";
- return 1;
- }
-
- u2_mac_addr_t which = r[0].addr; // pick the first one
-
-
- usrp2_tune_result tune_result;
+ usrp2::usrp2::sptr u2 = usrp2::usrp2::make(interface, mac_addr_str);
if (gain != GAIN_NOT_SET){
- if (!u2->set_tx_gain(which, gain)){
+ if (!u2->set_tx_gain(gain)){
std::cerr << "set_tx_gain failed\n";
return 1;
}
}
- if (!u2->set_tx_freq(which, freq, &tune_result)){
- std::cerr << "set_tx_freq failed\n";
+ usrp2::tune_result tr;
+ if (!u2->set_tx_center_freq(freq, &tr)){
+ fprintf(stderr, "set_tx_center_freq(%g) failed\n", freq);
return 1;
}
- if (!u2->set_tx_interp(which, interp)){
- std::cerr << "set_tx_interp failed\n";
+ printf("Daughterboard configuration:\n");
+ printf(" baseband_freq=%f\n", tr.baseband_freq);
+ printf(" duc_freq=%f\n", tr.dxc_freq);
+ printf(" residual_freq=%f\n", tr.residual_freq);
+ printf(" inverted=%s\n\n", tr.spectrum_inverted ? "yes" : "no");
+
+ if (!u2->set_tx_interp(interp)){
+ fprintf(stderr, "set_tx_interp(%d) failed\n", interp);
return 1;
}
- if (!u2->set_tx_scale_iq(which, scale, scale)){
+ if (!u2->set_tx_scale_iq(scale, scale)){
std::cerr << "set_tx_scale_iq failed\n";
return 1;
}
- u2_eth_samples_t pkt;
- u2p_set_word0(&pkt.hdrs.fixed, U2P_TX_IMMEDIATE | U2P_TX_START_OF_BURST, 0);
- u2p_set_timestamp(&pkt.hdrs.fixed, T_NOW);
+ usrp2::tx_metadata md;
+ md.timestamp = -1;
+ md.start_of_burst = 1;
+ md.send_now = 1;
while (1){
- int r = fread(&pkt.samples, sizeof(uint32_t), samples_per_frame, fp);
+ std::complex<int16_t> samples[MAX_SAMPLES];
+ int r = fread(samples, sizeof(uint32_t), samples_per_frame, fp);
+
// fprintf(stderr, "fread -> %d\n", r);
if (r == 0){
@@ -230,7 +221,7 @@
// FIXME if r < 9, pad to 9 for minimum packet size constraint
- if (!u2->write_samples(which, &pkt, r))
+ if (!u2->tx_complex_int16(0, samples, samples_per_frame, &md))
break;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r9121 - usrp2/branches/developers/eb/merge-wip/host-ng/apps,
eb <=