Loading [MathJax]/extensions/tex2jax.js
 |
USRP Hardware Driver and USRP Manual
Version: 4.8.0.0
UHD and USRP Manual
|
|
Go to the documentation of this file.
24 typedef std::shared_ptr<filter_info_base>
sptr;
25 enum filter_type { ANALOG_LOW_PASS, ANALOG_BAND_PASS, DIGITAL_I16, DIGITAL_FIR_I16 };
28 : _type(type), _bypass(bypass), _position_index(position_index)
48 virtual std::string to_pp_string();
60 std::string _analog_type;
63 typedef std::shared_ptr<analog_filter_base>
sptr;
66 size_t position_index,
67 const std::string& analog_type)
78 std::string to_pp_string()
override;
87 typedef std::shared_ptr<analog_filter_lp>
sptr;
90 size_t position_index,
91 const std::string& analog_type,
116 std::string to_pp_string()
override;
119 template <
typename tap_t>
131 typedef std::shared_ptr<digital_filter_base>
sptr;
134 size_t position_index,
136 uint32_t interpolation,
138 tap_t tap_full_scale,
139 uint32_t max_num_taps,
140 const std::vector<tap_t>& taps)
143 , _interpolation(interpolation)
144 , _decimation(decimation)
145 , _tap_full_scale(tap_full_scale)
146 , _max_num_taps(max_num_taps)
154 return (_bypass ? _rate : (_rate / _decimation * _interpolation));
164 return _interpolation;
174 return _tap_full_scale;
184 std::ostringstream os;
186 <<
"\tinput rate: " << _rate << std::endl
187 <<
"\tinterpolation: " << _interpolation << std::endl
188 <<
"\tdecimation: " << _decimation << std::endl
189 <<
"\tfull-scale: " << _tap_full_scale << std::endl
190 <<
"\tmax num taps: " << _max_num_taps << std::endl
191 <<
"\ttaps: " << std::endl;
194 for (
size_t i = 0; i < _taps.size(); i++) {
195 os <<
"(tap " << i <<
": " << _taps[i] <<
")";
196 if (((i % 10) == 0) && (i != 0)) {
197 os << std::endl <<
"\t\t";
201 return std::string(os.str());
205 template <
typename tap_t>
209 typedef std::shared_ptr<digital_filter_fir<tap_t>>
sptr;
213 size_t position_index,
215 uint32_t interpolation,
218 uint32_t max_num_taps,
219 const std::vector<tap_t>& taps)
235 std::size_t num_taps = taps.size();
236 if (num_taps < this->_max_num_taps) {
238 "coefficients. Appending zeros";
239 std::vector<tap_t> coeffs;
240 for (
size_t i = 0; i < this->_max_num_taps; i++) {
242 coeffs.push_back(taps[i]);
247 this->_taps = coeffs;
filter_type
Definition: filters.hpp:25
digital_filter_base(filter_type type, bool bypass, size_t position_index, double rate, uint32_t interpolation, uint32_t decimation, tap_t tap_full_scale, uint32_t max_num_taps, const std::vector< tap_t > &taps)
Definition: filters.hpp:132
UHD_INLINE filter_type get_type()
Definition: filters.hpp:38
UHD_INLINE double get_input_rate()
Definition: filters.hpp:157
bool _bypass
Definition: filters.hpp:52
UHD_INLINE void set_cutoff(const double cutoff)
Definition: filters.hpp:111
Definition: filters.hpp:206
Definition: filters.hpp:120
std::shared_ptr< analog_filter_base > sptr
Definition: filters.hpp:63
filter_info_base(filter_type type, bool bypass, size_t position_index)
Definition: filters.hpp:27
uint32_t _decimation
Definition: filters.hpp:125
analog_filter_base(filter_type type, bool bypass, size_t position_index, const std::string &analog_type)
Definition: filters.hpp:64
virtual ~filter_info_base()
Definition: filters.hpp:43
#define UHD_INLINE
Definition: config.h:65
std::string to_pp_string() override
Definition: filters.hpp:182
Definition: filters.hpp:58
#define UHD_API
Definition: config.h:87
virtual UHD_INLINE bool is_bypassed()
Definition: filters.hpp:33
std::shared_ptr< filter_info_base > sptr
Definition: filters.hpp:24
UHD_INLINE uint32_t get_interpolation()
Definition: filters.hpp:162
Definition: build_info.hpp:12
UHD_INLINE uint32_t get_decimation()
Definition: filters.hpp:167
tap_t _tap_full_scale
Definition: filters.hpp:126
UHD_INLINE double get_rolloff()
Definition: filters.hpp:106
double _rate
Definition: filters.hpp:123
digital_filter_fir(filter_info_base::filter_type type, bool bypass, size_t position_index, double rate, uint32_t interpolation, uint32_t decimation, tap_t tap_bit_width, uint32_t max_num_taps, const std::vector< tap_t > &taps)
Definition: filters.hpp:211
Definition: filters.hpp:81
uint32_t _interpolation
Definition: filters.hpp:124
UHD_INLINE double get_cutoff()
Definition: filters.hpp:101
std::vector< tap_t > _taps
Definition: filters.hpp:128
#define UHD_LOGGER_WARNING(component)
Definition: log.hpp:272
UHD_INLINE uint32_t get_tap_full_scale()
Definition: filters.hpp:172
std::shared_ptr< digital_filter_base > sptr
Definition: filters.hpp:131
size_t _position_index
Definition: filters.hpp:53
virtual std::string to_pp_string()
void set_taps(const std::vector< tap_t > &taps)
Definition: filters.hpp:233
const UHD_INLINE std::string & get_analog_type()
Definition: filters.hpp:73
UHD_INLINE double get_output_rate()
Definition: filters.hpp:152
uint32_t _max_num_taps
Definition: filters.hpp:127
std::shared_ptr< digital_filter_fir< tap_t > > sptr
Definition: filters.hpp:209
UHD_API_HEADER std::ostream & operator<<(std::ostream &os, filter_info_base &f)
std::shared_ptr< analog_filter_lp > sptr
Definition: filters.hpp:87
filter_type _type
Definition: filters.hpp:51
#define UHD_API_HEADER
Definition: config.h:88
analog_filter_lp(filter_type type, bool bypass, size_t position_index, const std::string &analog_type, double cutoff, double rolloff)
Definition: filters.hpp:88
Definition: filters.hpp:21
UHD_INLINE std::vector< tap_t > & get_taps()
Definition: filters.hpp:177