summaryrefslogtreecommitdiffstats
path: root/src/DabMod.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/DabMod.cpp')
-rw-r--r--src/DabMod.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/DabMod.cpp b/src/DabMod.cpp
index 922f9e4..d624a12 100644
--- a/src/DabMod.cpp
+++ b/src/DabMod.cpp
@@ -56,6 +56,7 @@
#include "output/SDR.h"
#include "output/UHD.h"
#include "output/Soapy.h"
+#include "output/Lime.h"
#include "OutputZeroMQ.h"
#include "InputReader.h"
#include "PcDebug.h"
@@ -149,6 +150,14 @@ static void printModSettings(const mod_settings_t& mod_settings)
mod_settings.sdr_device_config.masterClockRate << "\n";
}
#endif
+#if defined(HAVE_LIMESDR)
+ else if (mod_settings.useLimeOutput) {
+ ss << " LimeSDR\n"
+ " Device: " << mod_settings.sdr_device_config.device << "\n" <<
+ " master_clock_rate: " <<
+ mod_settings.sdr_device_config.masterClockRate << "\n";
+ }
+#endif
else if (mod_settings.useZeroMQOutput) {
ss << " ZeroMQ\n" <<
" Listening on: " << mod_settings.outputName << "\n" <<
@@ -232,6 +241,16 @@ static shared_ptr<ModOutput> prepare_output(
rcs.enrol((Output::SDR*)output.get());
}
#endif
+#if defined(HAVE_LIMESDR)
+ else if (s.useLimeOutput) {
+ /* We normalise the same way as for the UHD output */
+ s.normalise = 1.0f / normalise_factor;
+ s.sdr_device_config.sampleRate = s.outputRate;
+ auto limedevice = make_shared<Output::Lime>(s.sdr_device_config);
+ output = make_shared<Output::SDR>(s.sdr_device_config, limedevice);
+ rcs.enrol((Output::SDR*)output.get());
+ }
+#endif
#if defined(HAVE_ZEROMQ)
else if (s.useZeroMQOutput) {
/* We normalise the same way as for the UHD output */
@@ -281,7 +300,8 @@ int launch_modulator(int argc, char* argv[])
if (not (mod_settings.useFileOutput or
mod_settings.useUHDOutput or
mod_settings.useZeroMQOutput or
- mod_settings.useSoapyOutput)) {
+ mod_settings.useSoapyOutput or
+ mod_settings.useLimeOutput)) {
throw std::runtime_error("Configuration error: Output not specified");
}