diff --git a/grc/gen_bladerf_blocks.py b/grc/gen_bladerf_blocks.py index 746ffc02682857bfb1af48d9194ccd0cb99102f1..7f7d1ab8b0fc161b08f253bf95c721e628852ece 100644 --- a/grc/gen_bladerf_blocks.py +++ b/grc/gen_bladerf_blocks.py @@ -121,27 +121,28 @@ inputs: - domain: message id: command optional: true -% if sourk == 'source': + - domain: message id: pmic_in optional: true - + +% if sourk == 'source': outputs: -- domain: message - id: pmic_out - optional: true + % endif - domain: stream dtype: ${'$'}{type.type} multiplicity: ${'$'}{nchan} % if sourk == 'sink': - outputs: - domain: message id: async_msgs optional: true % endif +- domain: message + id: pmic_out + optional: true templates: diff --git a/lib/bladerf/bladerf_sink_c.cc b/lib/bladerf/bladerf_sink_c.cc index 6ee3acd927fdd290e33caf4d5e8b0026073329b5..928f8430c48836e34f9ef1cf6e25b062d7fddc1e 100644 --- a/lib/bladerf/bladerf_sink_c.cc +++ b/lib/bladerf/bladerf_sink_c.cc @@ -73,6 +73,18 @@ bladerf_sink_c::bladerf_sink_c(const std::string &args) : _in_burst(false), _running(false) { + message_port_register_in(pmt::mp("pmic_in")); + message_port_register_out(pmt::mp("pmic_out")); + + set_msg_handler(pmt::mp("pmic_in"),[=](const pmt::pmt_t & msg) + { + auto type = pmt::symbol_to_string(msg); + auto value = get_pmic_value(type); + auto pair = pmt::cons(msg,pmt::string_to_symbol(value)); + message_port_pub(pmt::mp("pmic_out"), pair); + + }); + dict_t dict = params_to_dict(args); /* Perform src/sink agnostic initializations */ diff --git a/lib/sink_impl.cc b/lib/sink_impl.cc index 2d3b1058171f8f074d9a63ac55753676a6cac9b6..126e3d7aaf14c33abdc14f27e7bad4d3f07c15bf 100644 --- a/lib/sink_impl.cc +++ b/lib/sink_impl.cc @@ -27,12 +27,17 @@ namespace gr { gr::io_signature::make(0, 0, 0)) , sample_rate_(0) { + message_port_register_hier_in(pmt::mp("pmic_in")); + message_port_register_hier_out(pmt::mp("pmic_out")); + auto dev_list = bladerf_sink_c::get_devices(); if(dev_list.size() == 0) throw std::runtime_error("No supported devices found " "(check the connection and/or udev rules)."); device_ = make_bladerf_sink_c( args ); //todo: get by id from block args + msg_connect(self(), pmt::mp("pmic_in"), device_, pmt::mp("pmic_in")); + msg_connect(device_,pmt::mp("pmic_out"), self(), pmt::mp("pmic_out")); } /*