diff options
Diffstat (limited to 'src/OutputUHD.cpp')
-rw-r--r-- | src/OutputUHD.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/OutputUHD.cpp b/src/OutputUHD.cpp index 971f33b..0195841 100644 --- a/src/OutputUHD.cpp +++ b/src/OutputUHD.cpp @@ -27,6 +27,7 @@ #include "OutputUHD.h" #include "PcDebug.h" #include "Log.h" +#include "RemoteControl.h" #include <iostream> #include <assert.h> @@ -42,6 +43,7 @@ OutputUHD::OutputUHD(const char* device, unsigned sampleRate, double frequency, int txgain, bool enableSync, bool muteNoTimestamps, Logger& logger) : ModOutput(ModFormat(1), ModFormat(0)), + RemoteControl("uhd"), myLogger(logger), mySampleRate(sampleRate), myTxGain(txgain), @@ -52,6 +54,9 @@ OutputUHD::OutputUHD(const char* device, unsigned sampleRate, MDEBUG("OutputUHD::OutputUHD(device: %s) @ %p\n", device, this); + /* register the parameters that can be remote controlled */ + RC_ADD_PARAMETER("txgain", "UHD analog daughterboard TX gain") + myDevice = device; #if ENABLE_UHD @@ -499,3 +504,36 @@ loopend: workerbuffer = (workerbuffer + 1) % 2; } } + + +virtual void OutputUHD::set_parameter(string parameter, string value) +{ + stringstream ss(value); + ss.exceptions ( stringstream::failbit | stringstream::badbit ); + + if (parameter == "txgain") { + ss >> myTxStream; +#if ENABLE_UHD + myUsrp->set_tx_gain(myTxGain); +#endif + } + else { + stringstream ss; + ss << "Parameter '" << parameter << "' is not exported by controllable " << get_rc_name(); + throw ParameterError(ss.str()); + } +} + +virtual string OutputUHD::get_parameter(string parameter) +{ + stringstream ss; + if (parameter == "txgain") { + ss << myTxGain; + } + else { + ss << "Parameter '" << parameter << "' is not exported by controllable " << get_rc_name(); + throw ParameterError(ss.str()); + } + return ss.str(); +} + |