aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/usrp2/usrp2_impl.cpp
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2011-05-01 15:42:32 -0700
committerJosh Blum <josh@joshknows.com>2011-05-01 15:42:32 -0700
commite75919bc9e1cb1b5f8f69b5a5aabed9b3a1a53d9 (patch)
tree861b82a27b20e715aa81138baf26f4acd54f9895 /host/lib/usrp/usrp2/usrp2_impl.cpp
parent11e856ebca352af1b0444aec6d57ea61c0b48037 (diff)
downloaduhd-e75919bc9e1cb1b5f8f69b5a5aabed9b3a1a53d9.tar.gz
uhd-e75919bc9e1cb1b5f8f69b5a5aabed9b3a1a53d9.tar.bz2
uhd-e75919bc9e1cb1b5f8f69b5a5aabed9b3a1a53d9.zip
usrp2: added the concept of device locking to usrp2/nseries devices
Each iface instance can lock itself to a particular device. When the device is locked, it cannot be discovered through find. Locking works by having a lock thread periodically update a register in the firmware that says when the device was last locked. The find routine can determine if a device is locked by checking the difference between the current time and this register.
Diffstat (limited to 'host/lib/usrp/usrp2/usrp2_impl.cpp')
-rw-r--r--host/lib/usrp/usrp2/usrp2_impl.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/host/lib/usrp/usrp2/usrp2_impl.cpp b/host/lib/usrp/usrp2/usrp2_impl.cpp
index 48443bba4..2d1f901d7 100644
--- a/host/lib/usrp/usrp2/usrp2_impl.cpp
+++ b/host/lib/usrp/usrp2/usrp2_impl.cpp
@@ -115,9 +115,11 @@ static device_addrs_t usrp2_find(const device_addr_t &hint_){
//Attempt to read the name from the EEPROM and perform filtering.
//This operation can throw due to compatibility mismatch.
try{
- mboard_eeprom_t mb_eeprom = usrp2_iface::make(udp_simple::make_connected(
- new_addr["addr"], boost::lexical_cast<std::string>(USRP2_UDP_CTRL_PORT)
- ))->mb_eeprom;
+ usrp2_iface::sptr iface = usrp2_iface::make(udp_simple::make_connected(
+ new_addr["addr"], BOOST_STRINGIZE(USRP2_UDP_CTRL_PORT)
+ ));
+ if (iface->is_device_locked()) continue; //ignore locked devices
+ mboard_eeprom_t mb_eeprom = iface->mb_eeprom;
new_addr["name"] = mb_eeprom["name"];
new_addr["serial"] = mb_eeprom["serial"];
}