aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2010-02-25 18:26:00 +0000
committerJosh Blum <josh@joshknows.com>2010-02-25 18:26:00 +0000
commita9f8ba6e37e1349ce61b5022ddaff1c64dd52bd3 (patch)
tree20f00ce9d86c52b194831c026cf8a5f0d6419186 /host/lib
parentc95a158548e93d1ea37061e0b937e78ab0486b57 (diff)
downloaduhd-a9f8ba6e37e1349ce61b5022ddaff1c64dd52bd3.tar.gz
uhd-a9f8ba6e37e1349ce61b5022ddaff1c64dd52bd3.tar.bz2
uhd-a9f8ba6e37e1349ce61b5022ddaff1c64dd52bd3.zip
added usrp1e conditional compilation, and checking of device node (aka file for now)
Diffstat (limited to 'host/lib')
-rw-r--r--host/lib/CMakeLists.txt14
-rw-r--r--host/lib/usrp/usrp1e/usrp1e_impl.cpp69
-rw-r--r--host/lib/usrp/usrp1e/usrp1e_impl.hpp23
-rw-r--r--host/lib/usrp/usrp2/usrp2_impl.cpp1
4 files changed, 103 insertions, 4 deletions
diff --git a/host/lib/CMakeLists.txt b/host/lib/CMakeLists.txt
index edfefa127..96fba6e53 100644
--- a/host/lib/CMakeLists.txt
+++ b/host/lib/CMakeLists.txt
@@ -41,9 +41,17 @@ SET(libuhd_sources
########################################################################
# Conditionally add the usrp1e sources
########################################################################
-LIST(APPEND libuhd_sources
- usrp/usrp1e/usrp1e_none.cpp
-)
+INCLUDE(CheckIncludeFile)
+CHECK_INCLUDE_FILE("linux/ioctl.h" HAS_LINUX_IOCTL_H)
+IF(HAS_LINUX_IOCTL_H)
+ LIST(APPEND libuhd_sources
+ usrp/usrp1e/usrp1e_impl.cpp
+ )
+ELSE(HAS_LINUX_IOCTL_H)
+ LIST(APPEND libuhd_sources
+ usrp/usrp1e/usrp1e_none.cpp
+ )
+ENDIF(HAS_LINUX_IOCTL_H)
########################################################################
# Setup libuhd library
diff --git a/host/lib/usrp/usrp1e/usrp1e_impl.cpp b/host/lib/usrp/usrp1e/usrp1e_impl.cpp
new file mode 100644
index 000000000..93265ab17
--- /dev/null
+++ b/host/lib/usrp/usrp1e/usrp1e_impl.cpp
@@ -0,0 +1,69 @@
+//
+// Copyright 2010 Ettus Research LLC
+//
+// 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
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
+#include <unistd.h>
+#include <boost/format.hpp>
+#include "usrp1e_impl.hpp"
+
+using namespace uhd;
+using namespace uhd::usrp;
+
+/***********************************************************************
+ * Helper Functions
+ **********************************************************************/
+static bool file_exists(const std::string &file_path){
+ return access(file_path.c_str(), F_OK) == 0;
+}
+
+/***********************************************************************
+ * Discovery
+ **********************************************************************/
+device_addrs_t usrp1e::discover(const device_addr_t &device_addr){
+ device_addrs_t usrp1e_addrs;
+
+ //if a node was provided, use it and only it
+ if (device_addr.has_key("node")){
+ if (not file_exists(device_addr["node"])) return usrp1e_addrs;
+ device_addr_t new_addr;
+ new_addr["name"] = "USRP1E";
+ new_addr["type"] = "usrp1e";
+ new_addr["node"] = device_addr["node"];
+ usrp1e_addrs.push_back(new_addr);
+ }
+
+ //otherwise look for a few nodes at small indexes
+ else{
+ for(size_t i = 0; i < 5; i++){
+ std::string node = str(boost::format("/dev/usrp1_e%d") % i);
+ if (not file_exists(node)) continue;
+ device_addr_t new_addr;
+ new_addr["name"] = "USRP1E";
+ new_addr["type"] = "usrp1e";
+ new_addr["node"] = node;
+ usrp1e_addrs.push_back(new_addr);
+ }
+ }
+
+ return usrp1e_addrs;
+}
+
+/***********************************************************************
+ * Make
+ **********************************************************************/
+device::sptr usrp1e::make(const device_addr_t &){
+ throw std::runtime_error("not implemented yet");
+}
diff --git a/host/lib/usrp/usrp1e/usrp1e_impl.hpp b/host/lib/usrp/usrp1e/usrp1e_impl.hpp
new file mode 100644
index 000000000..3f5f89ec6
--- /dev/null
+++ b/host/lib/usrp/usrp1e/usrp1e_impl.hpp
@@ -0,0 +1,23 @@
+//
+// Copyright 2010 Ettus Research LLC
+//
+// 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
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
+#include <uhd/usrp/usrp1e.hpp>
+
+#ifndef INCLUDED_USRP1E_IMPL_HPP
+#define INCLUDED_USRP1E_IMPL_HPP
+
+#endif /* INCLUDED_USRP1E_IMPL_HPP */
diff --git a/host/lib/usrp/usrp2/usrp2_impl.cpp b/host/lib/usrp/usrp2/usrp2_impl.cpp
index 06876d241..5aa5d6e8d 100644
--- a/host/lib/usrp/usrp2/usrp2_impl.cpp
+++ b/host/lib/usrp/usrp2/usrp2_impl.cpp
@@ -62,7 +62,6 @@ uhd::device_addrs_t usrp2::discover(const device_addr_t &hint){
device_addr_t new_addr;
new_addr["name"] = "USRP2";
new_addr["type"] = "usrp2";
- new_addr["transport"] = "udp";
new_addr["addr"] = ip_addr.to_string();
usrp2_addrs.push_back(new_addr);
break;