commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r8371 - in usrp2/branches/developers/jcorgan/gr-usrp2/


From: jcorgan
Subject: [Commit-gnuradio] r8371 - in usrp2/branches/developers/jcorgan/gr-usrp2/host: apps lib
Date: Sat, 10 May 2008 22:19:15 -0600 (MDT)

Author: jcorgan
Date: 2008-05-10 22:19:14 -0600 (Sat, 10 May 2008)
New Revision: 8371

Modified:
   usrp2/branches/developers/jcorgan/gr-usrp2/host/apps/find_usrps.cc
   usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2.i
   usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_basic.cc
   usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_basic.h
   usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_base.cc
   usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_base.h
   usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_c.cc
   usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_c.h
Log:
WIP with usrp2 host interface.

Modified: usrp2/branches/developers/jcorgan/gr-usrp2/host/apps/find_usrps.cc
===================================================================
--- usrp2/branches/developers/jcorgan/gr-usrp2/host/apps/find_usrps.cc  
2008-05-11 01:44:39 UTC (rev 8370)
+++ usrp2/branches/developers/jcorgan/gr-usrp2/host/apps/find_usrps.cc  
2008-05-11 04:19:14 UTC (rev 8371)
@@ -54,6 +54,7 @@
     exit(1);
   }
   
+#if 0
   usrp2_basic *u2 = new usrp2_basic();
 
   if (!u2->open(interface)){
@@ -62,7 +63,10 @@
   }
 
   std::vector<op_id_reply_t> r = u2->find_usrps();
+#endif
 
+  std::vector<op_id_reply_t> r = usrp2_basic::find_usrps(interface);
+
   for (size_t i = 0; i < r.size(); i++){
     std::cout << r[i] << std::endl;
   }

Modified: usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2.i
===================================================================
--- usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2.i 2008-05-11 
01:44:39 UTC (rev 8370)
+++ usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2.i 2008-05-11 
04:19:14 UTC (rev 8371)
@@ -81,12 +81,15 @@
 GR_SWIG_BLOCK_MAGIC(usrp2,source_c)
 
 usrp2_source_c_sptr
-usrp2_make_source_c() throw (std::runtime_error);
+usrp2_make_source_c(const std::string &ifc="eth0",
+                   const std::string &mac="") 
+  throw (std::runtime_error);
 
 class usrp2_source_c : public usrp2_source_base {
 
 protected:
-  usrp2_source_c();
+  usrp2_source_c(const std::string &ifc,
+                const std::string &mac);
 
 public:
   ~usrp2_source_c();

Modified: usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_basic.cc
===================================================================
--- usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_basic.cc  
2008-05-11 01:44:39 UTC (rev 8370)
+++ usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_basic.cc  
2008-05-11 04:19:14 UTC (rev 8371)
@@ -156,6 +156,21 @@
   return result;
 }
 
+// static
+std::vector<op_id_reply_t> 
+usrp2_basic::find_usrps(const std::string &ifc)
+{
+  usrp2_basic *u2 = new usrp2_basic();
+  if (!u2 || !u2->open(ifc)) {
+    std::cerr << "Unable to open network interface: " << ifc << std::endl;
+    return std::vector<op_id_reply_t>(0);
+  }
+
+  std::vector<op_id_reply_t> r = u2->find_usrps();
+  delete u2;
+  return r;
+}
+
 bool
 usrp2_basic::find_usrp_by_mac(const u2_mac_addr_t &addr, op_id_reply_t *u)
 {
@@ -544,3 +559,4 @@
 {
   return memcmp(&a, &b, sizeof(u2_mac_addr_t)) == 0;
 }
+

Modified: usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_basic.h
===================================================================
--- usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_basic.h   
2008-05-11 01:44:39 UTC (rev 8370)
+++ usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_basic.h   
2008-05-11 04:19:14 UTC (rev 8371)
@@ -53,11 +53,16 @@
   bool close();
   
   /*!
-   * Return a vector that describes all usrps found
+   * Return a vector that describes all usrps found on already open'd interface
    */
   std::vector<op_id_reply_t> find_usrps();
 
   /*!
+   * Return a vector that describes all usrps found on a specified interface.
+   */
+  static std::vector<op_id_reply_t> find_usrps(const std::string &ifc);
+
+  /*!
    * \brief Find usrp by mac address
    *
    * \param[in] addr is the mac address of the USRP to look for

Modified: 
usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_base.cc
===================================================================
--- usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_base.cc    
2008-05-11 01:44:39 UTC (rev 8370)
+++ usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_base.cc    
2008-05-11 04:19:14 UTC (rev 8371)
@@ -26,18 +26,55 @@
 
 #include <usrp2_source_base.h>
 #include <gr_io_signature.h>
+#include <iostream>
 
+#define USRP2_SOURCE_BASE_DEBUG 1
+
 usrp2_source_base::usrp2_source_base(const std::string &name,
-                                    gr_io_signature_sptr output_signature) 
+                                    gr_io_signature_sptr output_signature,
+                                    const std::string &ifc,
+                                    const std::string &mac) 
   throw (std::runtime_error)
   : gr_sync_block(name,
                  gr_make_io_signature(0, 0, 0),
-                 output_signature)
+                 output_signature),
+    d_u2(0), d_addr()
 {
+  std::vector<op_id_reply_t> r = usrp2_basic::find_usrps(ifc);
+  if (r.size() == 0)
+    throw std::runtime_error("No USRP2s found on interface.");
+
+  if (mac == "") {
+    if (r.size() > 1)
+      throw std::runtime_error("Must supply USRP2 MAC address when multiple 
devices are present");
+    d_addr = r[0].addr;
+  }
+  else {
+    u2_mac_addr_t addr;
+    if (!usrp2_basic::parse_mac_addr(mac, &addr))
+      throw std::runtime_error("Invalid MAC address");
+
+    unsigned int i;
+    for (i = 0; i < r.size(); i++)
+      if (r[i].addr == addr) {
+       d_addr = addr;
+       break;
+      }
+    
+    if (i == r.size())
+      throw std::runtime_error("Unable to find specified USRP2.");
+  }
+
+  if (USRP2_SOURCE_BASE_DEBUG)
+    std::cout << "usrp2_source_base: using ifc=" << ifc << " mac=" << d_addr 
<< std::endl;
+
+  // Now retrieve or make and return usrp2_basic object for MAC address in 
d_addr
 }
 
 usrp2_source_base::~usrp2_source_base ()
 {
+  if (d_u2)
+    delete d_u2;
 }
 
 int

Modified: 
usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_base.h
===================================================================
--- usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_base.h     
2008-05-11 01:44:39 UTC (rev 8370)
+++ usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_base.h     
2008-05-11 04:19:14 UTC (rev 8371)
@@ -24,17 +24,21 @@
 #define INCLUDED_USRP2_SOURCE_BASE_H
 
 #include <gr_sync_block.h>
+#include <usrp2_basic.h>
 #include <stdexcept>
 
 class usrp2_source_base : public gr_sync_block {
   
-private:
-
 protected:
   usrp2_source_base(const std::string &name,
-                   gr_io_signature_sptr output_signature) 
+                   gr_io_signature_sptr output_signature,
+                   const std::string &ifc = "eth0",
+                   const std::string &mac = "")
     throw (std::runtime_error);
-  
+
+  usrp2_basic *d_u2;
+  u2_mac_addr_t d_addr;
+
 public:
   ~usrp2_source_base();
   

Modified: usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_c.cc
===================================================================
--- usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_c.cc       
2008-05-11 01:44:39 UTC (rev 8370)
+++ usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_c.cc       
2008-05-11 04:19:14 UTC (rev 8371)
@@ -26,18 +26,21 @@
 
 #include <usrp2_source_c.h>
 #include <gr_io_signature.h>
-#include <usrp_standard.h>
-#include <usrp_bytesex.h>
 
 usrp2_source_c_sptr
-usrp2_make_source_c() throw (std::runtime_error)
+usrp2_make_source_c(const std::string &ifc,
+                   const std::string &mac) 
+  throw (std::runtime_error)
 {
-  return usrp2_source_c_sptr(new usrp2_source_c());
+  return usrp2_source_c_sptr(new usrp2_source_c(ifc, mac));
 }
 
-usrp2_source_c::usrp2_source_c() throw (std::runtime_error)
+usrp2_source_c::usrp2_source_c(const std::string &ifc,
+                              const std::string &mac) 
+  throw (std::runtime_error)
   : usrp2_source_base("usrp2_source_c",
-                     gr_make_io_signature(1, 1, sizeof(gr_complex)))
+                     gr_make_io_signature(1, 1, sizeof(gr_complex)),
+                     ifc, mac)
 {
 }
 

Modified: usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_c.h
===================================================================
--- usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_c.h        
2008-05-11 01:44:39 UTC (rev 8370)
+++ usrp2/branches/developers/jcorgan/gr-usrp2/host/lib/usrp2_source_c.h        
2008-05-11 04:19:14 UTC (rev 8371)
@@ -29,16 +29,20 @@
 typedef boost::shared_ptr<usrp2_source_c> usrp2_source_c_sptr;
 
 usrp2_source_c_sptr
-usrp2_make_source_c() throw (std::runtime_error);
+usrp2_make_source_c(const std::string &ifc="eth0",
+                   const std::string &mac="") 
+  throw (std::runtime_error);
 
 class usrp2_source_c : public usrp2_source_base {
 
 private:
   friend usrp2_source_c_sptr
-  usrp2_make_source_c() throw (std::runtime_error);
+  usrp2_make_source_c(const std::string &ifc,
+                     const std::string &mac) throw (std::runtime_error);
 
 protected:
-  usrp2_source_c() throw (std::runtime_error);
+  usrp2_source_c(const std::string &ifc="eth0",
+                const std::string &mac="") throw (std::runtime_error);
 
 public:
   ~usrp2_source_c();





reply via email to

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