From 6d16921845f624722b8d95e677fd6a31e9d622a4 Mon Sep 17 00:00:00 2001 From: Anthony Arnold Date: Sat, 9 May 2015 12:53:17 +1000 Subject: [PATCH] Setting AGC mode --- .../adapters/rtl_tcp_signal_source.cc | 13 +++--- .../rtl_tcp_signal_source_c.cc | 40 ++++++++++++++++++- .../gnuradio_blocks/rtl_tcp_signal_source_c.h | 3 +- 3 files changed, 48 insertions(+), 8 deletions(-) diff --git a/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.cc b/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.cc index 33bf159c8..24c9e66cd 100644 --- a/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.cc +++ b/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.cc @@ -94,19 +94,20 @@ RtlTcpSignalSource::RtlTcpSignalSource(ConfigurationInterface* configuration, // 3. set rx frequency signal_source_->set_frequency(freq_); - // 4. set rx gain + // TODO set rx gain + signal_source_->set_agc_mode(true); + /*if (this->AGC_enabled_ == true) { - osmosdr_source_->set_gain_mode(true); + signal_source_->set_agc_mode(true); std::cout << "AGC enabled" << std::endl; LOG(INFO) << "AGC enabled"; } else { - osmosdr_source_->set_gain_mode(false); - osmosdr_source_->set_gain(gain_, 0); - osmosdr_source_->set_if_gain(if_gain_, 0); - osmosdr_source_->set_bb_gain(rf_gain_, 0); + signal_source_->set_agc_mode(false); + signal_source_->set_gain(gain_, 0); + signal_source_->set_if_gain(if_gain_, 0); }*/ } else diff --git a/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.cc b/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.cc index 5182ce6f4..ccc5fbec9 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.cc +++ b/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.cc @@ -46,7 +46,11 @@ enum { // command ids enum { CMD_ID_SET_FREQUENCY = 1, - CMD_ID_SET_SAMPLE_RATE = 2 + CMD_ID_SET_SAMPLE_RATE = 2, + CMD_ID_SET_GAIN_MODE = 3, + CMD_ID_SET_GAIN = 4, + CMD_ID_SET_IF_GAIN = 6, + CMD_ID_SET_AGC_MODE = 8 }; // rtl_tcp command @@ -87,6 +91,24 @@ struct set_sample_rate_command : command { } }; +// set gain mode command +struct set_gain_mode_command : command { + set_gain_mode_command (bool manual) + : command (CMD_ID_SET_GAIN_MODE, static_cast( manual )) + { + } +}; + + +// set agc mode command +struct set_agc_mode_command : command { + set_agc_mode_command (bool manual) + : command (CMD_ID_SET_AGC_MODE, static_cast( manual )) + { + } +}; + + rtl_tcp_signal_source_c_sptr rtl_tcp_make_signal_source_c(const std::string &address, short port) @@ -181,6 +203,22 @@ void rtl_tcp_signal_source_c::set_sample_rate (int sample_rate) { } } + +void rtl_tcp_signal_source_c::set_agc_mode (bool agc) { + boost::system::error_code ec = + set_gain_mode_command (!agc).send (socket_); + if (ec) { + std::cout << "Failed to set gain mode" << std::endl; + LOG (WARNING) << "Failed to set gain mode"; + } + ec = + set_agc_mode_command (agc).send (socket_); + if (ec) { + std::cout << "Failed to set gain mode" << std::endl; + LOG (WARNING) << "Failed to set gain mode"; + } +} + void rtl_tcp_signal_source_c::handle_read (const boost::system::error_code &ec, size_t bytes_transferred) diff --git a/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.h b/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.h index 8a2963c14..17ad456ac 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.h +++ b/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.h @@ -70,7 +70,8 @@ public: void set_frequency (int frequency); void set_sample_rate (int sample_rate); - + void set_agc_mode (bool agc); + private: typedef boost::circular_buffer_space_optimized buffer_type;