GNU Radio's SOAPY Package
|
Go to the documentation of this file.
22 #ifndef INCLUDED_SOAPY_SINK_IMPL_H
23 #define INCLUDED_SOAPY_SINK_IMPL_H
26 #include <boost/bind.hpp>
27 #include <boost/thread/mutex.hpp>
29 #include <SoapySDR/Version.hpp>
30 #include <SoapySDR/Modules.hpp>
31 #include <SoapySDR/Registry.hpp>
32 #include <SoapySDR/Device.hpp>
45 const std::string d_devname;
46 SoapySDR::Device *d_device;
47 SoapySDR::Stream *d_stream;
50 pmt::pmt_t d_message_port;
54 double d_sampling_rate;
56 std::string d_antenna;
58 gr_complex d_dc_offset;
59 bool d_dc_offset_auto_mode;
60 bool d_gain_auto_mode;
61 double d_frequency_correction;
62 gr_complex d_iq_balance;
64 std::string d_clock_source;
65 std::string d_frontend_mapping;
69 const pmt::pmt_t d_length_tag_key;
70 long d_burst_remaining;
72 virtual bool hasThisGain(
size_t channel, std::string gainType);
73 virtual void setGain(
size_t channel,
float gain,
bool manual_mode,
74 std::string gainType);
77 void register_msg_cmd_handler(
const pmt::pmt_t &cmd,
cmd_handler_t handler);
78 std::map<pmt::pmt_t, cmd_handler_t> d_cmd_handlers;
80 inline io_signature::sptr
81 args_to_io_sig(
const std::string type,
size_t nchan)
90 return io_signature::make(nchan, nchan, size);
93 void tag_work(
int noutput_items);
103 void makeDevice(
const std::string &argStr);
111 void unmakeDevice(SoapySDR::Device *dev);
114 sink_impl(
size_t nchan,
const std::string device,
115 const std::string args,
double sampling_rate,
const std::string type,
116 const std::string length_tag_name);
119 virtual bool start();
123 int work(
int noutput_items,
124 gr_vector_const_void_star &input_items,
125 gr_vector_void_star &output_items);
127 virtual std::vector<std::string>
listAntennas(
int channel);
148 void set_frequency(
size_t channel,
const std::string &name,
double frequency);
150 virtual void set_overall_gain(
size_t channel,
float gain,
bool manual_mode);
163 void set_gain(
size_t channel,
float gain);
171 void set_gain(
size_t channel,
const std::string name,
float gain,
201 void set_antenna(
size_t channel,
const std::string &name);
213 bool dc_offset_auto_mode);
std::complex< double > get_dc_offset(size_t channel)
void cmd_handler_gain(pmt::pmt_t val, size_t chann)
void set_frontend_mapping(const std::string &frontend_mapping)
void msg_handler_command(pmt::pmt_t msg)
Sink block implementation for SDR devices.
Definition: sink_impl.h:43
void set_gain(size_t channel, float gain)
boost::function< void(pmt::pmt_t, size_t)> cmd_handler_t
Definition: sink_impl.h:34
void set_gain_mode(size_t channel, bool gain_auto_mode)
double get_sampling_rate(size_t channel)
void set_bandwidth(size_t channel, double bandwidth)
void set_dc_offset_mode(size_t channel, bool dc_offset_auto_mode)
sink_impl(size_t nchan, const std::string device, const std::string args, double sampling_rate, const std::string type, const std::string length_tag_name)
virtual void set_overall_gain(size_t channel, float gain, bool manual_mode)
double get_gain(size_t channel)
std::string get_antenna(size_t channel)
void set_frequency(size_t channel, double frequency)
void set_clock_source(const std::string &clock_source)
double get_master_clock_rate()
void set_antenna(size_t channel, const std::string &name)
double get_bandwidth(size_t channel)
void cmd_handler_samp_rate(pmt::pmt_t val, size_t chann)
void set_master_clock_rate(double clock_rate)
bool get_gain_mode(size_t channel)
double get_frequency_correction(size_t channel)
std::string get_clock_source()
bool get_dc_offset_mode(size_t channel)
virtual bool hasFrequencyCorrection(int channel)
void set_sample_rate(size_t channel, double sample_rate)
void set_iq_balance(size_t channel, gr_complexd iq_balance)
int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
void cmd_handler_bw(pmt::pmt_t val, size_t chann)
void cmd_handler_antenna(pmt::pmt_t val, size_t chann)
void set_dc_offset(size_t channel, gr_complexd dc_offset, bool dc_offset_auto_mode)
virtual std::vector< std::string > listAntennas(int channel)
double get_frequency(size_t channel)
virtual bool hasIQBalance(int channel)
void cmd_handler_frequency(pmt::pmt_t val, size_t chann)
void set_frequency_correction(size_t channel, double freq_correction)
std::complex< double > get_iq_balance(size_t channel)
virtual bool hasDCOffset(int channel)