8#ifndef INCLUDED_UHD_TYPES_FILTERS_HPP
9#define INCLUDED_UHD_TYPES_FILTERS_HPP
14#include <boost/scoped_array.hpp>
15#include <boost/shared_ptr.hpp>
27 typedef boost::shared_ptr<filter_info_base>
sptr;
63 std::string _analog_type;
66 typedef boost::shared_ptr<analog_filter_base>
sptr;
69 size_t position_index,
70 const std::string& analog_type)
90 typedef boost::shared_ptr<analog_filter_lp>
sptr;
93 size_t position_index,
94 const std::string& analog_type,
133 typedef boost::shared_ptr<digital_filter_base>
sptr;
136 size_t position_index,
138 size_t interpolation,
140 double tap_full_scale,
142 const std::vector<tap_t>& taps)
186 std::ostringstream os;
188 <<
"\tinput rate: " <<
_rate << std::endl
193 <<
"\ttaps: " << std::endl;
196 for (
size_t i = 0; i <
_taps.size(); i++) {
197 os <<
"(tap " << i <<
": " <<
_taps[i] <<
")";
198 if (((i % 10) == 0) && (i != 0)) {
199 os << std::endl <<
"\t\t";
203 return std::string(os.str());
207template <
typename tap_t>
211 typedef boost::shared_ptr<digital_filter_fir<tap_t> >
sptr;
215 size_t position_index,
217 size_t interpolation,
219 size_t tap_bit_width,
221 const std::vector<tap_t>& taps)
237 std::size_t num_taps = taps.size();
240 "coefficients. Appending zeros";
241 std::vector<tap_t> coeffs;
242 for (
size_t i = 0; i < this->_max_num_taps; i++) {
244 coeffs.push_back(taps[i]);
249 this->
_taps = coeffs;
UHD_INLINE const std::string & get_analog_type()
Definition filters.hpp:76
boost::shared_ptr< analog_filter_base > sptr
Definition filters.hpp:66
virtual std::string to_pp_string()
analog_filter_base(filter_type type, bool bypass, size_t position_index, const std::string &analog_type)
Definition filters.hpp:67
analog_filter_lp(filter_type type, bool bypass, size_t position_index, const std::string &analog_type, double cutoff, double rolloff)
Definition filters.hpp:91
UHD_INLINE double get_cutoff()
Definition filters.hpp:104
boost::shared_ptr< analog_filter_lp > sptr
Definition filters.hpp:90
virtual std::string to_pp_string()
UHD_INLINE void set_cutoff(const double cutoff)
Definition filters.hpp:114
UHD_INLINE double get_rolloff()
Definition filters.hpp:109
uint32_t _decimation
Definition filters.hpp:127
boost::shared_ptr< digital_filter_base > sptr
Definition filters.hpp:133
tap_t _tap_full_scale
Definition filters.hpp:128
UHD_INLINE std::vector< tap_t > & get_taps()
Definition filters.hpp:179
UHD_INLINE double get_interpolation()
Definition filters.hpp:164
uint32_t _interpolation
Definition filters.hpp:126
UHD_INLINE double get_output_rate()
Definition filters.hpp:154
UHD_INLINE double get_tap_full_scale()
Definition filters.hpp:174
digital_filter_base(filter_type type, bool bypass, size_t position_index, double rate, size_t interpolation, size_t decimation, double tap_full_scale, size_t max_num_taps, const std::vector< tap_t > &taps)
Definition filters.hpp:134
double _rate
Definition filters.hpp:125
virtual std::string to_pp_string()
Definition filters.hpp:184
UHD_INLINE double get_input_rate()
Definition filters.hpp:159
UHD_INLINE double get_decimation()
Definition filters.hpp:169
uint32_t _max_num_taps
Definition filters.hpp:129
std::vector< tap_t > _taps
Definition filters.hpp:130
boost::shared_ptr< digital_filter_fir< tap_t > > sptr
Definition filters.hpp:211
void set_taps(const std::vector< tap_t > &taps)
Definition filters.hpp:235
digital_filter_fir(filter_info_base::filter_type type, bool bypass, size_t position_index, double rate, size_t interpolation, size_t decimation, size_t tap_bit_width, size_t max_num_taps, const std::vector< tap_t > &taps)
Definition filters.hpp:213
Definition filters.hpp:25
UHD_INLINE filter_type get_type()
Definition filters.hpp:41
virtual std::string to_pp_string()
virtual ~filter_info_base()
Definition filters.hpp:46
size_t _position_index
Definition filters.hpp:56
filter_type _type
Definition filters.hpp:54
filter_type
Definition filters.hpp:28
@ DIGITAL_I16
Definition filters.hpp:28
@ ANALOG_BAND_PASS
Definition filters.hpp:28
@ DIGITAL_FIR_I16
Definition filters.hpp:28
@ ANALOG_LOW_PASS
Definition filters.hpp:28
boost::shared_ptr< filter_info_base > sptr
Definition filters.hpp:27
virtual UHD_INLINE bool is_bypassed()
Definition filters.hpp:36
filter_info_base(filter_type type, bool bypass, size_t position_index)
Definition filters.hpp:30
bool _bypass
Definition filters.hpp:55
#define UHD_INLINE
Definition config.h:53
#define UHD_API
Definition config.h:68
#define UHD_LOGGER_WARNING(component)
Definition log.hpp:239
Definition build_info.hpp:13
UHD_API std::ostream & operator<<(std::ostream &os, filter_info_base &f)