aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/types.cpp
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2010-04-26 12:19:00 -0700
committerJosh Blum <josh@joshknows.com>2010-04-26 12:19:00 -0700
commitf040d79d256bcdfcd931ab93e00b66f6af881a14 (patch)
tree0bb82963278a64caaa04b1c5360f0d3e48059d42 /host/lib/types.cpp
parent15befa19de40fb82f30d71bf21a767e7d8054ba1 (diff)
parent1217b8d67c3bef98195836fe10ab39576642b340 (diff)
downloaduhd-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.cpp29
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;
+}