summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.common2
-rw-r--r--include/usrp_uhd/usrp/dboard/Makefile.am4
-rw-r--r--include/usrp_uhd/usrp/dboard/interface.hpp147
-rw-r--r--lib/Makefile.am7
-rw-r--r--lib/usrp/Makefile.am2
-rw-r--r--lib/usrp/dboard/Makefile.am11
-rw-r--r--lib/usrp/dboard/interface.cpp15
-rw-r--r--test/Makefile.am2
8 files changed, 185 insertions, 5 deletions
diff --git a/Makefile.common b/Makefile.common
index 3b1464439..91958e393 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -4,6 +4,8 @@
USRP_UHD_LA = $(top_srcdir)/lib/libusrp_uhd.la
+USRP_UHD_USRP_DBOARD_LA = $(top_srcdir)/lib/usrp/dboard/lib.la
+
GENERAL_CPPFLAGS = \
-I$(top_srcdir)/include \
$(BOOST_CPPFLAGS)
diff --git a/include/usrp_uhd/usrp/dboard/Makefile.am b/include/usrp_uhd/usrp/dboard/Makefile.am
index 66fc4dd71..19777b11a 100644
--- a/include/usrp_uhd/usrp/dboard/Makefile.am
+++ b/include/usrp_uhd/usrp/dboard/Makefile.am
@@ -5,3 +5,7 @@
include $(top_srcdir)/Makefile.common
SUBDIRS =
+
+this_includedir = $(includedir)/usrp_uhd/usrp/dboard
+this_include_HEADERS = \
+ interface.hpp
diff --git a/include/usrp_uhd/usrp/dboard/interface.hpp b/include/usrp_uhd/usrp/dboard/interface.hpp
new file mode 100644
index 000000000..f9e4c96b4
--- /dev/null
+++ b/include/usrp_uhd/usrp/dboard/interface.hpp
@@ -0,0 +1,147 @@
+//
+// Copyright 2010 Ettus Research LLC
+//
+
+#ifndef INCLUDED_USRP_UHD_USRP_DBOARD_INTERFACE_H
+#define INCLUDED_USRP_UHD_USRP_DBOARD_INTERFACE_H
+
+#include <boost/shared_ptr.hpp>
+#include <stdint.h>
+
+namespace usrp_uhd{ namespace usrp{ namespace dboard{
+
+/*!
+ * The daughter board interface to be subclassed.
+ * A dboard instance interfaces with the mboard though this api.
+ * This interface provides i2c, spi, gpio, atr, aux dac/adc access.
+ * Each mboard should have a specially tailored dboard interface.
+ */
+class interface{
+public:
+ typedef boost::shared_ptr<interface> sptr;
+
+ //tells the host which device to use
+ enum spi_dev_t{
+ SPI_TX_DEV,
+ SPI_RX_DEV,
+ };
+
+ //args for writing spi data
+ enum spi_push_t{
+ SPI_PUSH_RISE,
+ SPI_PUSH_FALL
+ };
+
+ //args for reading spi data
+ enum spi_latch_t{
+ SPI_LATCH_RISE,
+ SPI_LATCH_FALL
+ };
+
+ //tell the host which gpio bank
+ enum gpio_bank_t{
+ GPIO_TX_BANK,
+ GPIO_RX_BANK
+ };
+
+ //structors
+ interface(void);
+ virtual ~interface(void);
+
+ /*!
+ * Write to an aux dac.
+ * \param which_dac the dac index 0, 1, 2, 3...
+ * \param value the value to write
+ */
+ virtual void write_aux_dac(int which_dac, int value) = 0;
+
+ /*!
+ * Read from an aux adc.
+ * \param which_adc the adc index 0, 1, 2, 3...
+ * \return the value that was read
+ */
+ virtual int read_aux_adc(int which_adc) = 0;
+
+ /*!
+ * Set daughterboard ATR register.
+ * The ATR register for a particular bank has 2 values:
+ * one value when transmitting, one when receiving.
+ * The mask controls which pins are controlled by ATR.
+ *
+ * \param bank GPIO_TX_BANK or GPIO_RX_BANK
+ * \param tx_value 16-bits, 0=FPGA input, 1=FPGA output
+ * \param rx_value 16-bits, 0=FPGA input, 1=FPGA output
+ * \param mask 16-bits, 0=ignore, 1=atr
+ */
+ virtual void set_atr_reg(gpio_bank_t bank, uint16_t tx_value, uint16_t rx_value, uint16_t mask) = 0;
+
+ /*!
+ * Set daughterboard GPIO data direction register.
+ *
+ * \param bank GPIO_TX_BANK or GPIO_RX_BANK
+ * \param value 16-bits, 0=FPGA input, 1=FPGA output
+ * \param mask 16-bits, 0=ignore, 1=set
+ */
+ virtual void set_gpio_ddr(gpio_bank_t bank, uint16_t value, uint16_t mask) = 0;
+
+ /*!
+ * Set daughterboard GPIO pin values.
+ *
+ * \param bank GPIO_TX_BANK or GPIO_RX_BANK
+ * \param value 16 bits, 0=low, 1=high
+ * \param mask 16 bits, 0=ignore, 1=set
+ */
+ virtual void write_gpio(gpio_bank_t bank, uint16_t value, uint16_t mask) = 0;
+
+ /*!
+ * Read daughterboard GPIO pin values
+ *
+ * \param bank GPIO_TX_BANK or GPIO_RX_BANK
+ * \return the value of the gpio bank
+ */
+ virtual uint16_t read_gpio(gpio_bank_t bank) = 0;
+
+ /*!
+ * \brief Write to I2C peripheral
+ * \param i2c_addr I2C bus address (7-bits)
+ * \param buf the data to write
+ * Writes are limited to a maximum of of 64 bytes.
+ */
+ virtual void write_i2c (int i2c_addr, const std::string &buf) = 0;
+
+ /*!
+ * \brief Read from I2C peripheral
+ * \param i2c_addr I2C bus address (7-bits)
+ * \param len number of bytes to read
+ * \return the data read if successful, else a zero length string.
+ * Reads are limited to a maximum of 64 bytes.
+ */
+ virtual std::string read_i2c (int i2c_addr, size_t len) = 0;
+
+ /*!
+ * \brief Write data to SPI bus peripheral.
+ *
+ * \param dev which spi device
+ * \param push args for writing
+ * \param buf the data to write
+ *
+ * Writes are limited to a maximum of 64 bytes.
+ */
+ virtual void write_spi (spi_dev_t dev, spi_push_t push, const std::string &buf) = 0;
+
+ /*!
+ * \brief Read data from SPI bus peripheral.
+ *
+ * \param dev which spi device
+ * \param push args for reading
+ * \param len number of bytes to read. Must be in [0,64].
+ * \return the data read if sucessful, else a zero length string.
+ *
+ * Reads are limited to a maximum of 64 bytes.
+ */
+ virtual std::string read_spi (spi_dev_t dev, spi_latch_t latch, size_t len) = 0;
+};
+
+}}} //namespace
+
+#endif /* INCLUDED_USRP_UHD_USRP_DBOARD_INTERFACE_H */
diff --git a/lib/Makefile.am b/lib/Makefile.am
index efb655640..6146f4025 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -8,14 +8,15 @@ SUBDIRS = usrp quadradio
AM_CPPFLAGS = $(GENERAL_CPPFLAGS)
-lib_LTLIBRARIES = \
- libusrp_uhd.la
+lib_LTLIBRARIES = libusrp_uhd.la
libusrp_uhd_la_SOURCES = \
device_addr.cpp \
usrp_uhd.cpp \
wax.cpp
-libusrp_uhd_la_LIBADD = $(GENERAL_LDDFLAGS)
+libusrp_uhd_la_LIBADD = \
+ $(GENERAL_LDDFLAGS) \
+ $(USRP_UHD_USRP_DBOARD_LA)
noinst_HEADERS =
diff --git a/lib/usrp/Makefile.am b/lib/usrp/Makefile.am
index 913f80a6d..ac06d5b5b 100644
--- a/lib/usrp/Makefile.am
+++ b/lib/usrp/Makefile.am
@@ -4,4 +4,4 @@
include $(top_srcdir)/Makefile.common
-SUBDIRS = mboard dboard
+SUBDIRS = dboard mboard
diff --git a/lib/usrp/dboard/Makefile.am b/lib/usrp/dboard/Makefile.am
index 66fc4dd71..8d77dcc42 100644
--- a/lib/usrp/dboard/Makefile.am
+++ b/lib/usrp/dboard/Makefile.am
@@ -5,3 +5,14 @@
include $(top_srcdir)/Makefile.common
SUBDIRS =
+
+AM_CPPFLAGS = $(GENERAL_CPPFLAGS)
+
+noinst_LTLIBRARIES = lib.la
+
+lib_la_SOURCES = \
+ interface.cpp
+
+lib_la_LIBADD = $(GENERAL_LDDFLAGS)
+
+noinst_HEADERS =
diff --git a/lib/usrp/dboard/interface.cpp b/lib/usrp/dboard/interface.cpp
new file mode 100644
index 000000000..5575568c6
--- /dev/null
+++ b/lib/usrp/dboard/interface.cpp
@@ -0,0 +1,15 @@
+//
+// Copyright 2010 Ettus Research LLC
+//
+
+#include <usrp_uhd/usrp/dboard/interface.hpp>
+
+using namespace usrp_uhd::usrp::dboard;
+
+interface::interface(void){
+ /* NOP */
+}
+
+interface::~interface(void){
+ /* NOP */
+}
diff --git a/test/Makefile.am b/test/Makefile.am
index 3373d838c..e5b1bc1e1 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -9,7 +9,7 @@ SUBDIRS =
AM_CPPFLAGS = $(GENERAL_CPPFLAGS)
LDADD = \
- $(GENERAL_LDDFLAGS)
+ $(GENERAL_LDDFLAGS) \
$(USRP_UHD_LA)
noinst_PROGRAMS = \