commit-gnuradio
[Top][All Lists]
Advanced

[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;
   }
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]