mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-05-29 05:22:25 -04:00
M17 mod: implemented loop packet
This commit is contained in:
parent
5f2d2a0b2e
commit
1fc688c904
@ -61,6 +61,7 @@ M17Mod::M17Mod(DeviceAPI *deviceAPI) :
|
||||
m_sampleRate(48000)
|
||||
{
|
||||
setObjectName(m_channelId);
|
||||
m_loopPacketTimer.setInterval(m_settings.m_loopPacketInterval*1000);
|
||||
|
||||
m_thread = new QThread(this);
|
||||
m_basebandSource = new M17ModBaseband();
|
||||
@ -80,6 +81,12 @@ M17Mod::M17Mod(DeviceAPI *deviceAPI) :
|
||||
this,
|
||||
&M17Mod::networkManagerFinished
|
||||
);
|
||||
QObject::connect(
|
||||
&m_loopPacketTimer,
|
||||
&QTimer::timeout,
|
||||
this,
|
||||
&M17Mod::packetLoopTimeout
|
||||
);
|
||||
}
|
||||
|
||||
M17Mod::~M17Mod()
|
||||
@ -344,6 +351,23 @@ void M17Mod::applySettings(const M17ModSettings& settings, bool force)
|
||||
reverseAPIKeys.append("feedbackAudioDeviceName");
|
||||
}
|
||||
|
||||
if ((settings.m_loopPacketInterval != m_settings.m_loopPacketInterval) || force)
|
||||
{
|
||||
reverseAPIKeys.append("loopPacketInterval");
|
||||
m_loopPacketTimer.setInterval(settings.m_loopPacketInterval*1000);
|
||||
}
|
||||
|
||||
if ((settings.m_loopPacket != m_settings.m_loopPacket) || force)
|
||||
{
|
||||
reverseAPIKeys.append("loopPacket");
|
||||
|
||||
if (settings.m_loopPacket) {
|
||||
m_loopPacketTimer.start(settings.m_loopPacketInterval*1000);
|
||||
} else {
|
||||
m_loopPacketTimer.stop();
|
||||
}
|
||||
}
|
||||
|
||||
if (m_settings.m_streamIndex != settings.m_streamIndex)
|
||||
{
|
||||
if (m_deviceAPI->getSampleMIMO()) // change of stream is possible for MIMO devices only
|
||||
@ -762,6 +786,13 @@ void M17Mod::networkManagerFinished(QNetworkReply *reply)
|
||||
reply->deleteLater();
|
||||
}
|
||||
|
||||
void M17Mod::packetLoopTimeout()
|
||||
{
|
||||
if (m_settings.m_m17Mode == M17ModSettings::M17ModeM17Packet) {
|
||||
m_basebandSource->sendPacket();
|
||||
}
|
||||
}
|
||||
|
||||
double M17Mod::getMagSq() const
|
||||
{
|
||||
return m_basebandSource->getMagSq();
|
||||
@ -789,5 +820,7 @@ int M17Mod::getFeedbackAudioSampleRate() const
|
||||
|
||||
void M17Mod::sendPacket()
|
||||
{
|
||||
m_basebandSource->sendPacket();
|
||||
if (m_settings.m_m17Mode == M17ModSettings::M17ModeM17Packet) {
|
||||
m_basebandSource->sendPacket();
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +24,7 @@
|
||||
|
||||
#include <QMutex>
|
||||
#include <QNetworkRequest>
|
||||
#include <QTimer>
|
||||
|
||||
#include "dsp/basebandsamplesource.h"
|
||||
#include "channel/channelapi.h"
|
||||
@ -261,6 +262,8 @@ private:
|
||||
QNetworkAccessManager *m_networkManager;
|
||||
QNetworkRequest m_networkRequest;
|
||||
|
||||
QTimer m_loopPacketTimer;
|
||||
|
||||
virtual bool handleMessage(const Message& cmd);
|
||||
void applySettings(const M17ModSettings& settings, bool force = false);
|
||||
void sendSampleRateToDemodAnalyzer();
|
||||
@ -283,6 +286,7 @@ private:
|
||||
|
||||
private slots:
|
||||
void networkManagerFinished(QNetworkReply *reply);
|
||||
void packetLoopTimeout();
|
||||
};
|
||||
|
||||
|
||||
|
@ -298,14 +298,16 @@ void M17ModGUI::on_sendPacket_clicked(bool)
|
||||
|
||||
void M17ModGUI::on_loopPacket_toggled(bool checked)
|
||||
{
|
||||
(void) checked;
|
||||
// TODO
|
||||
m_settings.m_loopPacket = checked;
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void M17ModGUI::on_loopPacketInterval_valueChanged(int value)
|
||||
{
|
||||
ui->loopPacketIntervalText->setText(tr("%1").arg(value));
|
||||
m_settings.m_loopPacketInterval = value;
|
||||
(void) value;
|
||||
// TODO
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void M17ModGUI::on_packetDataWidget_currentChanged(int index)
|
||||
@ -544,6 +546,10 @@ void M17ModGUI::displaySettings()
|
||||
ui->insertPosition->setChecked(m_settings.m_insertPosition);
|
||||
ui->can->setValue(m_settings.m_can);
|
||||
|
||||
ui->loopPacket->setChecked(m_settings.m_loopPacket);
|
||||
ui->loopPacketInterval->setValue(m_settings.m_loopPacketInterval);
|
||||
ui->loopPacketIntervalText->setText(tr("%1").arg(m_settings.m_loopPacketInterval));
|
||||
|
||||
ui->smsText->setText(m_settings.m_smsText);
|
||||
|
||||
ui->aprsFromText->setText(m_settings.m_aprsCallsign);
|
||||
|
@ -61,6 +61,8 @@ void M17ModSettings::resetToDefaults()
|
||||
m_destCall = "";
|
||||
m_insertPosition = false;
|
||||
m_can = 10;
|
||||
m_loopPacket = false;
|
||||
m_loopPacketInterval = 60;
|
||||
m_smsText = "";
|
||||
m_aprsCallsign = "MYCALL";
|
||||
m_aprsTo = "APRS";
|
||||
@ -113,6 +115,8 @@ QByteArray M17ModSettings::serialize() const
|
||||
s.writeU32(43, m_can);
|
||||
|
||||
s.writeString(50, m_smsText);
|
||||
s.writeBool(51, m_loopPacket);
|
||||
s.writeU32(52, m_loopPacketInterval);
|
||||
|
||||
s.writeString(60, m_aprsCallsign);
|
||||
s.writeString(61, m_aprsTo);
|
||||
@ -200,6 +204,8 @@ bool M17ModSettings::deserialize(const QByteArray& data)
|
||||
m_can = utmp < 255 ? utmp : 255;
|
||||
|
||||
d.readString(50, &m_smsText, "");
|
||||
d.readBool(51, &m_loopPacket, false);
|
||||
d.readU32(52, &m_loopPacketInterval, 60);
|
||||
|
||||
d.readString(60, &m_aprsCallsign, "MYCALL");
|
||||
d.readString(61, &m_aprsTo, "");
|
||||
|
@ -81,6 +81,8 @@ struct M17ModSettings
|
||||
uint8_t m_can;
|
||||
|
||||
QString m_smsText;
|
||||
bool m_loopPacket;
|
||||
uint32_t m_loopPacketInterval;
|
||||
|
||||
QString m_aprsCallsign;
|
||||
QString m_aprsTo;
|
||||
|
Loading…
x
Reference in New Issue
Block a user