mirror of
https://github.com/f4exb/sdrangel.git
synced 2026-07-25 19:44:12 -04:00
Demod Analyzer: fixed sample rate handling. Fixes #931
This commit is contained in:
@@ -78,6 +78,7 @@ PacketMod::PacketMod(DeviceAPI *deviceAPI) :
|
||||
|
||||
m_networkManager = new QNetworkAccessManager();
|
||||
connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*)));
|
||||
connect(&m_channelMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleChannelMessages()));
|
||||
}
|
||||
|
||||
PacketMod::~PacketMod()
|
||||
@@ -140,6 +141,13 @@ bool PacketMod::handleMessage(const Message& cmd)
|
||||
|
||||
return true;
|
||||
}
|
||||
else if (MainCore::MsgChannelDemodQuery::match(cmd))
|
||||
{
|
||||
qDebug() << "PacketMod::handleMessage: MsgChannelDemodQuery";
|
||||
sendSampleRateToDemodAnalyzer();
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
@@ -405,6 +413,25 @@ bool PacketMod::deserialize(const QByteArray& data)
|
||||
return success;
|
||||
}
|
||||
|
||||
void PacketMod::sendSampleRateToDemodAnalyzer()
|
||||
{
|
||||
QList<MessageQueue*> *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod");
|
||||
|
||||
if (messageQueues)
|
||||
{
|
||||
QList<MessageQueue*>::iterator it = messageQueues->begin();
|
||||
|
||||
for (; it != messageQueues->end(); ++it)
|
||||
{
|
||||
MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(
|
||||
this,
|
||||
getSourceChannelSampleRate()
|
||||
);
|
||||
(*it)->push(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int PacketMod::webapiSettingsGet(
|
||||
SWGSDRangel::SWGChannelSettings& response,
|
||||
QString& errorMessage)
|
||||
@@ -982,6 +1009,11 @@ uint32_t PacketMod::getNumberOfDeviceStreams() const
|
||||
return m_deviceAPI->getNbSinkStreams();
|
||||
}
|
||||
|
||||
int PacketMod::getSourceChannelSampleRate() const
|
||||
{
|
||||
return m_basebandSource->getSourceChannelSampleRate();
|
||||
}
|
||||
|
||||
void PacketMod::openUDP(const PacketModSettings& settings)
|
||||
{
|
||||
closeUDP();
|
||||
@@ -1012,3 +1044,15 @@ void PacketMod::udpRx()
|
||||
m_basebandSource->getInputMessageQueue()->push(msg);
|
||||
}
|
||||
}
|
||||
|
||||
void PacketMod::handleChannelMessages()
|
||||
{
|
||||
Message* message;
|
||||
|
||||
while ((message = m_channelMessageQueue.pop()) != nullptr)
|
||||
{
|
||||
if (handleMessage(*message)) {
|
||||
delete message;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,6 +171,7 @@ public:
|
||||
double getMagSq() const;
|
||||
void setLevelMeter(QObject *levelMeter);
|
||||
uint32_t getNumberOfDeviceStreams() const;
|
||||
int getSourceChannelSampleRate() const;
|
||||
|
||||
static const char* const m_channelIdURI;
|
||||
static const char* const m_channelId;
|
||||
@@ -197,6 +198,7 @@ private:
|
||||
QUdpSocket *m_udpSocket;
|
||||
|
||||
void applySettings(const PacketModSettings& settings, bool force = false);
|
||||
void sendSampleRateToDemodAnalyzer();
|
||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||
void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const PacketModSettings& settings, bool force);
|
||||
void sendChannelSettings(
|
||||
@@ -217,6 +219,7 @@ private:
|
||||
private slots:
|
||||
void networkManagerFinished(QNetworkReply *reply);
|
||||
void udpRx();
|
||||
void handleChannelMessages();
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -67,6 +67,7 @@ public:
|
||||
int getChannelSampleRate() const;
|
||||
void setSpectrumSampleSink(BasebandSampleSink* sampleSink) { m_source.setSpectrumSink(sampleSink); }
|
||||
void setChannel(ChannelAPI *channel);
|
||||
int getSourceChannelSampleRate() const { return m_source.getChannelSampleRate(); }
|
||||
|
||||
signals:
|
||||
/**
|
||||
|
||||
@@ -71,6 +71,7 @@ public:
|
||||
void addTXPacket(QByteArray data);
|
||||
void encodePacket(uint8_t *packet, int packet_length, uint8_t *crc_start, uint8_t *packet_end);
|
||||
void setChannel(ChannelAPI *channel) { m_channel = channel; }
|
||||
int getChannelSampleRate() const { return m_channelSampleRate; }
|
||||
|
||||
private:
|
||||
int m_channelSampleRate;
|
||||
|
||||
Reference in New Issue
Block a user