diff options
Diffstat (limited to 'host/lib')
| -rw-r--r-- | host/lib/types.cpp | 27 | ||||
| -rw-r--r-- | host/lib/usrp/usrp2/usrp2_iface.cpp | 21 | ||||
| -rw-r--r-- | host/lib/usrp/usrp2/usrp2_iface.hpp | 48 | 
3 files changed, 28 insertions, 68 deletions
| diff --git a/host/lib/types.cpp b/host/lib/types.cpp index 91887840c..a1b9b21a9 100644 --- a/host/lib/types.cpp +++ b/host/lib/types.cpp @@ -31,6 +31,7 @@  #include <boost/foreach.hpp>  #include <boost/format.hpp>  #include <boost/cstdint.hpp> +#include <boost/assign/list_of.hpp>  #include <stdexcept>  #include <complex> @@ -250,3 +251,29 @@ spi_config_t::spi_config_t(edge_t edge){      mosi_edge = edge;      miso_edge = edge;  } + +void i2c_iface::write_eeprom( +    boost::uint8_t addr, +    boost::uint8_t offset, +    const byte_vector_t &bytes +){ +    BOOST_FOREACH(boost::uint8_t byte, bytes){ +        //write a byte at a time, its easy that way +        byte_vector_t cmd = boost::assign::list_of(offset)(byte); +        this->write_i2c(addr, cmd); +    } +} + +byte_vector_t i2c_iface::read_eeprom( +    boost::uint8_t addr, +    boost::uint8_t offset, +    size_t num_bytes +){ +    byte_vector_t bytes; +    for (size_t i = 0; i < num_bytes; i++){ +        //do a zero byte write to start read cycle +        this->write_i2c(addr, byte_vector_t(1, offset)); +        bytes.push_back(this->read_i2c(addr, 1).at(0)); +    } +    return bytes; +} diff --git a/host/lib/usrp/usrp2/usrp2_iface.cpp b/host/lib/usrp/usrp2/usrp2_iface.cpp index 76ee5d6fe..27b6f8907 100644 --- a/host/lib/usrp/usrp2/usrp2_iface.cpp +++ b/host/lib/usrp/usrp2/usrp2_iface.cpp @@ -134,27 +134,6 @@ public:      }  /*********************************************************************** - * EEPROM - **********************************************************************/ -    void write_eeprom(boost::uint8_t addr, boost::uint8_t offset, const byte_vector_t &bytes){ -        BOOST_FOREACH(boost::uint8_t byte, bytes){ -            //write a byte at a time, its easy that way -            byte_vector_t cmd = boost::assign::list_of(offset)(byte); -            this->write_i2c(addr, cmd); -        } -    } - -    byte_vector_t read_eeprom(boost::uint8_t addr, boost::uint8_t offset, size_t num_bytes){ -        byte_vector_t bytes; -        for (size_t i = 0; i < num_bytes; i++){ -            //do a zero byte write to start read cycle -            write_i2c(addr, byte_vector_t(1, offset)); -            bytes.push_back(read_i2c(addr, 1).at(0)); -        } -        return bytes; -    } - -/***********************************************************************   * Send/Recv over control   **********************************************************************/      usrp2_ctrl_data_t ctrl_send_and_recv(const usrp2_ctrl_data_t &out_data){ diff --git a/host/lib/usrp/usrp2/usrp2_iface.hpp b/host/lib/usrp/usrp2/usrp2_iface.hpp index 938359677..7158c58d0 100644 --- a/host/lib/usrp/usrp2/usrp2_iface.hpp +++ b/host/lib/usrp/usrp2/usrp2_iface.hpp @@ -39,7 +39,7 @@   * Provides a set of functions to implementation layer.   * Including spi, peek, poke, control...   */ -class usrp2_iface : boost::noncopyable{ +class usrp2_iface : public uhd::i2c_iface, boost::noncopyable{  public:      typedef boost::shared_ptr<usrp2_iface> sptr; @@ -103,52 +103,6 @@ public:      ) = 0;      /*! -     * Write bytes over the i2c. -     * \param addr the address -     * \param buf the vector of bytes -     */ -    virtual void write_i2c( -        boost::uint8_t addr, -        const uhd::byte_vector_t &buf -    ) = 0; - -    /*! -     * Read bytes over the i2c. -     * \param addr the address -     * \param num_bytes number of bytes to read -     * \return a vector of bytes -     */ -    virtual uhd::byte_vector_t read_i2c( -        boost::uint8_t addr, -        size_t num_bytes -    ) = 0; - -    /*! -     * Write bytes to an eeprom. -     * \param addr the address -     * \param offset byte offset -     * \param buf the vector of bytes -     */ -    virtual void write_eeprom( -        boost::uint8_t addr, -        boost::uint8_t offset, -        const uhd::byte_vector_t &buf -    ) = 0; - -    /*! -     * Read bytes from an eeprom. -     * \param addr the address -     * \param offset byte offset -     * \param num_bytes number of bytes to read -     * \return a vector of bytes -     */ -    virtual uhd::byte_vector_t read_eeprom( -        boost::uint8_t addr, -        boost::uint8_t offset, -        size_t num_bytes -    ) = 0; - -    /*!       * Get the master clock frequency.       * \return the frequency in Hz       */ | 
