diff --git a/Readme.md b/Readme.md index 31ae7382a..c2a1ffaae 100644 --- a/Readme.md +++ b/Readme.md @@ -35,11 +35,12 @@ From version 2 SDRangel can integrate more than one hardware device running conc

Transmission support

-From version 3 transmission or signal generation is supported for BladeRF, HackRF (since version 3.1) and LimeSDR (since version 3.4) using a sample sink plugin. These plugins are: +From version 3 transmission or signal generation is supported for BladeRF, HackRF (since version 3.1), LimeSDR (since version 3.4) and PlutoSDR (since version 3.7.8) using a sample sink plugin. These plugins are: - [BladeRF output plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/bladerfoutput) limited support in Windows - [HackRF output plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/hackrfoutput) - [LimeSDR output plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/limesdroutput) + - [PlutoSDR output plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/plutosdroutput) - [File output or file sink plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/filesink) - [Remote device via Network with SDRdaemon](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/sdrdaemonsink) Linux only diff --git a/debian/changelog b/debian/changelog index e9e933ad0..a3b390acd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,15 @@ +sdrangel (3.7.8-1) unstable; urgency=medium + + * PlutoSDR: restored and fixed Tx support + * LimeSDR: reworked the start/stop stream so it does not need the workaround delay + + -- Edouard Griffiths, F4EXB Sun, 28 Oct 2017 18:14:18 +0200 + sdrangel (3.7.7-1) unstable; urgency=medium * PlutoSDR: removed Tx support - -- Edouard Griffiths, F4EXB Sun, 28 Oct 2017 23:14:18 +0200 + -- Edouard Griffiths, F4EXB Sat, 27 Oct 2017 23:14:18 +0200 sdrangel (3.7.6-1) unstable; urgency=medium diff --git a/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp b/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp index a8501c1fd..86583a99e 100644 --- a/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp +++ b/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor LimeSDROutputPlugin::m_pluginDescriptor = { QString("LimeSDR Output"), - QString("3.7.6"), + QString("3.7.8"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesink/limesdroutput/limesdroutputthread.cpp b/plugins/samplesink/limesdroutput/limesdroutputthread.cpp index 655428bc0..985c9ecfb 100644 --- a/plugins/samplesink/limesdroutput/limesdroutputthread.cpp +++ b/plugins/samplesink/limesdroutput/limesdroutputthread.cpp @@ -38,6 +38,12 @@ void LimeSDROutputThread::startWork() { if (m_running) return; // return if running already + if (LMS_StartStream(m_stream) < 0) { + qCritical("LimeSDROutputThread::startWork: could not start stream"); + } else { + qDebug("LimeSDROutputThread::startWork: stream started"); + } + m_startWaitMutex.lock(); start(); while(!m_running) @@ -51,6 +57,12 @@ void LimeSDROutputThread::stopWork() m_running = false; wait(); + + if (LMS_StopStream(m_stream) < 0) { + qCritical("LimeSDROutputThread::stopWork: could not stop stream"); + } else { + qDebug("LimeSDROutputThread::stopWork: stream stopped"); + } } void LimeSDROutputThread::setLog2Interpolation(unsigned int log2_interp) @@ -65,9 +77,7 @@ void LimeSDROutputThread::setFcPos(int fcPos) void LimeSDROutputThread::run() { - //int count, msleep, mdelta; int res; - //lms_stream_status_t streamStatus; lms_stream_meta_t metadata; //Use metadata for additional control over sample receive function behaviour metadata.flushPartialPacket = false; //Do not discard data remainder when read size differs from packet size @@ -76,13 +86,6 @@ void LimeSDROutputThread::run() m_running = true; m_startWaiter.wakeAll(); - if (LMS_StartStream(m_stream) < 0) { - qCritical("LimeSDROutputThread::run: could not start stream"); - } else { - usleep(100000); - qDebug("LimeSDROutputThread::run: stream started"); - } - while (m_running) { callback(m_buf, LIMESDROUTPUT_BLOCKSIZE); @@ -98,33 +101,6 @@ void LimeSDROutputThread::run() { qDebug("LimeSDROutputThread::run written %d/%d samples", res, LIMESDROUTPUT_BLOCKSIZE); } - -// usleep(msleep); -// -// if (count < 10) -// { -// count++; -// } -// else -// { -// if (LMS_GetStreamStatus(m_stream, &streamStatus) == 0) -// { -// if (streamStatus.fifoFilledCount < (4*streamStatus.fifoSize)/5) { // FIFO at 80% -// msleep -= mdelta; -// } else { -// msleep += mdelta; -// } -// } -// -// count = 0; -// } - } - - if (LMS_StopStream(m_stream) < 0) { - qCritical("LimeSDROutputThread::run: could not stop stream"); - } else { - usleep(100000); - qDebug("LimeSDROutputThread::run: stream stopped"); } m_running = false; diff --git a/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp b/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp index 91965f4d5..7b9ce3789 100644 --- a/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp +++ b/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp @@ -31,7 +31,7 @@ const PluginDescriptor LimeSDRInputPlugin::m_pluginDescriptor = { QString("LimeSDR Input"), - QString("3.7.6"), + QString("3.7.8"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/limesdrinput/limesdrinputthread.cpp b/plugins/samplesource/limesdrinput/limesdrinputthread.cpp index 985c865e4..27e4375f3 100644 --- a/plugins/samplesource/limesdrinput/limesdrinputthread.cpp +++ b/plugins/samplesource/limesdrinput/limesdrinputthread.cpp @@ -39,6 +39,12 @@ void LimeSDRInputThread::startWork() { if (m_running) return; // return if running already + if (LMS_StartStream(m_stream) < 0) { + qCritical("LimeSDRInputThread::startWork: could not start stream"); + } else { + qDebug("LimeSDRInputThread::startWork: stream started"); + } + m_startWaitMutex.lock(); start(); while(!m_running) @@ -52,6 +58,12 @@ void LimeSDRInputThread::stopWork() m_running = false; wait(); + + if (LMS_StopStream(m_stream) < 0) { + qCritical("LimeSDRInputThread::stopWork: could not stop stream"); + } else { + qDebug("LimeSDRInputThread::stopWork: stream stopped"); + } } void LimeSDRInputThread::setLog2Decimation(unsigned int log2_decim) @@ -75,13 +87,6 @@ void LimeSDRInputThread::run() m_running = true; m_startWaiter.wakeAll(); - if (LMS_StartStream(m_stream) < 0) { - qCritical("LimeSDRInputThread::run: could not start stream"); - } else { - usleep(100000); - qDebug("LimeSDRInputThread::run: stream started"); - } - while (m_running) { if ((res = LMS_RecvStream(m_stream, (void *) m_buf, LIMESDR_BLOCKSIZE, &metadata, 1000)) < 0) @@ -93,14 +98,6 @@ void LimeSDRInputThread::run() callback(m_buf, 2 * res); } - - if (LMS_StopStream(m_stream) < 0) { - qCritical("LimeSDRInputThread::run: could not stop stream"); - } else { - usleep(100000); - qDebug("LimeSDRInputThread::run: stream stopped"); - } - m_running = false; }