mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-26 17:58:43 -05:00
Merge pull request #1569 from srcejon/ft8_map
FT8 Demod: Display caller on Map feature
This commit is contained in:
commit
13da8f2b22
@ -31,7 +31,9 @@
|
|||||||
#include "gui/dialpopup.h"
|
#include "gui/dialpopup.h"
|
||||||
#include "gui/dialogpositioner.h"
|
#include "gui/dialogpositioner.h"
|
||||||
#include "util/db.h"
|
#include "util/db.h"
|
||||||
|
#include "util/maidenhead.h"
|
||||||
#include "maincore.h"
|
#include "maincore.h"
|
||||||
|
#include "SWGMapItem.h"
|
||||||
|
|
||||||
#include "ui_ft8demodgui.h"
|
#include "ui_ft8demodgui.h"
|
||||||
#include "ft8demodgui.h"
|
#include "ft8demodgui.h"
|
||||||
@ -733,6 +735,19 @@ void FT8DemodGUI::messagesReceived(const QList<FT8Message>& messages)
|
|||||||
locItem->setText(message.loc);
|
locItem->setText(message.loc);
|
||||||
infoItem->setText(message.decoderInfo);
|
infoItem->setText(message.decoderInfo);
|
||||||
|
|
||||||
|
// If message contains a Maidenhead locator, display caller on Map feature
|
||||||
|
float latitude, longitude;
|
||||||
|
if ((message.loc.size() == 4) && Maidenhead::fromMaidenhead(message.loc, latitude, longitude))
|
||||||
|
{
|
||||||
|
QString text = QString("%1\nMode: FT8\nFrequency: %2 Hz\nLocator: %3\nSNR: %4\nLast heard: %5")
|
||||||
|
.arg(message.call2)
|
||||||
|
.arg(m_deviceCenterFrequency + m_settings.m_inputFrequencyOffset)
|
||||||
|
.arg(message.loc)
|
||||||
|
.arg(message.snr)
|
||||||
|
.arg(QDateTime::currentDateTime().toString("dd MMM yyyy HH:mm:ss"));
|
||||||
|
sendToMap(message.call2, text, latitude, longitude);
|
||||||
|
}
|
||||||
|
|
||||||
filterMessageRow(row);
|
filterMessageRow(row);
|
||||||
|
|
||||||
row++;
|
row++;
|
||||||
@ -745,6 +760,36 @@ void FT8DemodGUI::messagesReceived(const QList<FT8Message>& messages)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FT8DemodGUI::sendToMap(const QString& caller, const QString& text, float latitude, float longitude)
|
||||||
|
{
|
||||||
|
QList<ObjectPipe*> mapPipes;
|
||||||
|
MainCore::instance()->getMessagePipes().getMessagePipes(m_ft8Demod, "mapitems", mapPipes);
|
||||||
|
|
||||||
|
for (const auto& pipe : mapPipes)
|
||||||
|
{
|
||||||
|
MessageQueue *messageQueue = qobject_cast<MessageQueue*>(pipe->m_element);
|
||||||
|
SWGSDRangel::SWGMapItem *swgMapItem = new SWGSDRangel::SWGMapItem();
|
||||||
|
swgMapItem->setName(new QString(caller));
|
||||||
|
swgMapItem->setLatitude(latitude);
|
||||||
|
swgMapItem->setLongitude(longitude);
|
||||||
|
swgMapItem->setAltitude(0);
|
||||||
|
swgMapItem->setAltitudeReference(1); // CLAMP_TO_GROUND
|
||||||
|
swgMapItem->setPositionDateTime(new QString(QDateTime::currentDateTime().toString(Qt::ISODateWithMs)));
|
||||||
|
swgMapItem->setImageRotation(0);
|
||||||
|
swgMapItem->setText(new QString(text));
|
||||||
|
swgMapItem->setImage(new QString("antenna.png"));
|
||||||
|
swgMapItem->setModel(new QString("antenna.glb"));
|
||||||
|
swgMapItem->setModelAltitudeOffset(0.0);
|
||||||
|
swgMapItem->setLabel(new QString(caller));
|
||||||
|
swgMapItem->setLabelAltitudeOffset(4.5);
|
||||||
|
swgMapItem->setFixedPosition(false);
|
||||||
|
swgMapItem->setOrientation(0);
|
||||||
|
swgMapItem->setHeading(0);
|
||||||
|
MainCore::MsgMapItem *msg = MainCore::MsgMapItem::create(m_ft8Demod, swgMapItem);
|
||||||
|
messageQueue->push(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void FT8DemodGUI::populateBandPresets()
|
void FT8DemodGUI::populateBandPresets()
|
||||||
{
|
{
|
||||||
ui->bandPreset->blockSignals(true);
|
ui->bandPreset->blockSignals(true);
|
||||||
|
@ -108,6 +108,7 @@ private:
|
|||||||
void messagesReceived(const QList<FT8Message>& messages);
|
void messagesReceived(const QList<FT8Message>& messages);
|
||||||
void populateBandPresets();
|
void populateBandPresets();
|
||||||
void filterMessageRow(int row);
|
void filterMessageRow(int row);
|
||||||
|
void sendToMap(const QString& call2, const QString& text, float latitude, float longitude);
|
||||||
|
|
||||||
enum MessageCol {
|
enum MessageCol {
|
||||||
MESSAGE_COL_UTC,
|
MESSAGE_COL_UTC,
|
||||||
|
@ -30,6 +30,7 @@ const QStringList MapSettings::m_pipeTypes = {
|
|||||||
QStringLiteral("AIS"),
|
QStringLiteral("AIS"),
|
||||||
QStringLiteral("APRS"),
|
QStringLiteral("APRS"),
|
||||||
QStringLiteral("APTDemod"),
|
QStringLiteral("APTDemod"),
|
||||||
|
QStringLiteral("FT8Demod"),
|
||||||
QStringLiteral("Radiosonde"),
|
QStringLiteral("Radiosonde"),
|
||||||
QStringLiteral("StarTracker"),
|
QStringLiteral("StarTracker"),
|
||||||
QStringLiteral("SatelliteTracker")
|
QStringLiteral("SatelliteTracker")
|
||||||
@ -40,6 +41,7 @@ const QStringList MapSettings::m_pipeURIs = {
|
|||||||
QStringLiteral("sdrangel.feature.ais"),
|
QStringLiteral("sdrangel.feature.ais"),
|
||||||
QStringLiteral("sdrangel.feature.aprs"),
|
QStringLiteral("sdrangel.feature.aprs"),
|
||||||
QStringLiteral("sdrangel.channel.aptdemod"),
|
QStringLiteral("sdrangel.channel.aptdemod"),
|
||||||
|
QStringLiteral("sdrangel.channel.ft8demod"),
|
||||||
QStringLiteral("sdrangel.feature.radiosonde"),
|
QStringLiteral("sdrangel.feature.radiosonde"),
|
||||||
QStringLiteral("sdrangel.feature.startracker"),
|
QStringLiteral("sdrangel.feature.startracker"),
|
||||||
QStringLiteral("sdrangel.feature.satellitetracker")
|
QStringLiteral("sdrangel.feature.satellitetracker")
|
||||||
@ -69,6 +71,7 @@ MapSettings::MapSettings() :
|
|||||||
m_itemSettings.insert("Radiosonde", new MapItemSettings("Radiosonde", QColor(102, 0, 102), false, 11, modelMinPixelSize));
|
m_itemSettings.insert("Radiosonde", new MapItemSettings("Radiosonde", QColor(102, 0, 102), false, 11, modelMinPixelSize));
|
||||||
m_itemSettings.insert("Radio Time Transmitters", new MapItemSettings("Radio Time Transmitters", QColor(255, 0, 0), true, 8));
|
m_itemSettings.insert("Radio Time Transmitters", new MapItemSettings("Radio Time Transmitters", QColor(255, 0, 0), true, 8));
|
||||||
m_itemSettings.insert("Radar", new MapItemSettings("Radar", QColor(255, 0, 0), true, 8));
|
m_itemSettings.insert("Radar", new MapItemSettings("Radar", QColor(255, 0, 0), true, 8));
|
||||||
|
m_itemSettings.insert("FT8Demod", new MapItemSettings("FT8Demod", QColor(0, 192, 255), true, 8));
|
||||||
|
|
||||||
MapItemSettings *ionosondeItemSettings = new MapItemSettings("Ionosonde Stations", QColor(255, 255, 0), true, 4);
|
MapItemSettings *ionosondeItemSettings = new MapItemSettings("Ionosonde Stations", QColor(255, 255, 0), true, 4);
|
||||||
ionosondeItemSettings->m_display2DIcon = false;
|
ionosondeItemSettings->m_display2DIcon = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user