SDRAngel  4.11.5
Developer docs for <a href="https://github.com/f4exb/sdrangel">SDRangel<\a>, an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.
threadedbasebandsamplesink.h
Go to the documentation of this file.
1 // Copyright (C) 2015 F4EXB //
3 // written by Edouard Griffiths //
4 // //
5 // This program is free software; you can redistribute it and/or modify //
6 // it under the terms of the GNU General Public License as published by //
7 // the Free Software Foundation as version 3 of the License, or //
8 // (at your option) any later version. //
9 // //
10 // This program is distributed in the hope that it will be useful, //
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of //
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
13 // GNU General Public License V3 for more details. //
14 // //
15 // You should have received a copy of the GNU General Public License //
16 // along with this program. If not, see <http://www.gnu.org/licenses/>. //
18 
19 #ifndef INCLUDE_THREADEDSAMPLESINK_H
20 #define INCLUDE_THREADEDSAMPLESINK_H
21 
22 #include <dsp/basebandsamplesink.h>
23 #include <QMutex>
24 
25 #include "samplesinkfifo.h"
26 #include "util/messagequeue.h"
27 #include "export.h"
28 
29 class BasebandSampleSink;
30 class QThread;
31 
37  Q_OBJECT
38 
39 public:
40  ThreadedBasebandSampleSinkFifo(BasebandSampleSink* sampleSink, std::size_t size = 1<<18);
42  void writeToFifo(SampleVector::const_iterator& begin, SampleVector::const_iterator& end);
43 
46 
47 public slots:
48  void handleFifoData();
49 };
50 
54 class SDRBASE_API ThreadedBasebandSampleSink : public QObject {
55  Q_OBJECT
56 
57 public:
58  ThreadedBasebandSampleSink(BasebandSampleSink* sampleSink, QObject *parent = 0);
60 
61  const BasebandSampleSink *getSink() const { return m_basebandSampleSink; }
62 
63  void start();
64  void stop();
65 
66  bool handleSinkMessage(const Message& cmd);
67  void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly);
68 
69  QString getSampleSinkObjectName() const;
70  const QThread *getThread() const { return m_thread; }
71 
72 protected:
73 
74  QThread *m_thread;
77 };
78 
79 #endif // INCLUDE_THREADEDSAMPLESINK_H
QThread * m_thread
The thead object.
ThreadedBasebandSampleSinkFifo * m_threadedBasebandSampleSinkFifo
BasebandSampleSink * m_basebandSampleSink
#define SDRBASE_API
Definition: export.h:40
const BasebandSampleSink * getSink() const