diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 0743aa7ee712b487a7d2374b74b798c620bea42a..c5b103009bbd289d49f330348cd37b364ded44f3 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -32,6 +32,8 @@ add_library(gnuradio-bladeRF SHARED ${bladeRF_sources})
target_link_libraries(gnuradio-bladeRF ${gr_bladerf_libs})
target_include_directories(gnuradio-bladeRF
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PUBLIC ${Boost_INCLUDE_DIRS}
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
PUBLIC $<INSTALL_INTERFACE:include>
)
diff --git a/lib/bladerf/bladerf_common.h b/lib/bladerf/bladerf_common.h
index 741b1e75b4e90daf4ddddc0cbb5862eccbb7646f..f2c1b8c980e3201a3011203f926b7ca672639959 100644
--- a/lib/bladerf/bladerf_common.h
+++ b/lib/bladerf/bladerf_common.h
@@ -30,7 +30,7 @@
#include <libbladeRF.h>
-#include "osmosdr/ranges.h"
+#include "bladeRF/ranges.h"
#include "arg_helpers.h"
#include "bladerf_compat.h"
diff --git a/lib/source_impl.cc b/lib/source_impl.cc
index f46eb1682e66ba608f05d7aac2c5ae09f8ebbb4a..3af33403694dfbfb6c6b7804700da44abfb8af75 100644
--- a/lib/source_impl.cc
+++ b/lib/source_impl.cc
@@ -9,6 +9,8 @@
#include "source_impl.h"
#include "arg_helpers.h"
+
+
namespace gr {
namespace bladeRF {
@@ -25,11 +27,34 @@ namespace gr {
gr::io_signature::make(0,0,0),
args_to_io_signature(args))
{
+ //in osmocom args for make source is strings,
+ //therefore all params is strings
+ //todo: change to vector<bladerf_devinfo>
- //connect(self(), 0, d_firstblock, 0);
- // connect other blocks
- //connect(d_lastblock, 0, self(), 0);
- }
+ auto dev_list = bladerf_source_c::get_devices();
+ if(dev_list.size() == 0)
+ throw std::runtime_error("No supported devices found "
+ "(check the connection and/or udev rules).");
+
+ dev_ = make_bladerf_source_c( dev_list[0] ); //todo: get by id from block args
+ for (size_t i = 0; i < dev_->get_num_channels(); i++) {
+ #ifdef HAVE_IQBALANCE
+ gr::iqbalance::optimize_c::sptr iq_opt = gr::iqbalance::optimize_c::make( 0 );
+ gr::iqbalance::fix_cc::sptr iq_fix = gr::iqbalance::fix_cc::make();
+
+ connect(block, i, iq_fix, 0);
+ connect(iq_fix, 0, self(), channel++);
+
+ connect(block, i, iq_opt, 0);
+ msg_connect(iq_opt, "iqbal_corr", iq_fix, "iqbal_corr");
+
+ _iq_opt.push_back( iq_opt.get() );
+ _iq_fix.push_back( iq_fix.get() );
+ #else
+ connect(dev_, i, self(), i);
+ #endif
+ }
+ }
/*
* Our virtual destructor.
@@ -38,9 +63,9 @@ namespace gr {
{
}
- size_t source_impl::get_num_channels() override
+ size_t source_impl::get_num_channels()
{
-
+ return 0;
}
diff --git a/python/bindings/source_python.cc b/python/bindings/source_python.cc
index 1e5ba73aac698bb7749020105e498f6d2c01e135..f0d73e29ae3cc8fbb1bcc3a543d79a0735779d98 100644
--- a/python/bindings/source_python.cc
+++ b/python/bindings/source_python.cc
@@ -14,7 +14,7 @@
/* BINDTOOL_GEN_AUTOMATIC(0) */
/* BINDTOOL_USE_PYGCCXML(0) */
/* BINDTOOL_HEADER_FILE(source.h) */
-/* BINDTOOL_HEADER_FILE_HASH(66db645c2a179be37e33d0fa63c60b38) */
+/* BINDTOOL_HEADER_FILE_HASH(0b4f4e854a322e9c5fccafa1563ff0cb) */
/***********************************************************************************/
#include <pybind11/complex.h>