mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-05-24 11:12:27 -04:00
Aaronia RSA Rx: implemented change of server address and status indicator
This commit is contained in:
parent
be719f9653
commit
813e6580fd
@ -56,13 +56,13 @@ AaroniaRTSAGui::AaroniaRTSAGui(DeviceUISet *deviceUISet, QWidget* parent) :
|
||||
m_sampleSource = m_deviceUISet->m_deviceAPI->getSampleSource();
|
||||
|
||||
m_statusTooltips.push_back("Idle"); // 0
|
||||
m_statusTooltips.push_back("Connecting..."); // 1
|
||||
m_statusTooltips.push_back("Unstable"); // 1
|
||||
m_statusTooltips.push_back("Connected"); // 2
|
||||
m_statusTooltips.push_back("Error"); // 3
|
||||
m_statusTooltips.push_back("Disconnected"); // 4
|
||||
|
||||
m_statusColors.push_back("gray"); // Idle
|
||||
m_statusColors.push_back("rgb(232, 212, 35)"); // Connecting (yellow)
|
||||
m_statusColors.push_back("rgb(232, 212, 35)"); // Unstable (yellow)
|
||||
m_statusColors.push_back("rgb(35, 138, 35)"); // Connected (green)
|
||||
m_statusColors.push_back("rgb(232, 85, 85)"); // Error (red)
|
||||
m_statusColors.push_back("rgb(232, 85, 232)"); // Disconnected (magenta)
|
||||
@ -292,9 +292,9 @@ void AaroniaRTSAGui::updateSampleRateAndFrequency()
|
||||
m_deviceUISet->getSpectrum()->setSampleRate(m_deviceSampleRate);
|
||||
m_deviceUISet->getSpectrum()->setCenterFrequency(m_deviceCenterFrequency);
|
||||
ui->deviceRateText->setText(tr("%1M").arg((float)m_deviceSampleRate / 1000 / 1000));
|
||||
ui->centerFrequency->blockSignals(true);
|
||||
blockApplySettings(true);
|
||||
ui->centerFrequency->setValue(m_deviceCenterFrequency / 1000);
|
||||
ui->centerFrequency->blockSignals(true);
|
||||
blockApplySettings(false);
|
||||
}
|
||||
|
||||
void AaroniaRTSAGui::openDeviceSettingsDialog(const QPoint& p)
|
||||
|
@ -290,9 +290,9 @@ bool AaroniaRTSAInput::applySettings(const AaroniaRTSASettings& settings, const
|
||||
{
|
||||
emit setWorkerCenterFrequency(settings.m_centerFrequency);
|
||||
|
||||
DSPSignalNotification *notif = new DSPSignalNotification(
|
||||
getSampleRate(), settings.m_centerFrequency);
|
||||
m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif);
|
||||
// DSPSignalNotification *notif = new DSPSignalNotification(
|
||||
// getSampleRate(), settings.m_centerFrequency);
|
||||
// m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif);
|
||||
}
|
||||
|
||||
if (settingsKeys.contains("useReverseAPI"))
|
||||
|
@ -24,6 +24,15 @@
|
||||
|
||||
struct AaroniaRTSASettings {
|
||||
|
||||
enum ConnectionStatus
|
||||
{
|
||||
ConnectionIdle, // 0 - gray
|
||||
ConnectionUnstable, // 1 - yellow
|
||||
ConnectionOK, // 2 - green
|
||||
ConnectionError, // 3 - red
|
||||
ConnectionDisconnected // 4 - magenta
|
||||
};
|
||||
|
||||
quint64 m_centerFrequency;
|
||||
QString m_serverAddress;
|
||||
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "util/messagequeue.h"
|
||||
#include "dsp/dspcommands.h"
|
||||
|
||||
#include "aaroniartsasettings.h"
|
||||
#include "aaroniartsaworker.h"
|
||||
|
||||
MESSAGE_CLASS_DEFINITION(AaroniaRTSAWorker::MsgReportSampleRateAndFrequency, Message)
|
||||
@ -29,39 +30,58 @@ AaroniaRTSAWorker::AaroniaRTSAWorker(SampleSinkFifo* sampleFifo) :
|
||||
m_timer(this),
|
||||
m_samplesBuf(),
|
||||
m_sampleFifo(sampleFifo),
|
||||
m_centerFrequency(1450000),
|
||||
m_sampleRate(10000000),
|
||||
m_centerFrequency(0),
|
||||
m_sampleRate(1),
|
||||
m_inputMessageQueue(nullptr),
|
||||
m_status(0),
|
||||
m_status(AaroniaRTSASettings::ConnectionIdle),
|
||||
mReply(nullptr),
|
||||
m_convertBuffer(64e6)
|
||||
{
|
||||
// Initialize network manager
|
||||
// Initialize network managers
|
||||
mNetworkAccessManager = new QNetworkAccessManager(this);
|
||||
|
||||
// Request 16bit raw samples
|
||||
QUrl url("http://localhost:55123/stream?format=float32");
|
||||
// m_serverAddress = "localhost:55123";
|
||||
// QUrl url(tr("http://%1/stream?format=float32").arg(m_serverAddress));
|
||||
|
||||
QNetworkRequest req(url);
|
||||
mReply = mNetworkAccessManager->get(req);
|
||||
// QNetworkRequest req(url);
|
||||
// mReply = mNetworkAccessManager->get(req);
|
||||
|
||||
// Connect Qt slots to network events
|
||||
connect(mReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onError(QNetworkReply::NetworkError)));
|
||||
connect(mReply, SIGNAL(finished()), this, SLOT(onFinished()));
|
||||
connect(mReply, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
|
||||
// // Connect Qt slots to network events
|
||||
// connect(mReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onError(QNetworkReply::NetworkError)));
|
||||
// connect(mReply, SIGNAL(finished()), this, SLOT(onFinished()));
|
||||
// connect(mReply, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
|
||||
|
||||
mPrevTime = 0;
|
||||
mPacketSamples = 0;
|
||||
}
|
||||
|
||||
AaroniaRTSAWorker::~AaroniaRTSAWorker()
|
||||
{
|
||||
if (mReply)
|
||||
{
|
||||
// disconnect previous sugnals
|
||||
disconnect(mReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onError(QNetworkReply::NetworkError)));
|
||||
disconnect(mReply, SIGNAL(finished()), this, SLOT(onFinished()));
|
||||
disconnect(mReply, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
|
||||
|
||||
mReply->abort();
|
||||
mReply->deleteLater();
|
||||
}
|
||||
|
||||
mNetworkAccessManager->deleteLater();
|
||||
}
|
||||
|
||||
void AaroniaRTSAWorker::onSocketError(QAbstractSocket::SocketError error)
|
||||
{
|
||||
(void) error;
|
||||
m_status = 3;
|
||||
emit updateStatus(3);
|
||||
m_status = AaroniaRTSASettings::ConnectionError;
|
||||
emit updateStatus(m_status);
|
||||
}
|
||||
|
||||
void AaroniaRTSAWorker::sendCenterFrequency()
|
||||
{
|
||||
qDebug("AaroniaRTSAWorker::sendCenterFrequency: %llu", m_centerFrequency);
|
||||
//if (!m_webSocket.isValid())
|
||||
// return;
|
||||
|
||||
@ -84,21 +104,34 @@ void AaroniaRTSAWorker::onCenterFrequencyChanged(quint64 centerFrequency)
|
||||
|
||||
void AaroniaRTSAWorker::onServerAddressChanged(QString serverAddress)
|
||||
{
|
||||
/*if (m_serverAddress == serverAddress) {
|
||||
return;
|
||||
m_status = AaroniaRTSASettings::ConnectionDisconnected;
|
||||
updateStatus(m_status);
|
||||
|
||||
if (mReply)
|
||||
{
|
||||
// disconnect previous sugnals
|
||||
disconnect(mReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onError(QNetworkReply::NetworkError)));
|
||||
disconnect(mReply, SIGNAL(finished()), this, SLOT(onFinished()));
|
||||
disconnect(mReply, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
|
||||
|
||||
mReply->abort();
|
||||
mReply->deleteLater();
|
||||
}
|
||||
|
||||
QUrl url(tr("http://%1/stream?format=float32").arg(serverAddress));
|
||||
QNetworkRequest req(url);
|
||||
mReply = mNetworkAccessManager->get(req);
|
||||
|
||||
// Connect Qt slots to network events
|
||||
connect(mReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onError(QNetworkReply::NetworkError)));
|
||||
connect(mReply, SIGNAL(finished()), this, SLOT(onFinished()));
|
||||
connect(mReply, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
|
||||
|
||||
mPrevTime = 0;
|
||||
mPacketSamples = 0;
|
||||
m_sampleRate = 1;
|
||||
m_centerFrequency = 0;
|
||||
m_serverAddress = serverAddress;
|
||||
|
||||
m_status = 1;
|
||||
emit updateStatus(1);
|
||||
|
||||
QString url("ws://");
|
||||
url.append(m_serverAddress);
|
||||
url.append("/rtsa/");
|
||||
url.append(QString::number(QDateTime::currentMSecsSinceEpoch()));
|
||||
url.append("/SND");
|
||||
m_webSocket.open(QUrl(url));*/
|
||||
}
|
||||
|
||||
void AaroniaRTSAWorker::tick()
|
||||
@ -109,8 +142,11 @@ void AaroniaRTSAWorker::tick()
|
||||
|
||||
void AaroniaRTSAWorker::onError(QNetworkReply::NetworkError code)
|
||||
{
|
||||
(void) code;
|
||||
QTextStream qerr(stderr);
|
||||
qerr << "Network Error: " + mReply->errorString();
|
||||
m_status = 3;
|
||||
emit updateStatus(3);
|
||||
}
|
||||
|
||||
void AaroniaRTSAWorker::onFinished()
|
||||
@ -127,6 +163,12 @@ void AaroniaRTSAWorker::onFinished()
|
||||
// bytes received from the socket
|
||||
void AaroniaRTSAWorker::onReadyRead()
|
||||
{
|
||||
if (m_status != AaroniaRTSASettings::ConnectionOK)
|
||||
{
|
||||
m_status = AaroniaRTSASettings::ConnectionOK;
|
||||
emit updateStatus(m_status);
|
||||
}
|
||||
|
||||
QTextStream qout(stdout);
|
||||
|
||||
// read as many bytes as possible into input buffer
|
||||
|
@ -63,6 +63,7 @@ public:
|
||||
};
|
||||
|
||||
AaroniaRTSAWorker(SampleSinkFifo* sampleFifo);
|
||||
~AaroniaRTSAWorker();
|
||||
int getStatus() const { return m_status; }
|
||||
void setInputMessageQueue(MessageQueue *messageQueue) { m_inputMessageQueue = messageQueue; }
|
||||
|
||||
@ -83,21 +84,16 @@ private:
|
||||
|
||||
|
||||
// QT htttp client
|
||||
QNetworkAccessManager * mNetworkAccessManager;
|
||||
|
||||
QNetworkAccessManager *mNetworkAccessManager;
|
||||
// Reply from the HTTP server
|
||||
QNetworkReply * mReply;
|
||||
|
||||
QNetworkReply *mReply;
|
||||
// Input buffer
|
||||
QByteArray mBuffer;
|
||||
|
||||
// Number of IQ sample pairs in the current packet
|
||||
int mPacketSamples;
|
||||
|
||||
// Previous sample end time to check for packet loss
|
||||
double mPrevTime;
|
||||
|
||||
|
||||
//Decimators<qint32, float, SDR_RX_SAMP_SZ, 32, true> m_decimatorsIQ;
|
||||
DecimatorsFI<true> m_decimatorsFloatIQ;
|
||||
SampleVector m_convertBuffer;
|
||||
@ -113,7 +109,6 @@ public slots:
|
||||
|
||||
private slots:
|
||||
void onSocketError(QAbstractSocket::SocketError error);
|
||||
|
||||
void onError(QNetworkReply::NetworkError code);
|
||||
void onFinished(void);
|
||||
void onReadyRead(void);
|
||||
|
Loading…
x
Reference in New Issue
Block a user