mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-09-05 06:37:51 -04:00
Websocket spectrum: fixed spectrum sending
This commit is contained in:
parent
a09b66c38b
commit
2a2039eb4f
@ -27,11 +27,20 @@ WSSpectrum::WSSpectrum(QObject *parent) :
|
|||||||
m_port(8887),
|
m_port(8887),
|
||||||
m_webSocketServer(nullptr)
|
m_webSocketServer(nullptr)
|
||||||
{
|
{
|
||||||
|
connect(this,
|
||||||
|
SIGNAL(payloadToSend(const QByteArray&)),
|
||||||
|
this,
|
||||||
|
SLOT(sendPayload(const QByteArray&)),
|
||||||
|
Qt::QueuedConnection);
|
||||||
m_timer.start();
|
m_timer.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
WSSpectrum::~WSSpectrum()
|
WSSpectrum::~WSSpectrum()
|
||||||
{
|
{
|
||||||
|
disconnect(this,
|
||||||
|
SIGNAL(payloadToSend(const QByteArray&)),
|
||||||
|
this,
|
||||||
|
SLOT(sendPayload(const QByteArray&)));
|
||||||
closeSocket();
|
closeSocket();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +85,7 @@ QString WSSpectrum::getWebSocketIdentifier(QWebSocket *peer)
|
|||||||
void WSSpectrum::onNewConnection()
|
void WSSpectrum::onNewConnection()
|
||||||
{
|
{
|
||||||
auto pSocket = m_webSocketServer->nextPendingConnection();
|
auto pSocket = m_webSocketServer->nextPendingConnection();
|
||||||
qDebug() << " WSSpectrum::onNewConnection: " << getWebSocketIdentifier(pSocket) << " connected";
|
qDebug() << "WSSpectrum::onNewConnection: " << getWebSocketIdentifier(pSocket) << " connected";
|
||||||
pSocket->setParent(this);
|
pSocket->setParent(this);
|
||||||
|
|
||||||
connect(pSocket, &QWebSocket::textMessageReceived, this, &WSSpectrum::processClientMessage);
|
connect(pSocket, &QWebSocket::textMessageReceived, this, &WSSpectrum::processClientMessage);
|
||||||
@ -132,7 +141,12 @@ void WSSpectrum::newSpectrum(
|
|||||||
linear
|
linear
|
||||||
);
|
);
|
||||||
//qDebug() << "WSSpectrum::newSpectrum: " << payload.size() << " bytes in " << elapsed << " ms";
|
//qDebug() << "WSSpectrum::newSpectrum: " << payload.size() << " bytes in " << elapsed << " ms";
|
||||||
|
emit payloadToSend(payload);
|
||||||
|
}
|
||||||
|
|
||||||
|
void WSSpectrum::sendPayload(const QByteArray& payload)
|
||||||
|
{
|
||||||
|
//qDebug() << "WSSpectrum::sendPayload: " << payload.size() << " bytes";
|
||||||
for (QWebSocket *pClient : qAsConst(m_clients)) {
|
for (QWebSocket *pClient : qAsConst(m_clients)) {
|
||||||
pClient->sendBinaryMessage(payload);
|
pClient->sendBinaryMessage(payload);
|
||||||
}
|
}
|
||||||
@ -152,14 +166,14 @@ void WSSpectrum::buildPayload(
|
|||||||
{
|
{
|
||||||
QBuffer buffer(&bytes);
|
QBuffer buffer(&bytes);
|
||||||
buffer.open(QIODevice::WriteOnly);
|
buffer.open(QIODevice::WriteOnly);
|
||||||
buffer.write((char*) &fftSize, sizeof(int));
|
buffer.write((char*) ¢erFrequency, sizeof(uint64_t)); // 0
|
||||||
buffer.write((char*) &fftTimeMs, sizeof(int64_t));
|
buffer.write((char*) &fftTimeMs, sizeof(int64_t)); // 8
|
||||||
buffer.write((char*) &refLevel, sizeof(float));
|
buffer.write((char*) &fftSize, sizeof(int)); // 16
|
||||||
buffer.write((char*) &powerRange, sizeof(float));
|
buffer.write((char*) &refLevel, sizeof(float)); // 20
|
||||||
buffer.write((char*) ¢erFrequency, sizeof(uint64_t));
|
buffer.write((char*) &powerRange, sizeof(float)); // 24
|
||||||
buffer.write((char*) &bandwidth, sizeof(int));
|
buffer.write((char*) &bandwidth, sizeof(int)); // 28
|
||||||
int linearInt = linear ? 1 : 0;
|
int linearInt = linear ? 1 : 0;
|
||||||
buffer.write((char*) &linearInt, sizeof(int));
|
buffer.write((char*) &linearInt, sizeof(int)); // 32
|
||||||
buffer.write((char*) spectrum.data(), fftSize*sizeof(Real));
|
buffer.write((char*) spectrum.data(), fftSize*sizeof(Real)); // 36
|
||||||
buffer.close();
|
buffer.close();
|
||||||
}
|
}
|
||||||
|
@ -54,10 +54,14 @@ public:
|
|||||||
bool linear
|
bool linear
|
||||||
);
|
);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void payloadToSend(const QByteArray& payload);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onNewConnection();
|
void onNewConnection();
|
||||||
void processClientMessage(const QString &message);
|
void processClientMessage(const QString &message);
|
||||||
void socketDisconnected();
|
void socketDisconnected();
|
||||||
|
void sendPayload(const QByteArray& payload);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QHostAddress m_listeningAddress;
|
QHostAddress m_listeningAddress;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user