aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/dboard
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib/usrp/dboard')
-rw-r--r--host/lib/usrp/dboard/zbx/zbx_dboard_init.cpp14
-rw-r--r--host/lib/usrp/dboard/zbx/zbx_expert.cpp9
2 files changed, 18 insertions, 5 deletions
diff --git a/host/lib/usrp/dboard/zbx/zbx_dboard_init.cpp b/host/lib/usrp/dboard/zbx/zbx_dboard_init.cpp
index 6871080ff..18fb9bbe1 100644
--- a/host/lib/usrp/dboard/zbx/zbx_dboard_init.cpp
+++ b/host/lib/usrp/dboard/zbx/zbx_dboard_init.cpp
@@ -66,6 +66,13 @@ std::ostream& operator<<(
}
}
+std::ostream& operator<<(
+ std::ostream& os, const std::vector<::uhd::usrp::zbx::tune_map_item_t>& tune_map)
+{
+ os << "Tune map with " << tune_map.size() << " entries";
+ return os;
+}
+
void zbx_dboard_impl::_init_cpld()
{
// CPLD
@@ -573,6 +580,13 @@ void zbx_dboard_impl::_init_lo_prop_tree(uhd::property_tree::sptr subtree,
const size_t chan_idx,
const fs_path fe_path)
{
+ // Tuning table
+ expert_factory::add_prop_node<std::vector<tune_map_item_t>>(expert,
+ subtree,
+ fe_path / "tune_table",
+ trx == RX_DIRECTION ? rx_tune_map : tx_tune_map,
+ AUTO_RESOLVE_ON_WRITE);
+
// Analog LO Specific
for (const std::string lo : {ZBX_LO1, ZBX_LO2}) {
expert_factory::add_prop_node<zbx_lo_source_t>(expert,
diff --git a/host/lib/usrp/dboard/zbx/zbx_expert.cpp b/host/lib/usrp/dboard/zbx/zbx_expert.cpp
index ae39814ff..02b4873d9 100644
--- a/host/lib/usrp/dboard/zbx/zbx_expert.cpp
+++ b/host/lib/usrp/dboard/zbx/zbx_expert.cpp
@@ -28,11 +28,10 @@ bool _is_band_highband(const tune_map_item_t tune_setting)
return tune_setting.rf_fir == 0;
}
-tune_map_item_t _get_tune_settings(const double freq, const uhd::direction_t trx)
+tune_map_item_t _get_tune_settings(const double freq, const std::vector<tune_map_item_t>& tune_map)
{
- auto tune_setting = trx == RX_DIRECTION ? rx_tune_map.begin() : tx_tune_map.begin();
-
- auto tune_settings_end = trx == RX_DIRECTION ? rx_tune_map.end() : tx_tune_map.end();
+ auto tune_setting = tune_map.begin();
+ auto tune_settings_end = tune_map.end();
for (; tune_setting != tune_settings_end; ++tune_setting) {
if (tune_setting->max_band_freq >= freq) {
@@ -147,7 +146,7 @@ void zbx_scheduling_expert::resolve()
void zbx_freq_fe_expert::resolve()
{
const double tune_freq = ZBX_FREQ_RANGE.clip(_desired_frequency);
- _tune_settings = _get_tune_settings(tune_freq, _trx);
+ _tune_settings = _get_tune_settings(tune_freq, _tune_table.get());
// Set mixer values so the backend expert knows how to calculate final frequency
_mixer1_m = _tune_settings.mix1_m;