From bedf7e60522bb34b19f4a28b8866aea7062c9054 Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Tue, 22 Jan 2019 10:08:07 +0100 Subject: Add modulator rate (r/o) to RC --- src/DabMod.cpp | 4 +++- src/DabModulator.cpp | 34 +++++++++++++++++++++++++++++++++- src/DabModulator.h | 21 +++++++++++++-------- 3 files changed, 49 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/DabMod.cpp b/src/DabMod.cpp index c53b7c9..57acd40 100644 --- a/src/DabMod.cpp +++ b/src/DabMod.cpp @@ -3,7 +3,7 @@ Her Majesty the Queen in Right of Canada (Communications Research Center Canada) - Copyright (C) 2018 + Copyright (C) 2019 Matthias P. Braendli, matthias.braendli@mpb.li http://opendigitalradio.org @@ -315,6 +315,7 @@ int launch_modulator(int argc, char* argv[]) Flowgraph flowgraph; auto modulator = make_shared(ediReader, mod_settings); + rcs.enrol(modulator.get()); if (format_converter) { flowgraph.connect(modulator, format_converter); @@ -420,6 +421,7 @@ int launch_modulator(int argc, char* argv[]) auto input = make_shared(&m.data); auto modulator = make_shared(etiReader, mod_settings); + rcs.enrol(modulator.get()); if (format_converter) { flowgraph.connect(modulator, format_converter); diff --git a/src/DabModulator.cpp b/src/DabModulator.cpp index ca958e3..666745d 100644 --- a/src/DabModulator.cpp +++ b/src/DabModulator.cpp @@ -3,7 +3,7 @@ Her Majesty the Queen in Right of Canada (Communications Research Center Canada) - Copyright (C) 2018 + Copyright (C) 2019 Matthias P. Braendli, matthias.braendli@mpb.li http://opendigitalradio.org @@ -58,15 +58,20 @@ #include "RemoteControl.h" #include "Log.h" +using namespace std; + DabModulator::DabModulator(EtiSource& etiSource, mod_settings_t& settings) : ModInput(), + RemoteControllable("modulator"), m_settings(settings), myEtiSource(etiSource), myFlowgraph() { PDEBUG("DabModulator::DabModulator() @ %p\n", this); + RC_ADD_PARAMETER(rate, "(Read-only) IQ output samplerate"); + if (m_settings.dabMode == 0) { setMode(2); } @@ -385,3 +390,30 @@ meta_vec_t DabModulator::process_metadata(const meta_vec_t& metadataIn) return {}; } + +void DabModulator::set_parameter(const string& parameter, const string& value) +{ + if (parameter == "rate") { + throw ParameterError("Parameter 'rate' is read-only"); + } + else { + stringstream ss; + ss << "Parameter '" << parameter << + "' is not exported by controllable " << get_rc_name(); + throw ParameterError(ss.str()); + } +} + +const string DabModulator::get_parameter(const string& parameter) const +{ + stringstream ss; + if (parameter == "rate") { + ss << m_settings.outputRate; + } + else { + ss << "Parameter '" << parameter << + "' is not exported by controllable " << get_rc_name(); + throw ParameterError(ss.str()); + } + return ss.str(); +} diff --git a/src/DabModulator.h b/src/DabModulator.h index 355eeb3..00d71f5 100644 --- a/src/DabModulator.h +++ b/src/DabModulator.h @@ -3,7 +3,7 @@ Her Majesty the Queen in Right of Canada (Communications Research Center Canada) - Copyright (C) 2018 + Copyright (C) 2019 Matthias P. Braendli, matthias.braendli@mpb.li http://opendigitalradio.org @@ -46,21 +46,26 @@ #include "TII.h" -class DabModulator : public ModInput, public ModMetadata +class DabModulator : public ModInput, public ModMetadata, public RemoteControllable { public: - DabModulator(EtiSource& etiSource, - mod_settings_t& settings); + DabModulator(EtiSource& etiSource, mod_settings_t& settings); - int process(Buffer* dataOut); - const char* name() { return "DabModulator"; } + int process(Buffer* dataOut) override; + const char* name() override { return "DabModulator"; } - virtual meta_vec_t process_metadata( - const meta_vec_t& metadataIn); + virtual meta_vec_t process_metadata(const meta_vec_t& metadataIn) override; /* Required to get the timestamp */ EtiSource* getEtiSource() { return &myEtiSource; } + /******* REMOTE CONTROL ********/ + virtual void set_parameter(const std::string& parameter, + const std::string& value) override; + + virtual const std::string get_parameter( + const std::string& parameter) const override; + protected: void setMode(unsigned mode); -- cgit v1.2.3