diff --git a/plugins/channelrx/demodm17/m17demodgui.ui b/plugins/channelrx/demodm17/m17demodgui.ui
index 7625d83bb..a2ddb2ec2 100644
--- a/plugins/channelrx/demodm17/m17demodgui.ui
+++ b/plugins/channelrx/demodm17/m17demodgui.ui
@@ -732,7 +732,7 @@
QTabWidget::East
- 2
+ 0
diff --git a/plugins/channeltx/modm17/m17modgui.ui b/plugins/channeltx/modm17/m17modgui.ui
index aaff57bf9..6f10a3830 100644
--- a/plugins/channeltx/modm17/m17modgui.ui
+++ b/plugins/channeltx/modm17/m17modgui.ui
@@ -1112,7 +1112,7 @@
-
- Insert position (latitude and longitude)
+ Alternate status and position (latitude and longitude) packets
...
diff --git a/plugins/channeltx/modm17/m17modprocessor.cpp b/plugins/channeltx/modm17/m17modprocessor.cpp
index f221bf698..5b9d87103 100644
--- a/plugins/channeltx/modm17/m17modprocessor.cpp
+++ b/plugins/channeltx/modm17/m17modprocessor.cpp
@@ -66,9 +66,18 @@ bool M17ModProcessor::handleMessage(const Message& cmd)
M17ModAX25 modAX25;
QString strData;
- if (notif.getInsertPosition()) {
- strData += "!" + formatAPRSPosition();
- } else {
+ if (notif.getInsertPosition())
+ {
+ if (m_insertPositionToggle) {
+ strData += "!" + formatAPRSPosition();
+ } else {
+ strData = notif.getData();
+ }
+
+ m_insertPositionToggle = !m_insertPositionToggle;
+ }
+ else
+ {
strData = notif.getData();
}
diff --git a/plugins/channeltx/modm17/m17modprocessor.h b/plugins/channeltx/modm17/m17modprocessor.h
index 641105ef3..5f45ee087 100644
--- a/plugins/channeltx/modm17/m17modprocessor.h
+++ b/plugins/channeltx/modm17/m17modprocessor.h
@@ -188,6 +188,7 @@ public:
MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; }
M17ModFIFO *getBasebandFifo() { return &m_basebandFifo; }
+ void resetInsertPositionToggle() { m_insertPositionToggle = true; }
private:
MessageQueue m_inputMessageQueue;
@@ -202,6 +203,7 @@ private:
int m_audioFrameIndex;
uint16_t m_audioFrameNumber;
struct CODEC2 *m_codec2;
+ bool m_insertPositionToggle;
bool handleMessage(const Message& cmd);
void processPacket(const QString& sourceCall, const QString& destCall, uint8_t can, const QByteArray& packetBytes);
diff --git a/plugins/channeltx/modm17/m17modsource.cpp b/plugins/channeltx/modm17/m17modsource.cpp
index a0259b4ec..f513381f7 100644
--- a/plugins/channeltx/modm17/m17modsource.cpp
+++ b/plugins/channeltx/modm17/m17modsource.cpp
@@ -523,6 +523,13 @@ void M17ModSource::applySettings(const M17ModSettings& settings, bool force)
}
}
+ if ((settings.m_insertPosition != m_settings.m_insertPosition) || force)
+ {
+ if (settings.m_insertPosition) {
+ m_processor->resetInsertPositionToggle();
+ }
+ }
+
m_settings = settings;
}