From e02f0af785fc4581d3f69def7dd3f578df8934d8 Mon Sep 17 00:00:00 2001 From: Sergey Musikhin <musihin_sergei@mail.ru> Date: Mon, 7 Jun 2021 20:47:48 +0000 Subject: [PATCH] power_monitoring for sink --- grc/gen_bladerf_blocks.py | 13 +++++++------ lib/bladerf/bladerf_sink_c.cc | 12 ++++++++++++ lib/sink_impl.cc | 5 +++++ 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/grc/gen_bladerf_blocks.py b/grc/gen_bladerf_blocks.py index 746ffc0..7f7d1ab 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 6ee3acd..928f843 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 2d3b105..126e3d7 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")); } /* -- GitLab