Skip to content

Commit

Permalink
added bitrate message for zmq receiver. added to msk demodulator atte…
Browse files Browse the repository at this point in the history
…mpt to change samplerate depening on zmq bitrate message
  • Loading branch information
jontio committed Jul 25, 2021
1 parent f5b5778 commit eb76851
Show file tree
Hide file tree
Showing 11 changed files with 51 additions and 45 deletions.
13 changes: 6 additions & 7 deletions JAERO/audioreceiver.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
#include "audioreceiver.h"
#include "QDebug"
#include <iostream>
#include "QDataStream"
#include "QDateTime"

#include <unistd.h>

void AudioReceiver::ZMQaudioStart(QString address, QString topic)
Expand All @@ -13,7 +9,6 @@ void AudioReceiver::ZMQaudioStart(QString address, QString topic)
setParameters(address,topic);
future = QtConcurrent::run([=]() {
process();
qDebug()<<"Thread finished";
return;
});
//wait till the thread is running so ZMQaudioStop functions correctly
Expand All @@ -37,17 +32,21 @@ void AudioReceiver::process()

char buf [recsize];
char topic[20];
unsigned char rate[4];
quint32 sampleRate;

running = true;

while(running)
{
zmq_recv(subscriber, topic, 20, 0);
int received = zmq_recv(subscriber, buf, recsize, ZMQ_DONTWAIT);
int received = zmq_recv(subscriber, rate, 4, ZMQ_DONTWAIT);
memcpy(&sampleRate, rate, 4);
received = zmq_recv(subscriber, buf, recsize, ZMQ_DONTWAIT);
if(received>=0)
{
QByteArray qdata(buf, received);
emit recAudio(qdata);
emit recAudio(qdata,sampleRate);
}
else
{
Expand Down
2 changes: 1 addition & 1 deletion JAERO/audioreceiver.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public slots:
QFuture<void> future;

signals:
void recAudio(const QByteArray & audio);
void recAudio(const QByteArray & audio,quint32 sampleRate);

};

Expand Down
8 changes: 5 additions & 3 deletions JAERO/burstmskdemodulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -759,9 +759,11 @@ void BurstMskDemodulator::DCDstatSlot(bool _dcd)
dcd=_dcd;
}

void BurstMskDemodulator::dataReceived(const QByteArray &audio)
void BurstMskDemodulator::dataReceived(const QByteArray &audio,quint32 sampleRate)
{

if(sampleRate!=Fs)
{
qDebug()<<"Sample rate not supported by demodulator";
}
writeData(audio, audio.length());

}
2 changes: 1 addition & 1 deletion JAERO/burstmskdemodulator.h
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ class BurstMskDemodulator : public QIODevice
public slots:
void CenterFreqChangedSlot(double freq_center);
void DCDstatSlot(bool dcd);
void dataReceived(const QByteArray &audio);
void dataReceived(const QByteArray &audio, quint32 sampleRate);


};
Expand Down
8 changes: 5 additions & 3 deletions JAERO/burstoqpskdemodulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -303,11 +303,13 @@ qint64 BurstOqpskDemodulator::writeData(const char *data, qint64 len)
return len;
}

void BurstOqpskDemodulator::dataReceived(const QByteArray &audio)
void BurstOqpskDemodulator::dataReceived(const QByteArray &audio,quint32 sampleRate)
{

if(sampleRate!=Fs)
{
qDebug()<<"Sample rate not supported by demodulator";
}
writeData(audio, audio.length());

}

void BurstOqpskDemodulator::writeDataSlot(const char *data, qint64 len)
Expand Down
2 changes: 1 addition & 1 deletion JAERO/burstoqpskdemodulator.h
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ class BurstOqpskDemodulator : public QIODevice
public slots:
void CenterFreqChangedSlot(double freq_center);
void writeDataSlot(const char *data, qint64 len);
void dataReceived(const QByteArray &audio);
void dataReceived(const QByteArray &audio, quint32 sampleRate);


};
Expand Down
32 changes: 16 additions & 16 deletions JAERO/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
disconnect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audiooqpskdemodulator,SLOT(CenterFreqChangedSlot(double)));
disconnect(audiooqpskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
disconnect(audiooqpskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)),audiooqpskdemodulator,SLOT(dataReceived(QByteArray)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)),audiooqpskdemodulator,SLOT(dataReceived(QByteArray,quint32)));

//some burstoqpsk connections
disconnect(audioburstoqpskdemodulator, SIGNAL(Plottables(double,double,double)), this,SLOT(PlottablesSlot(double,double,double)));
Expand All @@ -299,7 +299,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
disconnect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audioburstoqpskdemodulator,SLOT(CenterFreqChangedSlot(double)));
disconnect(audioburstoqpskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
disconnect(audioburstoqpskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)),audioburstoqpskdemodulator,SLOT(dataReceived(QByteArray)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)),audioburstoqpskdemodulator,SLOT(dataReceived(QByteArray,quint32)));

//burstdemod demod2
disconnect(audioburstoqpskdemodulator->demod2, SIGNAL(Plottables(double,double,double)), this,SLOT(PlottablesSlot(double,double,double)));
Expand Down Expand Up @@ -328,7 +328,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
disconnect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audioburstmskdemodulator,SLOT(CenterFreqChangedSlot(double)));
disconnect(audioburstmskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
disconnect(audioburstmskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)),audioburstmskdemodulator,SLOT(dataReceived(QByteArray)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)),audioburstmskdemodulator,SLOT(dataReceived(QByteArray,quint32)));

//some msk connections
connect(audiomskdemodulator, SIGNAL(Plottables(double,double,double)), this,SLOT(PlottablesSlot(double,double,double)));
Expand All @@ -343,7 +343,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
connect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audiomskdemodulator,SLOT(CenterFreqChangedSlot(double)));
connect(audiomskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
connect(audiomskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
connect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)), audiomskdemodulator, SLOT(dataReceived(QByteArray)), Qt::UniqueConnection);
connect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)), audiomskdemodulator, SLOT(dataReceived(QByteArray,quint32)), Qt::UniqueConnection);

break;
case OQPSK: //opqsk
Expand All @@ -360,7 +360,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
disconnect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audiomskdemodulator,SLOT(CenterFreqChangedSlot(double)));
disconnect(audiomskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
disconnect(audiomskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)),audiomskdemodulator,SLOT(dataReceived(QByteArray)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)),audiomskdemodulator,SLOT(dataReceived(QByteArray,quint32)));

//some burstoqpsk connections
disconnect(audioburstoqpskdemodulator, SIGNAL(Plottables(double,double,double)), this,SLOT(PlottablesSlot(double,double,double)));
Expand All @@ -375,7 +375,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
disconnect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audioburstoqpskdemodulator,SLOT(CenterFreqChangedSlot(double)));
disconnect(audioburstoqpskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
disconnect(audioburstoqpskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)),audioburstoqpskdemodulator,SLOT(dataReceived(QByteArray)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)),audioburstoqpskdemodulator,SLOT(dataReceived(QByteArray,quint32)));

//burstdemod demod2
disconnect(audioburstoqpskdemodulator->demod2, SIGNAL(Plottables(double,double,double)), this,SLOT(PlottablesSlot(double,double,double)));
Expand Down Expand Up @@ -404,7 +404,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
disconnect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audioburstmskdemodulator,SLOT(CenterFreqChangedSlot(double)));
disconnect(audioburstmskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
disconnect(audioburstmskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)),audioburstmskdemodulator,SLOT(dataReceived(QByteArray)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)),audioburstmskdemodulator,SLOT(dataReceived(QByteArray,quint32)));

//some oqpsk connections
connect(audiooqpskdemodulator, SIGNAL(Plottables(double,double,double)), this,SLOT(PlottablesSlot(double,double,double)));
Expand All @@ -419,7 +419,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
connect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audiooqpskdemodulator,SLOT(CenterFreqChangedSlot(double)));
connect(audiooqpskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
connect(audiooqpskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
connect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)), audiooqpskdemodulator, SLOT(dataReceived(QByteArray)), Qt::UniqueConnection);
connect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)), audiooqpskdemodulator, SLOT(dataReceived(QByteArray,quint32)), Qt::UniqueConnection);

break;
case BURSTOQPSK: //burstopqsk
Expand All @@ -437,7 +437,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
disconnect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audiomskdemodulator,SLOT(CenterFreqChangedSlot(double)));
disconnect(audiomskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
disconnect(audiomskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)),audiomskdemodulator,SLOT(dataReceived(QByteArray)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)),audiomskdemodulator,SLOT(dataReceived(QByteArray,quint32)));

//some oqpsk connections
disconnect(audiooqpskdemodulator, SIGNAL(Plottables(double,double,double)), this,SLOT(PlottablesSlot(double,double,double)));
Expand All @@ -452,7 +452,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
disconnect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audiooqpskdemodulator,SLOT(CenterFreqChangedSlot(double)));
disconnect(audiooqpskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
disconnect(audiooqpskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)),audiooqpskdemodulator,SLOT(dataReceived(QByteArray)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)),audiooqpskdemodulator,SLOT(dataReceived(QByteArray,quint32)));

//some burst msk connections
disconnect(audioburstmskdemodulator, SIGNAL(Plottables(double,double,double)), this,SLOT(PlottablesSlot(double,double,double)));
Expand All @@ -467,7 +467,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
disconnect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audioburstmskdemodulator,SLOT(CenterFreqChangedSlot(double)));
disconnect(audioburstmskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
disconnect(audioburstmskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)),audioburstmskdemodulator,SLOT(dataReceived(QByteArray)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)),audioburstmskdemodulator,SLOT(dataReceived(QByteArray,quint32)));

//some burstoqpsk connections
connect(audioburstoqpskdemodulator, SIGNAL(Plottables(double,double,double)), this,SLOT(PlottablesSlot(double,double,double)));
Expand All @@ -482,7 +482,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
connect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audioburstoqpskdemodulator,SLOT(CenterFreqChangedSlot(double)));
connect(audioburstoqpskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
connect(audioburstoqpskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
connect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)), audioburstoqpskdemodulator, SLOT(dataReceived(QByteArray)));
connect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)), audioburstoqpskdemodulator, SLOT(dataReceived(QByteArray,quint32)));

//burstdemod demod2
connect(audioburstoqpskdemodulator->demod2, SIGNAL(Plottables(double,double,double)), this,SLOT(PlottablesSlot(double,double,double)));
Expand Down Expand Up @@ -515,7 +515,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
disconnect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audiomskdemodulator,SLOT(CenterFreqChangedSlot(double)));
disconnect(audiomskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
disconnect(audiomskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)),audiomskdemodulator,SLOT(dataReceived(QByteArray)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)),audiomskdemodulator,SLOT(dataReceived(QByteArray,quint32)));

//some oqpsk connections
disconnect(audiooqpskdemodulator, SIGNAL(Plottables(double,double,double)), this,SLOT(PlottablesSlot(double,double,double)));
Expand All @@ -530,7 +530,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
disconnect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audiooqpskdemodulator,SLOT(CenterFreqChangedSlot(double)));
disconnect(audiooqpskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
disconnect(audiooqpskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)),audiooqpskdemodulator,SLOT(dataReceived(QByteArray)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)),audiooqpskdemodulator,SLOT(dataReceived(QByteArray,quint32)));

//some burstoqpsk connections
disconnect(audioburstoqpskdemodulator, SIGNAL(Plottables(double,double,double)), this,SLOT(PlottablesSlot(double,double,double)));
Expand All @@ -545,7 +545,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
disconnect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audioburstoqpskdemodulator,SLOT(CenterFreqChangedSlot(double)));
disconnect(audioburstoqpskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
disconnect(audioburstoqpskdemodulator, SIGNAL(SignalStatus(bool)),aerol,SLOT(SignalStatusSlot(bool)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)),audioburstoqpskdemodulator,SLOT(dataReceived(QByteArray)));
disconnect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)),audioburstoqpskdemodulator,SLOT(dataReceived(QByteArray,quint32)));

//burstdemod demod2
disconnect(audioburstoqpskdemodulator->demod2, SIGNAL(Plottables(double,double,double)), this,SLOT(PlottablesSlot(double,double,double)));
Expand Down Expand Up @@ -574,7 +574,7 @@ void MainWindow::selectdemodulatorconnections(DemodType demodtype)
connect(ui->spectrumdisplay, SIGNAL(CenterFreqChanged(double)), audioburstmskdemodulator,SLOT(CenterFreqChangedSlot(double)));
connect(audioburstmskdemodulator, SIGNAL(BitRateChanged(double,bool)), aerol,SLOT(setSettings(double,bool)));
connect(audioburstmskdemodulator, SIGNAL(SignalStatus(bool)), aerol,SLOT(SignalStatusSlot(bool)));
connect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&)), audioburstmskdemodulator, SLOT(dataReceived(QByteArray)));
connect(zmq_audio_receiver, SIGNAL(recAudio(const QByteArray&,quint32)), audioburstmskdemodulator, SLOT(dataReceived(QByteArray,quint32)));

break;
}
Expand Down
14 changes: 8 additions & 6 deletions JAERO/mskdemodulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ void MskDemodulator::invalidatesettings()

void MskDemodulator::setSettings(Settings _settings)
{
last_applied_settings=_settings;
if(_settings.Fs!=Fs)emit SampleRateChanged(_settings.Fs);
Fs=_settings.Fs;
lockingbw=_settings.lockingbw;
Expand Down Expand Up @@ -524,12 +525,13 @@ void MskDemodulator::DCDstatSlot(bool _dcd)

}


void MskDemodulator::dataReceived(const QByteArray &audio)
void MskDemodulator::dataReceived(const QByteArray &audio,quint32 sampleRate)
{

if(sampleRate!=Fs)
{
qDebug()<<"Sample rate different than expected. Trying to change demodulator sample rate";
last_applied_settings.Fs=sampleRate;
setSettings(last_applied_settings);
}
writeData(audio, audio.length());

}


3 changes: 2 additions & 1 deletion JAERO/mskdemodulator.h
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ class MskDemodulator : public QIODevice
int coarseCounter;
bool cpuReduce;

Settings last_applied_settings;

signals:
void ScatterPoints(const QVector<cpx_type> &buffer);
Expand All @@ -162,7 +163,7 @@ public slots:
void FreqOffsetEstimateSlot(double freq_offset_est);
void CenterFreqChangedSlot(double freq_center);
void DCDstatSlot(bool dcd);
void dataReceived(const QByteArray &audio);
void dataReceived(const QByteArray &audio, quint32 sampleRate);


};
Expand Down
10 changes: 5 additions & 5 deletions JAERO/oqpskdemodulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -679,11 +679,11 @@ void OqpskDemodulator::DCDstatSlot(bool _dcd)

}

void OqpskDemodulator::dataReceived(const QByteArray &audio)
void OqpskDemodulator::dataReceived(const QByteArray &audio,quint32 sampleRate)
{

if(sampleRate!=Fs)
{
qDebug()<<"Sample rate not supported by demodulator";
}
writeData(audio, audio.length());

}


2 changes: 1 addition & 1 deletion JAERO/oqpskdemodulator.h
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ public slots:
void FreqOffsetEstimateSlot(double freq_offset_est);
void CenterFreqChangedSlot(double freq_center);
void DCDstatSlot(bool _dcd);
void dataReceived(const QByteArray &audio);
void dataReceived(const QByteArray &audio, quint32 sampleRate);

};

Expand Down

0 comments on commit eb76851

Please sign in to comment.