[Top][All Lists]
[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();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r8371 - in usrp2/branches/developers/jcorgan/gr-usrp2/host: apps lib,
jcorgan <=