diff options
Diffstat (limited to 'gr-usrp2')
-rw-r--r-- | gr-usrp2/src/usrp2.i | 13 | ||||
-rw-r--r-- | gr-usrp2/src/usrp2_sink_base.cc | 6 | ||||
-rw-r--r-- | gr-usrp2/src/usrp2_sink_base.h | 5 |
3 files changed, 23 insertions, 1 deletions
diff --git a/gr-usrp2/src/usrp2.i b/gr-usrp2/src/usrp2.i index e85de2082..28944e676 100644 --- a/gr-usrp2/src/usrp2.i +++ b/gr-usrp2/src/usrp2.i @@ -137,6 +137,8 @@ public: bool set_interp(int interp_factor); bool set_scale_iq(int scale_i, int scale_q); int interp(); + %rename(_real_default_tx_scale_iq) default_scale_iq; + void default_scale_iq(int interp, int *scale_i, int *scale_q); %rename(_real_dac_rate) dac_rate; bool dac_rate(long *rate); double gain_min(); @@ -257,7 +259,7 @@ def __freq_range(self): self.freq_max()] def __daughterboard_id(self): - dbid = make_int_ptr(); + dbid = make_int_ptr() r = self._real_daughterboard_id(dbid) if r: result = deref_int_ptr(dbid) @@ -266,6 +268,12 @@ def __daughterboard_id(self): free_int_ptr(dbid) return result +def __default_tx_scale_iq(self, interp): + scale_i = make_int_ptr() + scale_q = make_int_ptr() + self._real_default_tx_scale_iq(interp, scale_i, scale_q) + return (deref_int_ptr(scale_i), deref_int_ptr(scale_q)) + usrp2_source_32fc_sptr.set_center_freq = __set_center_freq usrp2_source_16sc_sptr.set_center_freq = __set_center_freq usrp2_sink_32fc_sptr.set_center_freq = __set_center_freq @@ -296,4 +304,7 @@ usrp2_source_16sc_sptr.daughterboard_id = __daughterboard_id usrp2_sink_32fc_sptr.daughterboard_id = __daughterboard_id usrp2_sink_16sc_sptr.daughterboard_id = __daughterboard_id +usrp2_sink_32fc_sptr.default_scale_iq = __default_tx_scale_iq +usrp2_sink_16sc_sptr.default_scale_iq = __default_tx_scale_iq + %} diff --git a/gr-usrp2/src/usrp2_sink_base.cc b/gr-usrp2/src/usrp2_sink_base.cc index c04914eed..579aaaa4c 100644 --- a/gr-usrp2/src/usrp2_sink_base.cc +++ b/gr-usrp2/src/usrp2_sink_base.cc @@ -64,6 +64,12 @@ usrp2_sink_base::set_interp(int interp_factor) return d_u2->set_tx_interp(interp_factor); } +void +usrp2_sink_base::default_scale_iq(int interp_factor, int *scale_i, int *scale_q) +{ + return d_u2->default_tx_scale_iq(interp_factor, scale_i, scale_q); +} + bool usrp2_sink_base::set_scale_iq(int scale_i, int scale_q) { diff --git a/gr-usrp2/src/usrp2_sink_base.h b/gr-usrp2/src/usrp2_sink_base.h index 0c4fe72c6..fad965623 100644 --- a/gr-usrp2/src/usrp2_sink_base.h +++ b/gr-usrp2/src/usrp2_sink_base.h @@ -56,6 +56,11 @@ public: bool set_interp(int interp_factor); /*! + * \brief Calculate default scale_iq for given interpolation factor + */ + void default_scale_iq(int interpolation_factor, int *scale_i, int *scale_q); + + /*! * \brief Set transmit IQ scale factors */ bool set_scale_iq(int scale_i, int scale_q); |