diff options
author | Josh Blum <josh@joshknows.com> | 2010-04-26 12:19:00 -0700 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-04-26 12:19:00 -0700 |
commit | f040d79d256bcdfcd931ab93e00b66f6af881a14 (patch) | |
tree | 0bb82963278a64caaa04b1c5360f0d3e48059d42 /host/lib/types.cpp | |
parent | 15befa19de40fb82f30d71bf21a767e7d8054ba1 (diff) | |
parent | 1217b8d67c3bef98195836fe10ab39576642b340 (diff) | |
download | uhd-f040d79d256bcdfcd931ab93e00b66f6af881a14.tar.gz uhd-f040d79d256bcdfcd931ab93e00b66f6af881a14.tar.bz2 uhd-f040d79d256bcdfcd931ab93e00b66f6af881a14.zip |
Merge branch 'eeprom' of git@ettus.sourcerepo.com:ettus/uhdpriv
Diffstat (limited to 'host/lib/types.cpp')
-rw-r--r-- | host/lib/types.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/host/lib/types.cpp b/host/lib/types.cpp index 91887840c..08e41b62f 100644 --- a/host/lib/types.cpp +++ b/host/lib/types.cpp @@ -31,6 +31,8 @@ #include <boost/foreach.hpp> #include <boost/format.hpp> #include <boost/cstdint.hpp> +#include <boost/assign/list_of.hpp> +#include <boost/thread.hpp> #include <stdexcept> #include <complex> @@ -250,3 +252,30 @@ 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 +){ + for (size_t i = 0; i < bytes.size(); i++){ + //write a byte at a time, its easy that way + byte_vector_t cmd = boost::assign::list_of(offset+i)(bytes[i]); + this->write_i2c(addr, cmd); + boost::this_thread::sleep(boost::posix_time::milliseconds(10)); //worst case write + } +} + +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+i)); + bytes.push_back(this->read_i2c(addr, 1).at(0)); + } + return bytes; +} |