aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/types.cpp
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2010-04-26 12:16:37 -0700
committerJosh Blum <josh@joshknows.com>2010-04-26 12:16:37 -0700
commit1217b8d67c3bef98195836fe10ab39576642b340 (patch)
tree97c8e964b38a27db66fcb2f68a646e483b3de436 /host/lib/types.cpp
parent0c609b96574095affe12d9aaa53bead98faba4f3 (diff)
downloaduhd-1217b8d67c3bef98195836fe10ab39576642b340.tar.gz
uhd-1217b8d67c3bef98195836fe10ab39576642b340.tar.bz2
uhd-1217b8d67c3bef98195836fe10ab39576642b340.zip
Got eeprom read/write dboard ids working.
Moved named prop implementation into cpp, and made named prop a struct (tuples are trouble).
Diffstat (limited to 'host/lib/types.cpp')
-rw-r--r--host/lib/types.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/host/lib/types.cpp b/host/lib/types.cpp
index a1b9b21a9..08e41b62f 100644
--- a/host/lib/types.cpp
+++ b/host/lib/types.cpp
@@ -32,6 +32,7 @@
#include <boost/format.hpp>
#include <boost/cstdint.hpp>
#include <boost/assign/list_of.hpp>
+#include <boost/thread.hpp>
#include <stdexcept>
#include <complex>
@@ -257,10 +258,11 @@ void i2c_iface::write_eeprom(
boost::uint8_t offset,
const byte_vector_t &bytes
){
- BOOST_FOREACH(boost::uint8_t byte, 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)(byte);
+ 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
}
}
@@ -272,7 +274,7 @@ byte_vector_t i2c_iface::read_eeprom(
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));
+ this->write_i2c(addr, byte_vector_t(1, offset+i));
bytes.push_back(this->read_i2c(addr, 1).at(0));
}
return bytes;