summaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/usrp2
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2010-03-19 18:08:20 -0800
committerJosh Blum <josh@joshknows.com>2010-03-19 18:08:20 -0800
commit26ada5ee709fc4d7e195d19720b467c14368bc05 (patch)
treefed7199054d8ae3860fb11499fb199a69ef9336a /host/lib/usrp/usrp2
parent9c436f72cd065c172b04bcefcca71e80591059c6 (diff)
downloaduhd-26ada5ee709fc4d7e195d19720b467c14368bc05.tar.gz
uhd-26ada5ee709fc4d7e195d19720b467c14368bc05.tar.bz2
uhd-26ada5ee709fc4d7e195d19720b467c14368bc05.zip
added install path for dll, fixed idiotic msvc error where making a vector with proxies crashes the app, seems to be ok with the sptr fix, in other good news, discover usrps works in my vm for the usrp2
Diffstat (limited to 'host/lib/usrp/usrp2')
-rw-r--r--host/lib/usrp/usrp2/dboard_impl.cpp4
-rw-r--r--host/lib/usrp/usrp2/dsp_impl.cpp4
-rw-r--r--host/lib/usrp/usrp2/mboard_impl.cpp10
-rw-r--r--host/lib/usrp/usrp2/usrp2_impl.cpp2
-rw-r--r--host/lib/usrp/usrp2/usrp2_impl.hpp43
5 files changed, 32 insertions, 31 deletions
diff --git a/host/lib/usrp/usrp2/dboard_impl.cpp b/host/lib/usrp/usrp2/dboard_impl.cpp
index 60622ca47..66e02d469 100644
--- a/host/lib/usrp/usrp2/dboard_impl.cpp
+++ b/host/lib/usrp/usrp2/dboard_impl.cpp
@@ -45,11 +45,11 @@ void usrp2_impl::dboard_init(void){
);
//load dboards
- _rx_dboards[""] = wax_obj_proxy(
+ _rx_dboards[""] = wax_obj_proxy::make(
boost::bind(&usrp2_impl::rx_dboard_get, this, _1, _2),
boost::bind(&usrp2_impl::rx_dboard_set, this, _1, _2)
);
- _tx_dboards[""] = wax_obj_proxy(
+ _tx_dboards[""] = wax_obj_proxy::make(
boost::bind(&usrp2_impl::tx_dboard_get, this, _1, _2),
boost::bind(&usrp2_impl::tx_dboard_set, this, _1, _2)
);
diff --git a/host/lib/usrp/usrp2/dsp_impl.cpp b/host/lib/usrp/usrp2/dsp_impl.cpp
index 54ed45e41..34cce0afb 100644
--- a/host/lib/usrp/usrp2/dsp_impl.cpp
+++ b/host/lib/usrp/usrp2/dsp_impl.cpp
@@ -53,7 +53,7 @@ static boost::uint32_t calculate_iq_scale_word(boost::int16_t i, boost::int16_t
void usrp2_impl::init_ddc_config(void){
//create the ddc in the rx dsp dict
- _rx_dsps["ddc0"] = wax_obj_proxy(
+ _rx_dsps["ddc0"] = wax_obj_proxy::make(
boost::bind(&usrp2_impl::ddc_get, this, _1, _2),
boost::bind(&usrp2_impl::ddc_set, this, _1, _2)
);
@@ -201,7 +201,7 @@ void usrp2_impl::ddc_set(const wax::obj &key, const wax::obj &val){
**********************************************************************/
void usrp2_impl::init_duc_config(void){
//create the duc in the tx dsp dict
- _tx_dsps["duc0"] = wax_obj_proxy(
+ _tx_dsps["duc0"] = wax_obj_proxy::make(
boost::bind(&usrp2_impl::duc_get, this, _1, _2),
boost::bind(&usrp2_impl::duc_set, this, _1, _2)
);
diff --git a/host/lib/usrp/usrp2/mboard_impl.cpp b/host/lib/usrp/usrp2/mboard_impl.cpp
index 4b15c7f3e..4f63e6cc9 100644
--- a/host/lib/usrp/usrp2/mboard_impl.cpp
+++ b/host/lib/usrp/usrp2/mboard_impl.cpp
@@ -25,7 +25,7 @@ using namespace uhd;
* Helper Methods
**********************************************************************/
void usrp2_impl::mboard_init(void){
- _mboards[""] = wax_obj_proxy(
+ _mboards[""] = wax_obj_proxy::make(
boost::bind(&usrp2_impl::mboard_get, this, _1, _2),
boost::bind(&usrp2_impl::mboard_set, this, _1, _2)
);
@@ -137,7 +137,7 @@ void usrp2_impl::mboard_get(const wax::obj &key_, wax::obj &val){
case MBOARD_PROP_RX_DBOARD:
ASSERT_THROW(_rx_dboards.has_key(name));
- val = _rx_dboards[name].get_link();
+ val = _rx_dboards[name]->get_link();
return;
case MBOARD_PROP_RX_DBOARD_NAMES:
@@ -146,7 +146,7 @@ void usrp2_impl::mboard_get(const wax::obj &key_, wax::obj &val){
case MBOARD_PROP_TX_DBOARD:
ASSERT_THROW(_tx_dboards.has_key(name));
- val = _tx_dboards[name].get_link();
+ val = _tx_dboards[name]->get_link();
return;
case MBOARD_PROP_TX_DBOARD_NAMES:
@@ -159,7 +159,7 @@ void usrp2_impl::mboard_get(const wax::obj &key_, wax::obj &val){
case MBOARD_PROP_RX_DSP:
ASSERT_THROW(_rx_dsps.has_key(name));
- val = _rx_dsps[name].get_link();
+ val = _rx_dsps[name]->get_link();
return;
case MBOARD_PROP_RX_DSP_NAMES:
@@ -168,7 +168,7 @@ void usrp2_impl::mboard_get(const wax::obj &key_, wax::obj &val){
case MBOARD_PROP_TX_DSP:
ASSERT_THROW(_tx_dsps.has_key(name));
- val = _tx_dsps[name].get_link();
+ val = _tx_dsps[name]->get_link();
return;
case MBOARD_PROP_TX_DSP_NAMES:
diff --git a/host/lib/usrp/usrp2/usrp2_impl.cpp b/host/lib/usrp/usrp2/usrp2_impl.cpp
index 22b7e109f..bdf8cc55b 100644
--- a/host/lib/usrp/usrp2/usrp2_impl.cpp
+++ b/host/lib/usrp/usrp2/usrp2_impl.cpp
@@ -191,7 +191,7 @@ void usrp2_impl::get(const wax::obj &key_, wax::obj &val){
case DEVICE_PROP_MBOARD:
ASSERT_THROW(_mboards.has_key(name));
- val = _mboards[name].get_link();
+ val = _mboards[name]->get_link();
return;
case DEVICE_PROP_MBOARD_NAMES:
diff --git a/host/lib/usrp/usrp2/usrp2_impl.hpp b/host/lib/usrp/usrp2/usrp2_impl.hpp
index 765c523fe..59e23aba5 100644
--- a/host/lib/usrp/usrp2/usrp2_impl.hpp
+++ b/host/lib/usrp/usrp2/usrp2_impl.hpp
@@ -15,6 +15,9 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
+#ifndef INCLUDED_USRP2_IMPL_HPP
+#define INCLUDED_USRP2_IMPL_HPP
+
#include <uhd/usrp/usrp2.hpp>
#include <uhd/dict.hpp>
#include <uhd/props.hpp>
@@ -28,9 +31,6 @@
#include <uhd/usrp/dboard_manager.hpp>
#include "fw_common.h"
-#ifndef INCLUDED_USRP2_IMPL_HPP
-#define INCLUDED_USRP2_IMPL_HPP
-
class usrp2_impl; //dummy class declaration
/*!
@@ -50,20 +50,25 @@ class wax_obj_proxy : public wax::obj{
public:
typedef boost::function<void(const wax::obj &, wax::obj &)> get_t;
typedef boost::function<void(const wax::obj &, const wax::obj &)> set_t;
+ typedef boost::shared_ptr<wax_obj_proxy> sptr;
+
+ static sptr make(const get_t &get, const set_t &set){
+ return sptr(new wax_obj_proxy(get, set));
+ }
- wax_obj_proxy(void){
+ ~wax_obj_proxy(void){
/* NOP */
}
+private:
+ get_t _get;
+ set_t _set;
+
wax_obj_proxy(const get_t &get, const set_t &set){
_get = get;
_set = set;
};
- ~wax_obj_proxy(void){
- /* NOP */
- }
-
void get(const wax::obj &key, wax::obj &val){
return _get(key, val);
}
@@ -71,10 +76,6 @@ public:
void set(const wax::obj &key, const wax::obj &val){
return _set(key, val);
}
-
-private:
- get_t _get;
- set_t _set;
};
/*!
@@ -98,10 +99,6 @@ public:
~usrp2_impl(void);
- //properties interface
- void get(const wax::obj &, wax::obj &);
- void set(const wax::obj &, const wax::obj &);
-
//performs a control transaction
usrp2_ctrl_data_t ctrl_send_and_recv(const usrp2_ctrl_data_t &);
@@ -113,6 +110,10 @@ public:
size_t recv(const boost::asio::mutable_buffer &, uhd::rx_metadata_t &, const std::string &);
private:
+ //device properties interface
+ void get(const wax::obj &, wax::obj &);
+ void set(const wax::obj &, const wax::obj &);
+
//the raw io interface (samples are in the usrp2 native format)
void recv_raw(uhd::rx_metadata_t &);
uhd::dict<boost::uint32_t, size_t> _tx_stream_id_to_packet_seq;
@@ -159,18 +160,18 @@ private:
void mboard_init(void);
void mboard_get(const wax::obj &, wax::obj &);
void mboard_set(const wax::obj &, const wax::obj &);
- uhd::dict<std::string, wax_obj_proxy> _mboards;
+ uhd::dict<std::string, wax_obj_proxy::sptr> _mboards;
//properties interface for rx dboard
void rx_dboard_get(const wax::obj &, wax::obj &);
void rx_dboard_set(const wax::obj &, const wax::obj &);
- uhd::dict<std::string, wax_obj_proxy> _rx_dboards;
+ uhd::dict<std::string, wax_obj_proxy::sptr> _rx_dboards;
uhd::prop_names_t _rx_subdevs_in_use;
//properties interface for tx dboard
void tx_dboard_get(const wax::obj &, wax::obj &);
void tx_dboard_set(const wax::obj &, const wax::obj &);
- uhd::dict<std::string, wax_obj_proxy> _tx_dboards;
+ uhd::dict<std::string, wax_obj_proxy::sptr> _tx_dboards;
uhd::prop_names_t _tx_subdevs_in_use;
void update_mux_config(void);
@@ -193,12 +194,12 @@ private:
//properties interface for ddc
void ddc_get(const wax::obj &, wax::obj &);
void ddc_set(const wax::obj &, const wax::obj &);
- uhd::dict<std::string, wax_obj_proxy> _rx_dsps;
+ uhd::dict<std::string, wax_obj_proxy::sptr> _rx_dsps;
//properties interface for duc
void duc_get(const wax::obj &, wax::obj &);
void duc_set(const wax::obj &, const wax::obj &);
- uhd::dict<std::string, wax_obj_proxy> _tx_dsps;
+ uhd::dict<std::string, wax_obj_proxy::sptr> _tx_dsps;
};