summaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/dboard
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2010-04-26 16:54:17 -0700
committerJosh Blum <josh@joshknows.com>2010-04-26 16:54:17 -0700
commit06e1859d47c9b5be19ae680ba463a8fa72df9ebd (patch)
treee839d8d394d19fd3a4a94e173313cd5300b9ff18 /host/lib/usrp/dboard
parent6f1bdcb58608e3a7c2625841e3a8f1c6297bb544 (diff)
downloaduhd-06e1859d47c9b5be19ae680ba463a8fa72df9ebd.tar.gz
uhd-06e1859d47c9b5be19ae680ba463a8fa72df9ebd.tar.bz2
uhd-06e1859d47c9b5be19ae680ba463a8fa72df9ebd.zip
Added RSSI readback to XCVR2450.
also fixed spi readback typo in u2 iface
Diffstat (limited to 'host/lib/usrp/dboard')
-rw-r--r--host/lib/usrp/dboard/db_xcvr2450.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/host/lib/usrp/dboard/db_xcvr2450.cpp b/host/lib/usrp/dboard/db_xcvr2450.cpp
index f1510da10..efe7687c2 100644
--- a/host/lib/usrp/dboard/db_xcvr2450.cpp
+++ b/host/lib/usrp/dboard/db_xcvr2450.cpp
@@ -134,6 +134,19 @@ private:
bool get_locked(void){
return (this->get_iface()->read_gpio(dboard_iface::UNIT_RX) & LOCKDET_RXIO) != 0;
}
+
+ /*!
+ * Read the RSSI from the aux adc
+ * \return the rssi in dB
+ */
+ float get_rssi(void){
+ //constants for the rssi calculation
+ static const float min_v = float(0.5), max_v = float(2.5);
+ static const float rssi_dyn_range = 60;
+ //calculate the rssi from the voltage
+ float voltage = this->get_iface()->read_aux_adc(dboard_iface::UNIT_RX, 1);
+ return rssi_dyn_range*(voltage - min_v)/(max_v - min_v);
+ }
};
/***********************************************************************
@@ -488,6 +501,10 @@ void xcvr2450::rx_get(const wax::obj &key_, wax::obj &val){
val = this->get_locked();
return;
+ case SUBDEV_PROP_RSSI:
+ val = this->get_rssi();
+ return;
+
default: UHD_THROW_PROP_GET_ERROR();
}
}