diff options
Diffstat (limited to 'host/lib')
| -rw-r--r-- | host/lib/types/sensors.cpp | 17 | ||||
| -rw-r--r-- | host/lib/usrp/dboard/db_basic_and_lf.cpp | 8 | ||||
| -rw-r--r-- | host/lib/usrp/dboard/db_dbsrx.cpp | 10 | ||||
| -rw-r--r-- | host/lib/usrp/dboard/db_dbsrx2.cpp | 10 | ||||
| -rw-r--r-- | host/lib/usrp/dboard/db_rfx.cpp | 19 | ||||
| -rw-r--r-- | host/lib/usrp/dboard/db_tvrx.cpp | 5 | ||||
| -rw-r--r-- | host/lib/usrp/dboard/db_unknown.cpp | 8 | ||||
| -rw-r--r-- | host/lib/usrp/dboard/db_wbx.cpp | 19 | ||||
| -rw-r--r-- | host/lib/usrp/dboard/db_xcvr2450.cpp | 25 | ||||
| -rw-r--r-- | host/lib/usrp/multi_usrp.cpp | 36 | 
10 files changed, 105 insertions, 52 deletions
| diff --git a/host/lib/types/sensors.cpp b/host/lib/types/sensors.cpp index 2bff136a4..5f7115d70 100644 --- a/host/lib/types/sensors.cpp +++ b/host/lib/types/sensors.cpp @@ -17,6 +17,7 @@  #include <uhd/types/sensors.hpp>  #include <uhd/utils/exception.hpp> +#include <boost/lexical_cast.hpp>  #include <boost/format.hpp>  using namespace uhd; @@ -35,7 +36,7 @@ sensor_value_t::sensor_value_t(  sensor_value_t::sensor_value_t(      const std::string &name, -    int_type value, +    signed value,      const std::string &unit,      const std::string &formatter  ): @@ -47,7 +48,7 @@ sensor_value_t::sensor_value_t(  sensor_value_t::sensor_value_t(      const std::string &name, -    real_type value, +    double value,      const std::string &unit,      const std::string &formatter  ): @@ -79,3 +80,15 @@ std::string sensor_value_t::to_pp_string(void) const{      }      UHD_THROW_INVALID_CODE_PATH();  } + +bool sensor_value_t::to_bool(void) const{ +    return value == "true"; +} + +signed sensor_value_t::to_int(void) const{ +    return boost::lexical_cast<signed>(value); +} + +double sensor_value_t::to_real(void) const{ +    return boost::lexical_cast<double>(value); +} diff --git a/host/lib/usrp/dboard/db_basic_and_lf.cpp b/host/lib/usrp/dboard/db_basic_and_lf.cpp index b311576d2..b319289db 100644 --- a/host/lib/usrp/dboard/db_basic_and_lf.cpp +++ b/host/lib/usrp/dboard/db_basic_and_lf.cpp @@ -173,10 +173,6 @@ void basic_rx::rx_get(const wax::obj &key_, wax::obj &val){          val = false;          return; -    case SUBDEV_PROP_LO_LOCKED: -        val = true; //there is no LO, so it must be true! -        return; -      case SUBDEV_PROP_BANDWIDTH:          val = subdev_bandwidth_scalar[get_subdev_name()]*_max_freq;          return; @@ -284,10 +280,6 @@ void basic_tx::tx_get(const wax::obj &key_, wax::obj &val){          val = false;          return; -    case SUBDEV_PROP_LO_LOCKED: -        val = true; //there is no LO, so it must be true! -        return; -      case SUBDEV_PROP_BANDWIDTH:          val = subdev_bandwidth_scalar[get_subdev_name()]*_max_freq;          return; diff --git a/host/lib/usrp/dboard/db_dbsrx.cpp b/host/lib/usrp/dboard/db_dbsrx.cpp index 3ea9cea80..98d9479fc 100644 --- a/host/lib/usrp/dboard/db_dbsrx.cpp +++ b/host/lib/usrp/dboard/db_dbsrx.cpp @@ -25,6 +25,7 @@  #include <uhd/utils/algorithm.hpp>  #include <uhd/utils/warning.hpp>  #include <uhd/types/ranges.hpp> +#include <uhd/types/sensors.hpp>  #include <uhd/types/dict.hpp>  #include <uhd/usrp/subdev_props.hpp>  #include <uhd/usrp/dboard_base.hpp> @@ -561,8 +562,13 @@ void dbsrx::rx_get(const wax::obj &key_, wax::obj &val){          val = false;          return; -    case SUBDEV_PROP_LO_LOCKED: -        val = this->get_locked(); +    case SUBDEV_PROP_SENSOR: +        UHD_ASSERT_THROW(key.name == "lo_locked"); +        val = sensor_value_t("LO", this->get_locked(), "locked", "unlocked"); +        return; + +    case SUBDEV_PROP_SENSOR_NAMES: +        val = prop_names_t(1, "lo_locked");          return;      case SUBDEV_PROP_BANDWIDTH: diff --git a/host/lib/usrp/dboard/db_dbsrx2.cpp b/host/lib/usrp/dboard/db_dbsrx2.cpp index defb70ff5..f4b797995 100644 --- a/host/lib/usrp/dboard/db_dbsrx2.cpp +++ b/host/lib/usrp/dboard/db_dbsrx2.cpp @@ -22,6 +22,7 @@  #include <uhd/utils/assert.hpp>  #include <uhd/utils/algorithm.hpp>  #include <uhd/types/ranges.hpp> +#include <uhd/types/sensors.hpp>  #include <uhd/types/dict.hpp>  #include <uhd/usrp/subdev_props.hpp>  #include <uhd/usrp/dboard_base.hpp> @@ -400,8 +401,13 @@ void dbsrx2::rx_get(const wax::obj &key_, wax::obj &val){          val = false;          return; -    case SUBDEV_PROP_LO_LOCKED: -        val = this->get_locked(); +    case SUBDEV_PROP_SENSOR: +        UHD_ASSERT_THROW(key.name == "lo_locked"); +        val = sensor_value_t("LO", this->get_locked(), "locked", "unlocked"); +        return; + +    case SUBDEV_PROP_SENSOR_NAMES: +        val = prop_names_t(1, "lo_locked");          return;      case SUBDEV_PROP_BANDWIDTH: diff --git a/host/lib/usrp/dboard/db_rfx.cpp b/host/lib/usrp/dboard/db_rfx.cpp index 2c672ded8..3e3cf00f2 100644 --- a/host/lib/usrp/dboard/db_rfx.cpp +++ b/host/lib/usrp/dboard/db_rfx.cpp @@ -36,6 +36,7 @@  #include <uhd/types/dict.hpp>  #include <uhd/usrp/subdev_props.hpp>  #include <uhd/types/ranges.hpp> +#include <uhd/types/sensors.hpp>  #include <uhd/utils/assert.hpp>  #include <uhd/utils/static.hpp>  #include <uhd/utils/algorithm.hpp> @@ -449,8 +450,13 @@ void rfx_xcvr::rx_get(const wax::obj &key_, wax::obj &val){          val = false;          return; -    case SUBDEV_PROP_LO_LOCKED: -        val = this->get_locked(dboard_iface::UNIT_RX); +    case SUBDEV_PROP_SENSOR: +        UHD_ASSERT_THROW(key.name == "lo_locked"); +        val = sensor_value_t("LO", this->get_locked(dboard_iface::UNIT_RX), "locked", "unlocked"); +        return; + +    case SUBDEV_PROP_SENSOR_NAMES: +        val = prop_names_t(1, "lo_locked");          return;      case SUBDEV_PROP_BANDWIDTH: @@ -546,8 +552,13 @@ void rfx_xcvr::tx_get(const wax::obj &key_, wax::obj &val){          val = true;          return; -    case SUBDEV_PROP_LO_LOCKED: -        val = this->get_locked(dboard_iface::UNIT_TX); +    case SUBDEV_PROP_SENSOR: +        UHD_ASSERT_THROW(key.name == "lo_locked"); +        val = sensor_value_t("LO", this->get_locked(dboard_iface::UNIT_TX), "locked", "unlocked"); +        return; + +    case SUBDEV_PROP_SENSOR_NAMES: +        val = prop_names_t(1, "lo_locked");          return;      case SUBDEV_PROP_BANDWIDTH: diff --git a/host/lib/usrp/dboard/db_tvrx.cpp b/host/lib/usrp/dboard/db_tvrx.cpp index a9ce38000..578999432 100644 --- a/host/lib/usrp/dboard/db_tvrx.cpp +++ b/host/lib/usrp/dboard/db_tvrx.cpp @@ -32,6 +32,7 @@  #include <uhd/utils/algorithm.hpp>  #include <uhd/utils/warning.hpp>  #include <uhd/types/ranges.hpp> +#include <uhd/types/sensors.hpp>  #include <uhd/types/dict.hpp>  #include <uhd/usrp/subdev_props.hpp>  #include <uhd/usrp/dboard_base.hpp> @@ -463,10 +464,6 @@ void tvrx::rx_get(const wax::obj &key_, wax::obj &val){          val = false;          return; -    case SUBDEV_PROP_LO_LOCKED: -        val = true; -        return; -      case SUBDEV_PROP_BANDWIDTH:          val = 6.0e6;          return; diff --git a/host/lib/usrp/dboard/db_unknown.cpp b/host/lib/usrp/dboard/db_unknown.cpp index d91d58409..f0a4c000e 100644 --- a/host/lib/usrp/dboard/db_unknown.cpp +++ b/host/lib/usrp/dboard/db_unknown.cpp @@ -154,10 +154,6 @@ void unknown_rx::rx_get(const wax::obj &key_, wax::obj &val){          val = false;          return; -    case SUBDEV_PROP_LO_LOCKED: -        val = true; //there is no LO, so it must be true! -        return; -      case SUBDEV_PROP_BANDWIDTH:          val = 0.0;          return; @@ -256,10 +252,6 @@ void unknown_tx::tx_get(const wax::obj &key_, wax::obj &val){          val = false;          return; -    case SUBDEV_PROP_LO_LOCKED: -        val = true; //there is no LO, so it must be true! -        return; -      case SUBDEV_PROP_BANDWIDTH:          val = 0.0;          return; diff --git a/host/lib/usrp/dboard/db_wbx.cpp b/host/lib/usrp/dboard/db_wbx.cpp index 135997789..0bc2d0ca1 100644 --- a/host/lib/usrp/dboard/db_wbx.cpp +++ b/host/lib/usrp/dboard/db_wbx.cpp @@ -68,6 +68,7 @@  #include <uhd/types/dict.hpp>  #include <uhd/usrp/subdev_props.hpp>  #include <uhd/types/ranges.hpp> +#include <uhd/types/sensors.hpp>  #include <uhd/utils/assert.hpp>  #include <uhd/utils/static.hpp>  #include <uhd/utils/algorithm.hpp> @@ -521,8 +522,13 @@ void wbx_xcvr::rx_get(const wax::obj &key_, wax::obj &val){          val = false;          return; -    case SUBDEV_PROP_LO_LOCKED: -        val = this->get_locked(dboard_iface::UNIT_RX); +    case SUBDEV_PROP_SENSOR: +        UHD_ASSERT_THROW(key.name == "lo_locked"); +        val = sensor_value_t("LO", this->get_locked(dboard_iface::UNIT_RX), "locked", "unlocked"); +        return; + +    case SUBDEV_PROP_SENSOR_NAMES: +        val = prop_names_t(1, "lo_locked");          return;      case SUBDEV_PROP_BANDWIDTH: @@ -622,8 +628,13 @@ void wbx_xcvr::tx_get(const wax::obj &key_, wax::obj &val){          val = false;          return; -    case SUBDEV_PROP_LO_LOCKED: -        val = this->get_locked(dboard_iface::UNIT_TX); +    case SUBDEV_PROP_SENSOR: +        UHD_ASSERT_THROW(key.name == "lo_locked"); +        val = sensor_value_t("LO", this->get_locked(dboard_iface::UNIT_TX), "locked", "unlocked"); +        return; + +    case SUBDEV_PROP_SENSOR_NAMES: +        val = prop_names_t(1, "lo_locked");          return;      case SUBDEV_PROP_BANDWIDTH: diff --git a/host/lib/usrp/dboard/db_xcvr2450.cpp b/host/lib/usrp/dboard/db_xcvr2450.cpp index 6fb5a26a8..f4f74eb86 100644 --- a/host/lib/usrp/dboard/db_xcvr2450.cpp +++ b/host/lib/usrp/dboard/db_xcvr2450.cpp @@ -53,6 +53,7 @@  #include <uhd/utils/algorithm.hpp>  #include <uhd/utils/warning.hpp>  #include <uhd/types/ranges.hpp> +#include <uhd/types/sensors.hpp>  #include <uhd/types/dict.hpp>  #include <uhd/usrp/subdev_props.hpp>  #include <uhd/usrp/dboard_base.hpp> @@ -616,12 +617,19 @@ void xcvr2450::rx_get(const wax::obj &key_, wax::obj &val){          val = false;          return; -    case SUBDEV_PROP_LO_LOCKED: -        val = this->get_locked(); +    case SUBDEV_PROP_SENSOR: +        if (key.name == "lo_locked") +            val = sensor_value_t("LO", this->get_locked(), "locked", "unlocked"); +        else if (key.name == "rssi") +            val = sensor_value_t("RSSI", this->get_rssi(), "dB"); +        else +            UHD_THROW_INVALID_CODE_PATH();          return; -    case SUBDEV_PROP_RSSI: -        val = this->get_rssi(); +    case SUBDEV_PROP_SENSOR_NAMES:{ +            prop_names_t names = list_of("lo_locked")("rssi"); +            val = names; +        }          return;      case SUBDEV_PROP_BANDWIDTH: @@ -719,8 +727,13 @@ void xcvr2450::tx_get(const wax::obj &key_, wax::obj &val){          val = false;          return; -    case SUBDEV_PROP_LO_LOCKED: -        val = this->get_locked(); +    case SUBDEV_PROP_SENSOR: +        UHD_ASSERT_THROW(key.name == "lo_locked"); +        val = sensor_value_t("LO", this->get_locked(), "locked", "unlocked"); +        return; + +    case SUBDEV_PROP_SENSOR_NAMES: +        val = prop_names_t(1, "lo_locked");          return;      case SUBDEV_PROP_BANDWIDTH: diff --git a/host/lib/usrp/multi_usrp.cpp b/host/lib/usrp/multi_usrp.cpp index 9f001595d..5130d3ae8 100644 --- a/host/lib/usrp/multi_usrp.cpp +++ b/host/lib/usrp/multi_usrp.cpp @@ -212,6 +212,14 @@ public:          return (*_dev)[DEVICE_PROP_MBOARD_NAMES].as<prop_names_t>().size();      } +    sensor_value_t get_mboard_sensor(const std::string &name, size_t mboard){ +        return _mboard(mboard)[named_prop_t(MBOARD_PROP_SENSOR, name)].as<sensor_value_t>(); +    } + +    std::vector<std::string> get_mboard_sensor_names(size_t mboard){ +        return _mboard(mboard)[MBOARD_PROP_SENSOR_NAMES].as<prop_names_t>(); +    } +      /*******************************************************************       * RX methods       ******************************************************************/ @@ -294,10 +302,6 @@ public:          return _rx_subdev(chan)[SUBDEV_PROP_ANTENNA_NAMES].as<prop_names_t>();      } -    bool get_rx_lo_locked(size_t chan){ -        return _rx_subdev(chan)[SUBDEV_PROP_LO_LOCKED].as<bool>(); -    } -      void set_rx_bandwidth(double bandwidth, size_t chan){          _rx_subdev(chan)[SUBDEV_PROP_BANDWIDTH] = bandwidth;      } @@ -306,14 +310,18 @@ public:          return _rx_subdev(chan)[SUBDEV_PROP_BANDWIDTH].as<double>();      } -    double read_rssi(size_t chan){ -        return _rx_subdev(chan)[SUBDEV_PROP_RSSI].as<double>(); -    } -      dboard_iface::sptr get_rx_dboard_iface(size_t chan){          return _rx_dboard(chan)[DBOARD_PROP_DBOARD_IFACE].as<dboard_iface::sptr>();      } +    sensor_value_t get_rx_sensor(const std::string &name, size_t chan){ +        return _rx_subdev(chan)[named_prop_t(SUBDEV_PROP_SENSOR, name)].as<sensor_value_t>(); +    } + +    std::vector<std::string> get_rx_sensor_names(size_t chan){ +        return _rx_subdev(chan)[SUBDEV_PROP_SENSOR_NAMES].as<prop_names_t>(); +    } +      /*******************************************************************       * TX methods       ******************************************************************/ @@ -396,10 +404,6 @@ public:          return _tx_subdev(chan)[SUBDEV_PROP_ANTENNA_NAMES].as<prop_names_t>();      } -    bool get_tx_lo_locked(size_t chan){ -        return _tx_subdev(chan)[SUBDEV_PROP_LO_LOCKED].as<bool>(); -    } -      void set_tx_bandwidth(double bandwidth, size_t chan){          _tx_subdev(chan)[SUBDEV_PROP_BANDWIDTH] = bandwidth;      } @@ -412,6 +416,14 @@ public:          return _tx_dboard(chan)[DBOARD_PROP_DBOARD_IFACE].as<dboard_iface::sptr>();      } +    sensor_value_t get_tx_sensor(const std::string &name, size_t chan){ +        return _tx_subdev(chan)[named_prop_t(SUBDEV_PROP_SENSOR, name)].as<sensor_value_t>(); +    } + +    std::vector<std::string> get_tx_sensor_names(size_t chan){ +        return _tx_subdev(chan)[SUBDEV_PROP_SENSOR_NAMES].as<prop_names_t>(); +    } +  private:      device::sptr _dev; | 
