Revision e033fc3d

b/host/lib/usrp/multi_usrp.cpp
65 65
    }
66 66
}
67 67

  
68
static meta_range_t make_overall_tune_range(
69
    const meta_range_t &fe_range,
70
    const meta_range_t &dsp_range,
71
    const double bw
72
){
73
    return meta_range_t(
74
        fe_range.start() + std::max(dsp_range.start(), -bw),
75
        fe_range.stop() + std::min(dsp_range.stop(), bw),
76
        dsp_range.step()
77
    );
78
}
79

  
68 80
/***********************************************************************
69 81
 * Gain helper functions
70 82
 **********************************************************************/
......
442 454
    }
443 455

  
444 456
    freq_range_t get_rx_freq_range(size_t chan){
445
        meta_range_t range = _tree->access<meta_range_t>(rx_rf_fe_root(chan) / "freq" / "range").get();
446
        meta_range_t dsp_range = _tree->access<meta_range_t>(rx_dsp_root(chan) / "freq" / "range").get();
447
        return meta_range_t(range.start() + dsp_range.start(), range.stop() + dsp_range.stop(), dsp_range.step());
457
        return make_overall_tune_range(
458
            _tree->access<meta_range_t>(rx_rf_fe_root(chan) / "freq" / "range").get(),
459
            _tree->access<meta_range_t>(rx_dsp_root(chan) / "freq" / "range").get(),
460
            this->get_rx_bandwidth(chan)
461
        );
448 462
    }
449 463

  
450 464
    void set_rx_gain(double gain, const std::string &name, size_t chan){
......
550 564
    }
551 565

  
552 566
    freq_range_t get_tx_freq_range(size_t chan){
553
        meta_range_t range = _tree->access<meta_range_t>(tx_rf_fe_root(chan) / "freq" / "range").get();
554
        meta_range_t dsp_range = _tree->access<meta_range_t>(tx_dsp_root(chan) / "freq" / "range").get();
555
        return meta_range_t(range.start() + dsp_range.start(), range.stop() + dsp_range.stop(), dsp_range.step());
567
        return make_overall_tune_range(
568
            _tree->access<meta_range_t>(tx_rf_fe_root(chan) / "freq" / "range").get(),
569
            _tree->access<meta_range_t>(tx_dsp_root(chan) / "freq" / "range").get(),
570
            this->get_tx_bandwidth(chan)
571
        );
556 572
    }
557 573

  
558 574
    void set_tx_gain(double gain, const std::string &name, size_t chan){

Also available in: Unified diff