diff --git a/lib/bladerf/bladerf_source_c.h b/lib/bladerf/bladerf_source_c.h
index 0cc26f43e28098214c632f327772a51f818d5c51..b0b9b3d6304697cbe3bd7eb33fccd9d0f57b2be4 100644
--- a/lib/bladerf/bladerf_source_c.h
+++ b/lib/bladerf/bladerf_source_c.h
@@ -22,9 +22,7 @@
#define INCLUDED_BLADERF_SOURCE_C_H
#include <gnuradio/sync_block.h>
-#include "source_iface.h"
#include "bladerf_common.h"
-
#include "osmosdr/ranges.h"
class bladerf_source_c;
@@ -53,7 +51,6 @@ bladerf_source_c_sptr make_bladerf_source_c(const std::string &args = "");
class bladerf_source_c :
public gr::sync_block,
- public source_iface,
protected bladerf_common
{
private:
diff --git a/lib/source_impl.cc b/lib/source_impl.cc
index c099f920f2676a9435921f07fcd9af6173129f10..f46eb1682e66ba608f05d7aac2c5ae09f8ebbb4a 100644
--- a/lib/source_impl.cc
+++ b/lib/source_impl.cc
@@ -38,6 +38,11 @@ namespace gr {
{
}
+ size_t source_impl::get_num_channels() override
+ {
+
+ }
+
} /* namespace bladeRF */
} /* namespace gr */
diff --git a/lib/source_impl.h b/lib/source_impl.h
index b7de92c473a6c3a23b72095f500409bd0f8b2ed4..94917017f4c3fd3f048aa8013e57dfee8188064c 100644
--- a/lib/source_impl.h
+++ b/lib/source_impl.h
@@ -9,6 +9,7 @@
#define INCLUDED_BLADERF_SOURCE_IMPL_H
#include <bladeRF/source.h>
+#include "bladerf_source_c.h"
namespace gr {
namespace bladeRF {
@@ -16,16 +17,121 @@ namespace gr {
class source_impl : public source
{
private:
- // Nothing to declare in this block.
+ bladerf_source_c_sptr dev_;
public:
source_impl(const std::string & args);
~source_impl();
+ size_t get_num_channels( void ) override;
+
+ osmosdr::meta_range_t get_sample_rates( void ) override;
+
+ double set_sample_rate( double rate ) override;
+
+ double get_sample_rate( void ) override;
+
+ osmosdr::freq_range_t get_freq_range( size_t chan = 0 ) override;
+
+ double set_center_freq( double freq, size_t chan = 0 ) override;
+
+ double get_center_freq( size_t chan = 0 ) override;
+
+ double set_freq_corr( double ppm, size_t chan = 0 ) override;
+
+ double get_freq_corr( size_t chan = 0 ) override;
+
+ std::vector<std::string> get_gain_names( size_t chan = 0 ) override;
+
+ osmosdr::gain_range_t get_gain_range( size_t chan = 0 ) override;
+
+ osmosdr::gain_range_t get_gain_range( const std::string & name,
+ size_t chan = 0 ) override;
+
+ bool set_gain_mode( bool automatic, size_t chan = 0 ) override;
+
+ bool get_gain_mode( size_t chan = 0 ) override;
+
+ double set_gain( double gain, size_t chan = 0 ) override;
+
+ double set_gain( double gain,
+ const std::string & name,
+ size_t chan = 0 ) override;
+
+ double get_gain( size_t chan = 0 )override;
+
+ double get_gain( const std::string & name, size_t chan = 0 ) override;
+
+ double set_if_gain( double gain, size_t chan = 0 ) override;
+
+ double set_bb_gain( double gain, size_t chan = 0 ) override;
+
+ std::vector< std::string > get_antennas( size_t chan = 0 ) override;
+
+ std::string set_antenna( const std::string & antenna,
+ size_t chan = 0 ) override;
+
+ std::string get_antenna( size_t chan = 0 ) = 0;
+
+ enum DCOffsetMode {
+ DCOffsetOff = 0,
+ DCOffsetManual,
+ DCOffsetAutomatic
+ };
+
+ void set_dc_offset_mode( int mode, size_t chan = 0) override;
+
+ void set_dc_offset( const std::complex<double> &offset, size_t chan = 0 ) override;
+
+ enum IQBalanceMode {
+ IQBalanceOff = 0,
+ IQBalanceManual,
+ IQBalanceAutomatic
+ };
+
+ void set_iq_balance_mode( int mode, size_t chan = 0 ) override;
+
+ void set_iq_balance( const std::complex<double> &balance, size_t chan = 0 ) override;
+
+ double set_bandwidth( double bandwidth, size_t chan = 0 ) override;
+
+ double get_bandwidth( size_t chan = 0 ) override;
+
+ osmosdr::freq_range_t get_bandwidth_range( size_t chan = 0 ) override;
+
+ void set_time_source(const std::string &source,
+ const size_t mboard = 0) override;
+
+ std::string get_time_source(const size_t mboard) override;
+
+ std::vector<std::string> get_time_sources(const size_t mboard) override;
+
+ void set_clock_source(const std::string &source,
+ const size_t mboard = 0) override;
+
+ std::string get_clock_source(const size_t mboard) override;
+
+ std::vector<std::string> get_clock_sources(const size_t mboard) override;
+
+ double get_clock_rate(size_t mboard = 0) override;
+
+ void set_clock_rate(double rate, size_t mboard = 0) override;
+
+ ::osmosdr::time_spec_t get_time_now(size_t mboard = 0) override;
+
+ ::osmosdr::time_spec_t get_time_last_pps(size_t mboard = 0) override;
+
+ void set_time_now(const ::osmosdr::time_spec_t &time_spec,
+ size_t mboard = 0) override;
+
+ void set_time_next_pps(const ::osmosdr::time_spec_t &time_spec) override;
+
+ void set_time_unknown_pps(const ::osmosdr::time_spec_t &time_spec) override;
+
// Where all the action really happens
- };
+ };
- } // namespace bladeRF
+ } // namespace bladeRF
} // namespace gr
#endif /* INCLUDED_BLADERF_SOURCE_IMPL_H */