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.
remoteinputudphandler.h
Go to the documentation of this file.
1 // Copyright (C) 2016 Edouard Griffiths, F4EXB //
3 // //
4 // This program is free software; you can redistribute it and/or modify //
5 // it under the terms of the GNU General Public License as published by //
6 // the Free Software Foundation as version 3 of the License, or //
7 // (at your option) any later version. //
8 // //
9 // This program is distributed in the hope that it will be useful, //
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of //
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
12 // GNU General Public License V3 for more details. //
13 // //
14 // You should have received a copy of the GNU General Public License //
15 // along with this program. If not, see <http://www.gnu.org/licenses/>. //
17 
18 #ifndef PLUGINS_SAMPLESOURCE_REMOTEINPUT_REMOTEINPUTUDPHANDLER_H_
19 #define PLUGINS_SAMPLESOURCE_REMOTEINPUT_REMOTEINPUTUDPHANDLER_H_
20 
21 #include <QObject>
22 #include <QUdpSocket>
23 #include <QHostAddress>
24 #include <QMutex>
25 #include <QElapsedTimer>
26 
27 #include "remoteinputbuffer.h"
28 
29 #define REMOTEINPUT_THROTTLE_MS 50
30 
31 class SampleSinkFifo;
32 class MessageQueue;
33 class QTimer;
34 class DeviceAPI;
35 
36 class RemoteInputUDPHandler : public QObject
37 {
38  Q_OBJECT
39 public:
40  RemoteInputUDPHandler(SampleSinkFifo* sampleFifo, DeviceAPI *deviceAPI);
43  void start();
44  void stop();
45  void configureUDPLink(const QString& address, quint16 port);
46  void getRemoteAddress(QString& s) const { s = m_remoteAddress.toString(); }
47  int getNbOriginalBlocks() const { return RemoteNbOrginalBlocks; }
48  bool isStreaming() const { return m_masterTimerConnected; }
49  int getSampleRate() const { return m_samplerate; }
50  int getCenterFrequency() const { return m_centerFrequency; }
52  uint64_t getTVmSec() const { return m_tv_msec; }
55 public slots:
56  void dataReadyRead();
57 
58 private:
60  const QTimer& m_masterTimer;
62  bool m_running;
65  QUdpSocket *m_dataSocket;
66  QHostAddress m_dataAddress;
67  QHostAddress m_remoteAddress;
68  quint16 m_dataPort;
70  char *m_udpBuf;
78  std::size_t m_samplesCount;
79  QTimer *m_timer;
80 
81  QElapsedTimer m_elapsedTimer;
89 
90  void connectTimer();
91  void disconnectTimer();
92  void processData();
93 
94 private slots:
95  void tick();
96 };
97 
98 
99 
100 #endif /* PLUGINS_SAMPLESOURCE_REMOTEINPUT_REMOTEINPUTUDPHANDLER_H_ */
void setMessageQueueToGUI(MessageQueue *queue)
SampleSinkFifo * m_sampleFifo
void getRemoteAddress(QString &s) const
RemoteInputBuffer m_remoteInputBuffer
unsigned int uint32_t
Definition: rtptypes_win.h:46
int int32_t
Definition: rtptypes_win.h:45
void configureUDPLink(const QString &address, quint16 port)
RemoteInputUDPHandler(SampleSinkFifo *sampleFifo, DeviceAPI *deviceAPI)
MessageQueue * m_outputMessageQueueToGUI
int32_t getBufferGauge() const
unsigned __int64 uint64_t
Definition: rtptypes_win.h:48