From 06e1859d47c9b5be19ae680ba463a8fa72df9ebd Mon Sep 17 00:00:00 2001
From: Josh Blum <josh@joshknows.com>
Date: Mon, 26 Apr 2010 16:54:17 -0700
Subject: Added RSSI readback to XCVR2450.

also fixed spi readback typo in u2 iface
---
 host/lib/usrp/dboard/db_xcvr2450.cpp | 17 +++++++++++++++++
 host/lib/usrp/usrp2/dboard_iface.cpp |  6 ------
 host/lib/usrp/usrp2/usrp2_iface.cpp  |  2 +-
 3 files changed, 18 insertions(+), 7 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();
     }
 }
diff --git a/host/lib/usrp/usrp2/dboard_iface.cpp b/host/lib/usrp/usrp2/dboard_iface.cpp
index 9503c329b..74d80163c 100644
--- a/host/lib/usrp/usrp2/dboard_iface.cpp
+++ b/host/lib/usrp/usrp2/dboard_iface.cpp
@@ -275,10 +275,4 @@ float usrp2_dboard_iface::read_aux_adc(unit_t unit, int which){
 
     //convert to voltage and return
     return float(3.3*ad7922_regs.result/4095);
-
-
-
-
-
-
 }
diff --git a/host/lib/usrp/usrp2/usrp2_iface.cpp b/host/lib/usrp/usrp2/usrp2_iface.cpp
index 5bca2c95b..e43b9678e 100644
--- a/host/lib/usrp/usrp2/usrp2_iface.cpp
+++ b/host/lib/usrp/usrp2/usrp2_iface.cpp
@@ -88,7 +88,7 @@ public:
         usrp2_ctrl_data_t in_data = this->ctrl_send_and_recv(out_data);
         UHD_ASSERT_THROW(htonl(in_data.id) == USRP2_CTRL_ID_OMG_TRANSACTED_SPI_DUDE);
 
-        return ntohl(out_data.data.spi_args.data);
+        return ntohl(in_data.data.spi_args.data);
     }
 
 /***********************************************************************
-- 
cgit v1.2.3