From cbb8e474bb5592753a340ba31d3afbab7226f7c6 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Tue, 12 Jan 2010 14:43:43 -0800 Subject: Reorganized structure into include, lib, test, firmware, fpga. The fpga and firmware are empty placeholders for now. --- usrp_uhd/.gitignore | 3 - usrp_uhd/Makefile.am | 13 ---- usrp_uhd/include/.gitignore | 2 - usrp_uhd/include/Makefile.am | 16 ---- usrp_uhd/include/usrp_uhd.hpp | 43 ----------- usrp_uhd/include/usrp_uhd/usrp_addr.hpp | 90 ---------------------- usrp_uhd/include/usrp_uhd/wax.hpp | 129 -------------------------------- usrp_uhd/lib/.gitignore | 2 - usrp_uhd/lib/Makefile.am | 26 ------- usrp_uhd/lib/usrp_addr.cpp | 116 ---------------------------- usrp_uhd/lib/usrp_uhd.cpp | 10 --- usrp_uhd/lib/wax.cpp | 71 ------------------ usrp_uhd/usrp_uhd.pc.in | 11 --- 13 files changed, 532 deletions(-) delete mode 100644 usrp_uhd/.gitignore delete mode 100644 usrp_uhd/Makefile.am delete mode 100644 usrp_uhd/include/.gitignore delete mode 100644 usrp_uhd/include/Makefile.am delete mode 100644 usrp_uhd/include/usrp_uhd.hpp delete mode 100644 usrp_uhd/include/usrp_uhd/usrp_addr.hpp delete mode 100644 usrp_uhd/include/usrp_uhd/wax.hpp delete mode 100644 usrp_uhd/lib/.gitignore delete mode 100644 usrp_uhd/lib/Makefile.am delete mode 100644 usrp_uhd/lib/usrp_addr.cpp delete mode 100644 usrp_uhd/lib/usrp_uhd.cpp delete mode 100644 usrp_uhd/lib/wax.cpp delete mode 100644 usrp_uhd/usrp_uhd.pc.in (limited to 'usrp_uhd') 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 -#include -#include -#include -#include -#include - -namespace usrp{ - - class uhd{ - - public: - typedef boost::shared_ptr sptr; - typedef boost::function recv_hdlr_t; - uhd(usrp_addr_t usrp_addr); - ~uhd(void); - - //the io interface - void send(const std::vector &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 -#include -#include -#include - -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 -#include -#include -#include -#include -#include - -/*! - * 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(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 sptr; - typedef obj* ptr; - - //cast derived pointer to obj base class pointer - template static sptr cast(boost::shared_ptr r){ - return boost::static_pointer_cast(r); - } - template static ptr cast(T *r){ - return dynamic_cast(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 setter_t; - typedef boost::function 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(my_value). - * - * \param val the any type to cast - * \return data of the desired type - * \throw wax::bad_cast when the cast fails - */ - template T cast(const type & val){ - //special case to handle the proxy - if (val.type() == typeid(proxy)){ - return cast(boost::any_cast(val)()); - } - //do the type cast - return boost::any_cast(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 -#include -#include -#include -#include - -//----------------------- 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(&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 - -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 -#include -#include -#include - -/*********************************************************************** - * 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(val))[key]; - } - //check if its a smart pointer and call - if (val.type() == typeid(obj::sptr)){ - return (*cast(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} -- cgit v1.2.3