28 #ifndef INCLUDED_BAZ_RTL_SOURCE_C_H 29 #define INCLUDED_BAZ_RTL_SOURCE_C_H 35 #include <gnuradio/block.h> 36 #include <gnuradio/msg_queue.h> 38 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) 42 #include <boost/thread.hpp> 43 #include <boost/thread/condition.hpp> 44 #include <boost/thread/recursive_mutex.hpp> 46 #include <boost/thread/xtime.hpp> 49 #include <libusb-1.0/libusb.h> 55 typedef boost::shared_ptr<baz_rtl_source_c> baz_rtl_source_c_sptr;
78 size_t m_recv_samples_per_packet;
79 uint64_t m_nSamplesReceived;
80 uint32_t m_nOverflows;
82 boost::recursive_mutex d_mutex;
83 boost::thread m_pCaptureThread;
84 uint32_t m_nBufferSize;
85 uint32_t m_nBufferStart;
86 uint32_t m_nBufferItems;
87 boost::condition m_hPacketEvent;
88 uint8_t* m_pUSBBuffer;
90 uint32_t m_nReadLength;
91 uint32_t m_nBufferMultiplier;
94 uint32_t m_nReadPacketCount;
95 uint32_t m_nBufferOverflowCount;
96 uint32_t m_nBufferUnderrunCount;
98 boost::xtime m_wait_delay, m_wait_next;
103 bool m_relative_gain;
105 gr::msg_queue::sptr m_status_queue;
115 { log(
level, msg, args); }
117 void log(
int level,
const char* message, va_list args);
118 #define IMPLEMENT_LOG_FUNCTION(suffix,level) \ 119 inline void log_##suffix(const char* message, ...) \ 120 { va_list args; va_start(args, message); log(level, message, args); } 126 void capture_thread();
127 void report_status(
int status);
130 bool set_output_format(
int size);
131 void set_status_msgq(gr::msg_queue::sptr queue);
132 bool create(
bool reset_defaults =
false);
136 { m_demod_params.
vid = vid; }
138 { m_demod_params.
pid = pid; }
149 {
return m_recv_samples_per_packet; }
151 {
return m_nSamplesReceived; }
153 {
return m_nOverflows; }
155 {
return m_bRunning; }
157 {
return m_nBufferSize; }
159 {
return m_nBufferItems; }
161 {
return m_bBuffering; }
163 {
return m_nReadPacketCount; }
165 {
return m_nBufferOverflowCount; }
167 {
return m_nBufferUnderrunCount; }
170 { m_relative_gain = on; }
174 {
if (length > 0) m_nReadLength = length; }
176 { m_nBufferMultiplier = mul; }
178 { m_bUseBuffer = use; }
180 { m_fBufferLevel =
level; }
183 {
return m_relative_gain; }
185 {
return m_verbose; }
187 {
return m_nReadLength; }
189 {
return m_nBufferMultiplier; }
191 {
return m_bUseBuffer; }
193 {
return m_fBufferLevel; }
195 bool set_sample_rate(
double sample_rate);
196 bool set_frequency(
double freq);
197 bool set_gain(
double gain);
198 bool set_bandwidth(
double bandwidth);
199 bool set_gain_mode(
int mode);
200 bool set_gain_mode(
const char* mode);
201 bool set_auto_gain_mode(
bool on =
true);
203 inline const char*
name()
const 204 {
return m_demod.
name(); }
217 std::string gain_mode_string()
const;
239 int general_work (
int noutput_items,
240 gr_vector_int &ninput_items,
241 gr_vector_const_void_star &input_items,
242 gr_vector_void_star &output_items);
class BAZ_API baz_rtl_source_c
Definition: baz_rtl_source_c.h:54
uint32_t buffer_multiplier() const
Definition: baz_rtl_source_c.h:188
uint32_t read_length() const
Definition: baz_rtl_source_c.h:186
void set_tuner_name(const char *name)
Definition: baz_rtl_source_c.h:145
#define IMPLEMENT_LOG_FUNCTION(suffix, level)
Definition: baz_rtl_source_c.h:118
virtual void on_log_message_va(int level, const char *msg, va_list args)=0
BAZ_API baz_rtl_source_c_sptr baz_make_rtl_source_c(bool defer_creation=false, int output_size=0)
Return a shared_ptr to a new instance of baz_rtl_source_c.
std::pair< double, double > range_t
Definition: rtl2832.h:84
Definition: rtl2832.h:317
const char * name() const
void set_buffer_multiplier(uint32_t mul)
Definition: baz_rtl_source_c.h:175
Definition: rtl2832.h:103
std::vector< double > values_t
Definition: rtl2832.h:85
#define RTL2832_TUNER_NAME_LEN
Definition: rtl2832.h:307
RTL2832_NAMESPACE::range_t frequency_range() const
Definition: baz_rtl_source_c.h:225
virtual range_t gain_range() const =0
uint32_t buffer_overflow_count() const
Definition: baz_rtl_source_c.h:164
bool relative_gain() const
Definition: baz_rtl_source_c.h:182
RTL2832_NAMESPACE::range_t gain_range() const
Definition: baz_rtl_source_c.h:221
uint8_t fir_coeff[RTL2832_FIR_COEFF_COUNT]
Definition: rtl2832.h:325
Definition: rtl2832.h:110
void set_relative_gain(bool on=true)
Definition: baz_rtl_source_c.h:169
level
Definition: rtl2832.h:106
bool auto_gain_mode() const
Definition: baz_rtl_source_c.h:218
float buffer_level() const
Definition: baz_rtl_source_c.h:192
double frequency() const
Definition: baz_rtl_source_c.h:209
RTL2832_NAMESPACE::range_t bandwidth_range() const
Definition: baz_rtl_source_c.h:227
bool use_buffer() const
Definition: baz_rtl_source_c.h:190
gain_mode
Definition: rtl2832.h:149
RTL2832_NAMESPACE::values_t bandwidth_values() const
Definition: baz_rtl_source_c.h:229
uint16_t vid
Definition: rtl2832.h:319
std::map< int, std::string > num_name_map_t
Definition: rtl2832.h:86
Definition: rtl2832.h:109
int gain_mode() const
Definition: baz_rtl_source_c.h:215
Definition: rtl2832.h:309
range_t sample_rate_range() const
Definition: rtl2832.h:377
uint32_t buffer_times() const
Definition: baz_rtl_source_c.h:158
uint32_t buffer_underrun_count() const
Definition: baz_rtl_source_c.h:166
int default_timeout
Definition: rtl2832.h:322
RTL2832_NAMESPACE::num_name_map_t gain_modes() const
Definition: baz_rtl_source_c.h:231
uint32_t read_packet_count() const
Definition: baz_rtl_source_c.h:162
void set_crystal_frequency(uint32_t freq)
Definition: baz_rtl_source_c.h:143
uint32_t overflows() const
Definition: baz_rtl_source_c.h:152
void set_verbose(bool on=true)
Definition: baz_rtl_source_c.h:171
virtual bool calc_appropriate_gain_mode(int &mode)=0
void set_fir_coefficients(const std::vector< int > &coeffs)
Definition: baz_rtl_source_c.h:141
size_t recv_samples_per_packet() const
Definition: baz_rtl_source_c.h:148
uint16_t pid
Definition: rtl2832.h:320
virtual values_t gain_values() const =0
bool buffering() const
Definition: baz_rtl_source_c.h:160
virtual double frequency() const =0
Definition: rtl2832.h:108
uint32_t buffer_size() const
Definition: baz_rtl_source_c.h:156
double sample_rate() const
Definition: baz_rtl_source_c.h:205
std::pair< bool, int > calc_appropriate_gain_mode()
Definition: baz_rtl_source_c.h:233
const char * name() const
Definition: baz_rtl_source_c.h:203
uint64_t samples_received() const
Definition: baz_rtl_source_c.h:150
virtual num_name_map_t gain_modes() const =0
void set_use_buffer(bool use=true)
Definition: baz_rtl_source_c.h:177
double gain() const
Definition: baz_rtl_source_c.h:211
#define BAZ_API
Definition: config.h:8
capture samples from an RTL2832-based device.
Definition: baz_rtl_source_c.h:68
void set_buffer_level(float level)
Definition: baz_rtl_source_c.h:179
bool running() const
Definition: baz_rtl_source_c.h:154
void set_default_timeout(int timeout)
Definition: baz_rtl_source_c.h:139
virtual range_t frequency_range() const =0
tuner * active_tuner() const
Definition: rtl2832.h:371
double bandwidth() const
Definition: baz_rtl_source_c.h:213
bool verbose() const
Definition: baz_rtl_source_c.h:184
void set_pid(uint16_t pid)
Definition: baz_rtl_source_c.h:137
RTL2832_NAMESPACE::values_t gain_values() const
Definition: baz_rtl_source_c.h:223
virtual double gain() const =0
#define RTL2832_FIR_COEFF_COUNT
Definition: rtl2832.h:306
uint32_t crystal_frequency
Definition: rtl2832.h:328
virtual values_t bandwidth_values() const =0
virtual double bandwidth() const =0
RTL2832_NAMESPACE::range_t sample_rate_range() const
Definition: baz_rtl_source_c.h:207
void set_vid(uint16_t vid)
Definition: baz_rtl_source_c.h:135
virtual bool auto_gain_mode() const =0
void set_read_length(uint32_t length)
Definition: baz_rtl_source_c.h:173
double sample_rate() const
Definition: rtl2832.h:373
char tuner_name[RTL2832_TUNER_NAME_LEN]
Definition: rtl2832.h:329
virtual range_t bandwidth_range() const =0
bool use_custom_fir_coefficients
Definition: rtl2832.h:324