aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/b200/b200_impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib/usrp/b200/b200_impl.cpp')
-rw-r--r--host/lib/usrp/b200/b200_impl.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/host/lib/usrp/b200/b200_impl.cpp b/host/lib/usrp/b200/b200_impl.cpp
index ab437af6b..a7f9b11bd 100644
--- a/host/lib/usrp/b200/b200_impl.cpp
+++ b/host/lib/usrp/b200/b200_impl.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2012-2013 Ettus Research LLC
+// Copyright 2012-2014 Ettus Research LLC
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -32,6 +32,7 @@
#include <boost/functional/hash.hpp>
#include <cstdio>
#include <ctime>
+#include <cmath>
using namespace uhd;
using namespace uhd::usrp;
@@ -53,9 +54,9 @@ static device_addrs_t b200_find(const device_addr_t &hint)
//return an empty list of addresses when type is set to non-b200
if (hint.has_key("type") and hint["type"] != "b200") return b200_addrs;
- //Return an empty list of addresses when an address is specified,
- //since an address is intended for a different, non-USB, device.
- if (hint.has_key("addr")) return b200_addrs;
+ //Return an empty list of addresses when an address or resource is specified,
+ //since an address and resource is intended for a different, non-USB, device.
+ if (hint.has_key("addr") || hint.has_key("resource")) return b200_addrs;
unsigned int vid, pid;
@@ -332,7 +333,7 @@ b200_impl::b200_impl(const device_addr_t &device_addr)
data_xport_args // param hints
);
while (_data_transport->get_recv_buff(0.0)){} //flush ctrl xport
- _demux.reset(new recv_packet_demuxer_3000(_data_transport));
+ _demux = recv_packet_demuxer_3000::make(_data_transport);
////////////////////////////////////////////////////////////////////
// Init codec - turns on clocks
@@ -373,12 +374,15 @@ b200_impl::b200_impl(const device_addr_t &device_addr)
////////////////////////////////////////////////////////////////////
// create frontend mapping
////////////////////////////////////////////////////////////////////
+ std::vector<size_t> default_map(2, 0); default_map[1] = 1; // Set this to A->0 B->1 even if there's only A
+ _tree->create<std::vector<size_t> >(mb_path / "rx_chan_dsp_mapping").set(default_map);
+ _tree->create<std::vector<size_t> >(mb_path / "tx_chan_dsp_mapping").set(default_map);
_tree->create<subdev_spec_t>(mb_path / "rx_subdev_spec")
.set(subdev_spec_t())
- .subscribe(boost::bind(&b200_impl::update_rx_subdev_spec, this, _1));
+ .subscribe(boost::bind(&b200_impl::update_subdev_spec, this, "rx", _1));
_tree->create<subdev_spec_t>(mb_path / "tx_subdev_spec")
.set(subdev_spec_t())
- .subscribe(boost::bind(&b200_impl::update_tx_subdev_spec, this, _1));
+ .subscribe(boost::bind(&b200_impl::update_subdev_spec, this, "tx", _1));
////////////////////////////////////////////////////////////////////
// setup radio control
@@ -510,7 +514,7 @@ void b200_impl::setup_radio(const size_t dspno)
// create rx dsp control objects
////////////////////////////////////////////////////////////////////
perif.framer = rx_vita_core_3000::make(perif.ctrl, TOREG(SR_RX_CTRL));
- perif.ddc = rx_dsp_core_3000::make(perif.ctrl, TOREG(SR_RX_DSP));
+ perif.ddc = rx_dsp_core_3000::make(perif.ctrl, TOREG(SR_RX_DSP), true /*is_b200?*/);
perif.ddc->set_link_rate(10e9/8); //whatever
_tree->access<double>(mb_path / "tick_rate")
.subscribe(boost::bind(&rx_vita_core_3000::set_tick_rate, perif.framer, _1))