aboutsummaryrefslogtreecommitdiffstats
path: root/include/usrp_uhd/device_addr.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/usrp_uhd/device_addr.hpp')
-rw-r--r--include/usrp_uhd/device_addr.hpp90
1 files changed, 90 insertions, 0 deletions
diff --git a/include/usrp_uhd/device_addr.hpp b/include/usrp_uhd/device_addr.hpp
new file mode 100644
index 000000000..f0be44c1f
--- /dev/null
+++ b/include/usrp_uhd/device_addr.hpp
@@ -0,0 +1,90 @@
+//
+// Copyright 2010 Ettus Research LLC
+//
+
+#ifndef INCLUDED_USRP_UHD_DEVICE_ADDR_HPP
+#define INCLUDED_USRP_UHD_DEVICE_ADDR_HPP
+
+#include <string>
+#include <iostream>
+#include <netinet/ether.h>
+#include <arpa/inet.h>
+
+namespace usrp_uhd{
+
+ /*!
+ * Wrapper for an ethernet mac address.
+ * Provides conversion between string and binary formats.
+ */
+ struct mac_addr_t{
+ struct ether_addr 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 ip_addr;
+ ip_addr_t(const std::string &str = "0.0.0.0");
+ std::string to_string(void) const;
+ };
+
+ /*!
+ * Possible usrp device interface types.
+ */
+ enum device_addr_type_t{
+ DEVICE_ADDR_TYPE_AUTO,
+ DEVICE_ADDR_TYPE_VIRTUAL,
+ DEVICE_ADDR_TYPE_USB,
+ DEVICE_ADDR_TYPE_ETH,
+ DEVICE_ADDR_TYPE_UDP,
+ DEVICE_ADDR_TYPE_GPMC
+ };
+
+ /*!
+ * Structure to hold properties that identify a usrp device.
+ */
+ struct device_addr_t{
+ device_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 device_addr_t into a string representation
+ */
+ std::string to_string(void) const;
+
+ /*!
+ * \brief Default constructor to initialize the device_addr_t struct
+ */
+ device_addr_t(device_addr_type_t device_addr_type = DEVICE_ADDR_TYPE_AUTO);
+ };
+
+} //namespace usrp_uhd
+
+//ability to use types with stream operators
+std::ostream& operator<<(std::ostream &os, const usrp_uhd::device_addr_t &x);
+std::ostream& operator<<(std::ostream &os, const usrp_uhd::mac_addr_t &x);
+std::ostream& operator<<(std::ostream &os, const usrp_uhd::ip_addr_t &x);
+
+#endif /* INCLUDED_USRP_UHD_DEVICE_ADDR_HPP */