diff options
author | Josh Blum <josh@joshknows.com> | 2010-01-12 14:43:43 -0800 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-01-12 14:43:43 -0800 |
commit | cbb8e474bb5592753a340ba31d3afbab7226f7c6 (patch) | |
tree | 6dd14d37d8d46f3a506a309f57d82ed1ed05f781 /usrp_uhd | |
parent | 4e94574aeaa46c671bba0a6fc83cb967d228c880 (diff) | |
download | uhd-cbb8e474bb5592753a340ba31d3afbab7226f7c6.tar.gz uhd-cbb8e474bb5592753a340ba31d3afbab7226f7c6.tar.bz2 uhd-cbb8e474bb5592753a340ba31d3afbab7226f7c6.zip |
Reorganized structure into include, lib, test, firmware, fpga.
The fpga and firmware are empty placeholders for now.
Diffstat (limited to 'usrp_uhd')
-rw-r--r-- | usrp_uhd/.gitignore | 3 | ||||
-rw-r--r-- | usrp_uhd/Makefile.am | 13 | ||||
-rw-r--r-- | usrp_uhd/include/.gitignore | 2 | ||||
-rw-r--r-- | usrp_uhd/include/Makefile.am | 16 | ||||
-rw-r--r-- | usrp_uhd/include/usrp_uhd.hpp | 43 | ||||
-rw-r--r-- | usrp_uhd/include/usrp_uhd/usrp_addr.hpp | 90 | ||||
-rw-r--r-- | usrp_uhd/include/usrp_uhd/wax.hpp | 129 | ||||
-rw-r--r-- | usrp_uhd/lib/.gitignore | 2 | ||||
-rw-r--r-- | usrp_uhd/lib/Makefile.am | 26 | ||||
-rw-r--r-- | usrp_uhd/lib/usrp_addr.cpp | 116 | ||||
-rw-r--r-- | usrp_uhd/lib/usrp_uhd.cpp | 10 | ||||
-rw-r--r-- | usrp_uhd/lib/wax.cpp | 71 | ||||
-rw-r--r-- | usrp_uhd/usrp_uhd.pc.in | 11 |
13 files changed, 0 insertions, 532 deletions
diff --git a/usrp_uhd/.gitignore b/usrp_uhd/.gitignore deleted file mode 100644 index 2cc79dbab..000000000 --- a/usrp_uhd/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/Makefile -/Makefile.in -/usrp_uhd.pc diff --git a/usrp_uhd/Makefile.am b/usrp_uhd/Makefile.am deleted file mode 100644 index c218af41a..000000000 --- a/usrp_uhd/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -# -# Copyright 2010 Ettus Research LLC -# - -include $(top_srcdir)/Makefile.common - -SUBDIRS = include lib - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = usrp_uhd.pc - -EXTRA_DIST = \ - usrp_uhd.pc.in diff --git a/usrp_uhd/include/.gitignore b/usrp_uhd/include/.gitignore deleted file mode 100644 index b336cc7ce..000000000 --- a/usrp_uhd/include/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/usrp_uhd/include/Makefile.am b/usrp_uhd/include/Makefile.am deleted file mode 100644 index 1ec431648..000000000 --- a/usrp_uhd/include/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright 2010 Ettus Research LLC -# - -include $(top_srcdir)/Makefile.common - -SUBDIRS = - -this_includedir = $(includedir) -this_include_HEADERS = \ - usrp_uhd.hpp - -usrp_uhd_includedir = $(includedir)/usrp_uhd -usrp_uhd_include_HEADERS = \ - usrp_uhd/usrp_addr.hpp \ - usrp_uhd/wax.hpp diff --git a/usrp_uhd/include/usrp_uhd.hpp b/usrp_uhd/include/usrp_uhd.hpp deleted file mode 100644 index 6bf97a5a4..000000000 --- a/usrp_uhd/include/usrp_uhd.hpp +++ /dev/null @@ -1,43 +0,0 @@ -// -// Copyright 2010 Ettus Research LLC -// - -#ifndef INCLUDED_USRP_UHD_HPP -#define INCLUDED_USRP_UHD_HPP - -#include <usrp_uhd/usrp_addr.hpp> -#include <usrp_uhd/wax.hpp> -#include <boost/shared_ptr.hpp> -#include <boost/function.hpp> -#include <vector> -#include <sys/uio.h> - -namespace usrp{ - - class uhd{ - - public: - typedef boost::shared_ptr<uhd> sptr; - typedef boost::function<bool(void *data, size_t len)> recv_hdlr_t; - uhd(usrp_addr_t usrp_addr); - ~uhd(void); - - //the io interface - void send(const std::vector<iovec> &iovs); - void send(void* data, size_t len); //wrapper - void recv(const recv_hdlr_t &recv_hdlr); - void recv(void* &data, size_t &len); //wrapper - - //connect dsps and subdevs - void connect(const wax::type &src, const wax::type &sink); - - //the properties interface - wax::proxy props(void); - - private: - wax::type d_mboard; - }; - -} //namespace usrp - -#endif /* INCLUDED_USRP_UHD_HPP */ diff --git a/usrp_uhd/include/usrp_uhd/usrp_addr.hpp b/usrp_uhd/include/usrp_uhd/usrp_addr.hpp deleted file mode 100644 index e8c282288..000000000 --- a/usrp_uhd/include/usrp_uhd/usrp_addr.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// -// Copyright 2010 Ettus Research LLC -// - -#ifndef INCLUDED_USRP_ADDR_HPP -#define INCLUDED_USRP_ADDR_HPP - -#include <string> -#include <iostream> -#include <netinet/ether.h> -#include <arpa/inet.h> - -namespace usrp{ - - /*! - * Wrapper for an ethernet mac address. - * Provides conversion between string and binary formats. - */ - struct mac_addr_t{ - struct ether_addr d_mac_addr; - mac_addr_t(const std::string &str = "00:00:00:00:00:00"); - std::string to_string(void) const; - }; - - /*! - * Wrapper for an ipv4 address. - * Provides conversion between string and binary formats. - */ - struct ip_addr_t{ - struct in_addr d_ip_addr; - ip_addr_t(const std::string &str = "0.0.0.0"); - std::string to_string(void) const; - }; - - /*! - * Possible usrp mboard interface types. - */ - enum usrp_addr_type_t{ - USRP_ADDR_TYPE_AUTO, - USRP_ADDR_TYPE_VIRTUAL, - USRP_ADDR_TYPE_USB, - USRP_ADDR_TYPE_ETH, - USRP_ADDR_TYPE_UDP, - USRP_ADDR_TYPE_GPMC - }; - - /*! - * Structure to hold properties that identify a usrp mboard. - */ - struct usrp_addr_t{ - usrp_addr_type_t type; - struct{ - size_t num_rx_dsps; - size_t num_tx_dsps; - size_t num_dboards; - } virtual_args; - struct{ - uint16_t vendor_id; - uint16_t product_id; - } usb_args; - struct{ - std::string ifc; - mac_addr_t mac_addr; - } eth_args; - struct{ - ip_addr_t ip_addr; - } udp_args; - struct{ - //TODO unknown for now - } gpmc_args; - - /*! - * \brief Convert a usrp usrp_addr_t into a string representation - */ - std::string to_string(void) const; - - /*! - * \brief Default constructor to initialize the usrp_addr_t struct - */ - usrp_addr_t(usrp_addr_type_t usrp_addr_type = USRP_ADDR_TYPE_AUTO); - }; - -} //namespace usrp - -//ability to use types with stream operators -std::ostream& operator<<(std::ostream &os, const usrp::usrp_addr_t &x); -std::ostream& operator<<(std::ostream &os, const usrp::mac_addr_t &x); -std::ostream& operator<<(std::ostream &os, const usrp::ip_addr_t &x); - -#endif /* INCLUDED_USRP_ADDR_HPP */ diff --git a/usrp_uhd/include/usrp_uhd/wax.hpp b/usrp_uhd/include/usrp_uhd/wax.hpp deleted file mode 100644 index 9d32314f7..000000000 --- a/usrp_uhd/include/usrp_uhd/wax.hpp +++ /dev/null @@ -1,129 +0,0 @@ -// -// Copyright 2010 Ettus Research LLC -// - -#ifndef INCLUDED_WAX_HPP -#define INCLUDED_WAX_HPP - -#include <boost/any.hpp> -#include <boost/function.hpp> -#include <boost/shared_ptr.hpp> -#include <boost/weak_ptr.hpp> -#include <boost/pointer_cast.hpp> -#include <iostream> - -/*! - * WAX - it's a metaphor! - * - * The WAX framework allows object to have generic/anytype properties. - * These properties can be addressed through generic/anytype identifiers. - * A property of a WAX object may even be another WAX object. - * - * When a property is a WAX object, the returned value must be an obj pointer. - * A WAX object provides two types of pointers: obj::ptr and obj::sptr. - * The choice of pointer vs smart pointer depends on the owner of the memory. - * - * Proprties may be referenced though the [] overloaded operator. - * The [] operator returns a special proxy that allows for assigment. - * Also, the [] operators may be chained as in the folowing examples: - * my_obj[prop1][prop2][prop3] = value - * value = my_obj[prop1][prop2][prop3] - * - * Any value returned from an access operation is of wax::type. - * To use this value, it must be cast with wax::cast<new_type>(value). - */ - -namespace wax{ - - //general typedefs - typedef boost::any type; - typedef boost::bad_any_cast bad_cast; - - //dummy class declarations - class obj; class proxy; - - /*! - * WAX object base class: - * A wax object subclass should override the set and get methods. - * The magic of operator chaining is handled by the [] operator. - */ - class obj{ - public: - //obj pointer typedefs - typedef boost::shared_ptr<obj> sptr; - typedef obj* ptr; - - //cast derived pointer to obj base class pointer - template <class T> static sptr cast(boost::shared_ptr<T> r){ - return boost::static_pointer_cast<obj>(r); - } - template <class T> static ptr cast(T *r){ - return dynamic_cast<ptr>(r); - } - - //structors - obj(void); - virtual ~obj(void); - - //public interface - proxy operator[](const type &key); - - private: - //private interface - virtual void get(const type &key, type &val) = 0; - virtual void set(const type &key, const type &val) = 0; - }; - - /*! - * WAX proxy class: - * Allows the obj [] operator to return a proxy result. - * This result can be assigned to via the = operator. - * Or this result can be called again with the [] operator. - */ - class proxy{ - public: - //destructors - ~proxy(void); - - //overloaded - type operator()(void); - proxy operator[](const type &key); - proxy operator=(const type &key); - - private: - //typedefs for callables from the object that built this proxy - typedef boost::function<void(const type &)> setter_t; - typedef boost::function<void(type &)> getter_t; - - //private contructor - proxy(getter_t, setter_t); - //access to private contructor - friend proxy obj::operator[](const type &key); - - getter_t d_getter; - setter_t d_setter; - }; - - /*! - * Cast a wax::type into the desired type - * Usage wax::cast<new_type>(my_value). - * - * \param val the any type to cast - * \return data of the desired type - * \throw wax::bad_cast when the cast fails - */ - template<typename T> T cast(const type & val){ - //special case to handle the proxy - if (val.type() == typeid(proxy)){ - return cast<T>(boost::any_cast<proxy>(val)()); - } - //do the type cast - return boost::any_cast<T>(val); - } - -} //namespace wax - -//ability to use types with stream operators -std::ostream& operator<<(std::ostream &os, const wax::type &x); - -#endif /* INCLUDED_WAX_HPP */ diff --git a/usrp_uhd/lib/.gitignore b/usrp_uhd/lib/.gitignore deleted file mode 100644 index b336cc7ce..000000000 --- a/usrp_uhd/lib/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/usrp_uhd/lib/Makefile.am b/usrp_uhd/lib/Makefile.am deleted file mode 100644 index 2b744b4fc..000000000 --- a/usrp_uhd/lib/Makefile.am +++ /dev/null @@ -1,26 +0,0 @@ -# -# Copyright 2010 Ettus Research LLC -# - -include $(top_srcdir)/Makefile.common - -SUBDIRS = - -AM_CPPFLAGS = \ - $(USRP_UHD_INCLUDES) \ - $(BOOST_CPPFLAGS) - -lib_LTLIBRARIES = \ - libusrp_uhd.la - -libusrp_uhd_la_SOURCES = \ - usrp_addr.cpp \ - usrp_uhd.cpp \ - wax.cpp - -libusrp_uhd_la_LIBADD = \ - $(BOOST_LDFLAGS) \ - $(BOOST_THREAD_LIB) \ - $(USRP_DBOARD_LA) - -noinst_HEADERS = diff --git a/usrp_uhd/lib/usrp_addr.cpp b/usrp_uhd/lib/usrp_addr.cpp deleted file mode 100644 index ddae7cd80..000000000 --- a/usrp_uhd/lib/usrp_addr.cpp +++ /dev/null @@ -1,116 +0,0 @@ -// -// Copyright 2010 Ettus Research LLC -// - -#include <usrp_uhd/usrp_addr.hpp> -#include <sstream> -#include <cstring> -#include <cstdio> -#include <stdexcept> - -//----------------------- u2 mac addr wrapper ------------------------// -usrp::mac_addr_t::mac_addr_t(const std::string &str){ - //ether_aton_r(str.c_str(), &d_mac_addr); - bool good = false; - char p[6] = {0x00, 0x50, 0xC2, 0x85, 0x30, 0x00}; // Matt's IAB - - switch (str.size()){ - case 5: - good = sscanf(str.c_str(), "%hhx:%hhx", &p[4], &p[5]) == 2; - break; - case 17: - good = sscanf(str.c_str(), "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", - &p[0], &p[1], &p[2], &p[3], &p[4], &p[5]) == 6; - break; - } - - if (not good) throw std::runtime_error("Invalid mac address: " + str); - memcpy(&d_mac_addr, p, sizeof(d_mac_addr)); -} - -std::string usrp::mac_addr_t::to_string(void) const{ - char addr_buf[128]; - //ether_ntoa_r(&d_mac_addr, addr_buf); - const uint8_t *p = reinterpret_cast<const uint8_t *>(&d_mac_addr); - sprintf(addr_buf, "%02x:%02x:%02x:%02x:%02x:%02x", - p[0], p[1], p[2], p[3], p[4], p[5]); - return std::string(addr_buf); -} - -std::ostream& operator<<(std::ostream &os, const usrp::mac_addr_t &x){ - os << x.to_string(); - return os; -} - -//----------------------- u2 ipv4 wrapper ----------------------------// -usrp::ip_addr_t::ip_addr_t(const std::string &str){ - int ret = inet_pton(AF_INET, str.c_str(), &d_ip_addr); - if (ret == 0) throw std::runtime_error("Invalid ip address: " + str); -} - -std::string usrp::ip_addr_t::to_string(void) const{ - char addr_buf[128]; - inet_ntop(AF_INET, &d_ip_addr, addr_buf, INET_ADDRSTRLEN); - return std::string(addr_buf); -} - -std::ostream& operator<<(std::ostream &os, const usrp::ip_addr_t &x){ - os << x.to_string(); - return os; -} - -//----------------------- usrp usrp_addr_t wrapper -------------------------// -usrp::usrp_addr_t::usrp_addr_t(usrp_addr_type_t usrp_addr_type){ - type = usrp_addr_type; - virtual_args.num_rx_dsps = 0; - virtual_args.num_tx_dsps = 0; - virtual_args.num_dboards = 0; - usb_args.vendor_id = 0xffff; - usb_args.product_id = 0xffff; - eth_args.ifc = "eth0"; - eth_args.mac_addr = mac_addr_t("ff:ff:ff:ff:ff:ff"); - udp_args.ip_addr = ip_addr_t("255.255.255.255"); -} - -std::string usrp::usrp_addr_t::to_string(void) const{ - std::stringstream out; - out << "USRP Type: "; - switch(type){ - case USRP_ADDR_TYPE_AUTO: - out << "Automatic" << std::endl; - break; - case USRP_ADDR_TYPE_VIRTUAL: - out << "Virtual" << std::endl; - out << "Num RX DSPs: " << virtual_args.num_rx_dsps << std::endl; - out << "Num TX DSPs: " << virtual_args.num_rx_dsps << std::endl; - out << "Num dboards: " << virtual_args.num_dboards << std::endl; - break; - case USRP_ADDR_TYPE_USB: - out << "USB Port" << std::endl; - out << "Vendor ID: 0x" << std::hex << usb_args.vendor_id << std::endl; - out << "Product ID: 0x" << std::hex << usb_args.product_id << std::endl; - break; - case USRP_ADDR_TYPE_ETH: - out << "Raw Ethernet" << std::endl; - out << "Interface: " << eth_args.ifc << std::endl; - out << "MAC Addr: " << eth_args.mac_addr << std::endl; - break; - case USRP_ADDR_TYPE_UDP: - out << "UDP Socket" << std::endl; - out << "IP Addr: " << udp_args.ip_addr << std::endl; - break; - case USRP_ADDR_TYPE_GPMC: - out << "GPMC" << std::endl; - break; - default: - out << "Unknown" << std::endl; - } - out << std::endl; - return out.str(); -} - -std::ostream& operator<<(std::ostream &os, const usrp::usrp_addr_t &x) -{ - os << x.to_string(); - return os; -} diff --git a/usrp_uhd/lib/usrp_uhd.cpp b/usrp_uhd/lib/usrp_uhd.cpp deleted file mode 100644 index 6dd9bee7b..000000000 --- a/usrp_uhd/lib/usrp_uhd.cpp +++ /dev/null @@ -1,10 +0,0 @@ -// -// Copyright 2010 Ettus Research LLC -// - -#include <usrp_uhd.hpp> - -using namespace usrp; - -uhd::uhd(usrp_addr_t usrp_addr){} -uhd::~uhd(void){} diff --git a/usrp_uhd/lib/wax.cpp b/usrp_uhd/lib/wax.cpp deleted file mode 100644 index 888e581f3..000000000 --- a/usrp_uhd/lib/wax.cpp +++ /dev/null @@ -1,71 +0,0 @@ -// -// Copyright 2010 Ettus Research LLC -// - -#include <usrp_uhd/wax.hpp> -#include <stdexcept> -#include <boost/bind.hpp> -#include <boost/format.hpp> - -/*********************************************************************** - * WAX Object - **********************************************************************/ -wax::obj::obj(void){ - /* NOP */ -} - -wax::obj::~obj(void){ - /* NOP */ -} - -wax::proxy wax::obj::operator[](const type &key){ - return proxy( - boost::bind(&obj::get, this, key, _1), - boost::bind(&obj::set, this, key, _1) - ); -} - -/*********************************************************************** - * WAX Proxy - **********************************************************************/ -wax::proxy::proxy(wax::proxy::getter_t getter, wax::proxy::setter_t setter) -: d_getter(getter), d_setter(setter){ - /* NOP */ -} - -wax::proxy::~proxy(void){ - /* NOP */ -} - -wax::proxy wax::proxy::operator[](const type &key){ - type val((*this)()); - //check if its a regular pointer and call - if (val.type() == typeid(obj::ptr)){ - return (*cast<obj::ptr>(val))[key]; - } - //check if its a smart pointer and call - if (val.type() == typeid(obj::sptr)){ - return (*cast<obj::sptr>(val))[key]; - } - //unknown type - throw std::runtime_error("cannot use [] on non wax::obj pointer"); -} - -wax::proxy wax::proxy::operator=(const type &val){ - d_setter(val); - return *this; -} - -wax::type wax::proxy::operator()(void){ - type val; - d_getter(val); - return val; -} - -/*********************************************************************** - * WAX Type - **********************************************************************/ -std::ostream& operator<<(std::ostream &os, const wax::type &x){ - os << boost::format("WAX type (%s)") % x.type().name(); - return os; -} diff --git a/usrp_uhd/usrp_uhd.pc.in b/usrp_uhd/usrp_uhd.pc.in deleted file mode 100644 index 18194a741..000000000 --- a/usrp_uhd/usrp_uhd.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: usrp_uhd -Description: Universal Software Radio Peripheral - Unified Hardware Driver -Requires: -Version: @VERSION@ -Libs: -L${libdir} -lusrp_uhd -Cflags: -I${includedir} |