diff --git a/sdrbase/dsp/devicesamplesource.cpp b/sdrbase/dsp/devicesamplesource.cpp new file mode 100644 index 000000000..5c3e7cf3e --- /dev/null +++ b/sdrbase/dsp/devicesamplesource.cpp @@ -0,0 +1,40 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2012 maintech GmbH, Otto-Hahn-Str. 15, 97204 Hoechberg, Germany // +// written by Christian Daniel // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include + +DeviceSampleSource::DeviceSampleSource() +{ + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); +} + +DeviceSampleSource::~DeviceSampleSource() +{ +} + +void DeviceSampleSource::handleInputMessages() +{ + Message* message; + + while ((message = m_inputMessageQueue.pop()) != 0) + { + if (handleMessage(*message)) + { + delete message; + } + } +} diff --git a/sdrbase/dsp/devicesamplesource.h b/sdrbase/dsp/devicesamplesource.h new file mode 100644 index 000000000..d1ef88c43 --- /dev/null +++ b/sdrbase/dsp/devicesamplesource.h @@ -0,0 +1,56 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2015 F4EXB // +// written by Edouard Griffiths // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_SAMPLESOURCE_H +#define INCLUDE_SAMPLESOURCE_H + +#include +#include "dsp/samplefifo.h" +#include "util/message.h" +#include "util/messagequeue.h" +#include "util/export.h" + +class SDRANGEL_API DeviceSampleSource : public QObject { + Q_OBJECT +public: + DeviceSampleSource(); + virtual ~DeviceSampleSource(); + + virtual bool init(const Message& cmd) = 0; + virtual bool start(int device) = 0; + virtual void stop() = 0; + + virtual const QString& getDeviceDescription() const = 0; + virtual int getSampleRate() const = 0; //!< Sample rate exposed by the source + virtual quint64 getCenterFrequency() const = 0; //!< Center frequency exposed by the source + + virtual bool handleMessage(const Message& message) = 0; + + MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } + MessageQueue *getOutputMessageQueueToGUI() { return &m_outputMessageQueueToGUI; } + SampleFifo* getSampleFifo() { return &m_sampleFifo; } + +protected slots: + void handleInputMessages(); + +protected: + SampleFifo m_sampleFifo; + MessageQueue m_inputMessageQueue; //!< Input queue to the source + MessageQueue m_outputMessageQueueToGUI; //!< Output queue specialized for the source GUI +}; + +#endif // INCLUDE_SAMPLESOURCE_H