Updated and fixed GRID spotting and APRSIS groups
This commit is contained in:
parent
40eb00eff3
commit
6bbf7321ce
@ -2168,6 +2168,10 @@ bool Configuration::impl::validate ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach(auto group, splitGroups(ui_->groups_line_edit->text().toUpper().trimmed(), false)){
|
foreach(auto group, splitGroups(ui_->groups_line_edit->text().toUpper().trimmed(), false)){
|
||||||
|
if(!Varicode::isGroupAllowed(group)){
|
||||||
|
MessageBox::critical_message (this, QString("%1 is not an available group").arg(group));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if(!Varicode::isCompoundCallsign(group)){
|
if(!Varicode::isCompoundCallsign(group)){
|
||||||
MessageBox::critical_message (this, QString("%1 is not a valid group").arg(group));
|
MessageBox::critical_message (this, QString("%1 is not a valid group").arg(group));
|
||||||
return false;
|
return false;
|
||||||
|
@ -4713,33 +4713,14 @@ void MainWindow::spotCmd(CommandDetail cmd){
|
|||||||
m_spotClient->enqueueCmd(cmdStr, cmd.from, cmd.to, cmd.relayPath, cmd.text, cmd.grid, cmd.extra, m_freqNominal + cmd.freq, cmd.snr);
|
m_spotClient->enqueueCmd(cmdStr, cmd.from, cmd.to, cmd.relayPath, cmd.text, cmd.grid, cmd.extra, m_freqNominal + cmd.freq, cmd.snr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::spotAPRSCmd(CommandDetail d){
|
void MainWindow::spotAPRSMsg(CommandDetail d){
|
||||||
if(!m_config.spot_to_reporting_networks()) return;
|
if(!m_config.spot_to_reporting_networks()) return;
|
||||||
|
|
||||||
if(d.cmd == " GRID"){
|
|
||||||
auto grids = Varicode::parseGrids(d.text);
|
|
||||||
foreach(auto grid, grids){
|
|
||||||
CallDetail cd = {};
|
|
||||||
cd.bits = d.bits;
|
|
||||||
cd.call = d.from;
|
|
||||||
cd.freq = d.freq;
|
|
||||||
cd.grid = grid;
|
|
||||||
cd.snr = d.snr;
|
|
||||||
cd.utcTimestamp = d.utcTimestamp;
|
|
||||||
cd.tdrift = d.tdrift;
|
|
||||||
cd.mode = currentMode();
|
|
||||||
|
|
||||||
m_aprsCallCache.remove(cd.call);
|
|
||||||
m_aprsCallCache.remove(APRSISClient::replaceCallsignSuffixWithSSID(cd.call, Radio::base_callsign(cd.call)));
|
|
||||||
|
|
||||||
logCallActivity(cd, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// for raw messages, ensure the passcode is valid first
|
|
||||||
if(!m_aprsClient->isPasscodeValid()) return;
|
if(!m_aprsClient->isPasscodeValid()) return;
|
||||||
|
|
||||||
|
// ONLY MSG IS APPROPRIATE HERE, e.g.,
|
||||||
|
// KN4CRD: @APRSIS MSG :EMAIL-2 :email@domain.com booya{
|
||||||
|
if(d.cmd != " MSG") return;
|
||||||
|
|
||||||
qDebug() << "enqueueing third party text" << d.from << d.text;
|
qDebug() << "enqueueing third party text" << d.from << d.text;
|
||||||
m_aprsClient->enqueueThirdParty(Radio::base_callsign(d.from), d.text);
|
m_aprsClient->enqueueThirdParty(Radio::base_callsign(d.from), d.text);
|
||||||
}
|
}
|
||||||
@ -10349,9 +10330,31 @@ void MainWindow::processCommandActivity() {
|
|||||||
foreach(auto call, calls){
|
foreach(auto call, calls){
|
||||||
logHeardGraph(d.from, call);
|
logHeardGraph(d.from, call);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// make sure this is explicit
|
// PROCESS BUFFERED GRID FOR EVERYONE
|
||||||
continue;
|
if(d.cmd == " GRID"){
|
||||||
|
// 1. parse grids
|
||||||
|
// 2. log it to our call activity
|
||||||
|
auto grids = Varicode::parseGrids(d.text);
|
||||||
|
foreach(auto grid, grids){
|
||||||
|
CallDetail cd = {};
|
||||||
|
cd.bits = d.bits;
|
||||||
|
cd.call = d.from;
|
||||||
|
cd.freq = d.freq;
|
||||||
|
cd.grid = grid;
|
||||||
|
cd.snr = d.snr;
|
||||||
|
cd.utcTimestamp = d.utcTimestamp;
|
||||||
|
cd.tdrift = d.tdrift;
|
||||||
|
cd.mode = currentMode();
|
||||||
|
|
||||||
|
if(d.to == "@APRSIS"){
|
||||||
|
m_aprsCallCache.remove(cd.call);
|
||||||
|
m_aprsCallCache.remove(APRSISClient::replaceCallsignSuffixWithSSID(cd.call, Radio::base_callsign(cd.call)));
|
||||||
|
}
|
||||||
|
|
||||||
|
logCallActivity(cd, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// PROCESS @JS8NET SPOTS FOR EVERYONE
|
// PROCESS @JS8NET SPOTS FOR EVERYONE
|
||||||
@ -10359,9 +10362,9 @@ void MainWindow::processCommandActivity() {
|
|||||||
spotCmd(d);
|
spotCmd(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
// PROCESS @APRSIS SPOTS FOR EVERYONE
|
// PROCESS @APRSIS MSG SPOTS FOR EVERYONE
|
||||||
if (d.to == "@APRSIS"){
|
if (d.to == "@APRSIS"){
|
||||||
spotAPRSCmd(d);
|
spotAPRSMsg(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
// PREPARE CMD TEXT STRING
|
// PREPARE CMD TEXT STRING
|
||||||
|
@ -945,7 +945,7 @@ private:
|
|||||||
void aprsSetLocal ();
|
void aprsSetLocal ();
|
||||||
void spotReport(int offset, int snr, QString callsign, QString grid);
|
void spotReport(int offset, int snr, QString callsign, QString grid);
|
||||||
void spotCmd(CommandDetail cmd);
|
void spotCmd(CommandDetail cmd);
|
||||||
void spotAPRSCmd(CommandDetail d);
|
void spotAPRSMsg(CommandDetail d);
|
||||||
void pskLogReport(QString mode, int offset, int snr, QString callsign, QString grid);
|
void pskLogReport(QString mode, int offset, int snr, QString callsign, QString grid);
|
||||||
void aprsLogReport(int offset, int snr, QString callsign, QString grid);
|
void aprsLogReport(int offset, int snr, QString callsign, QString grid);
|
||||||
Radio::Frequency dialFrequency();
|
Radio::Frequency dialFrequency();
|
||||||
|
@ -1217,6 +1217,13 @@ bool Varicode::isCompoundCallsign(const QString &callsign){
|
|||||||
return isValid;
|
return isValid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Varicode::isGroupAllowed(const QString &group){
|
||||||
|
const QSet<QString> disallowed = {
|
||||||
|
"@APRSIS"
|
||||||
|
};
|
||||||
|
return !disallowed.contains(group);
|
||||||
|
}
|
||||||
|
|
||||||
// CQCQCQ EM73
|
// CQCQCQ EM73
|
||||||
// CQ DX EM73
|
// CQ DX EM73
|
||||||
// CQ QRP EM73
|
// CQ QRP EM73
|
||||||
|
@ -148,6 +148,7 @@ public:
|
|||||||
static bool isCommandAutoreply(const QString &cmd);
|
static bool isCommandAutoreply(const QString &cmd);
|
||||||
static bool isValidCallsign(const QString &callsign, bool *pIsCompound);
|
static bool isValidCallsign(const QString &callsign, bool *pIsCompound);
|
||||||
static bool isCompoundCallsign(const QString &callsign);
|
static bool isCompoundCallsign(const QString &callsign);
|
||||||
|
static bool isGroupAllowed(const QString &group);
|
||||||
|
|
||||||
static QString packHeartbeatMessage(QString const &text, QString const&callsign, int *n);
|
static QString packHeartbeatMessage(QString const &text, QString const&callsign, int *n);
|
||||||
static QStringList unpackHeartbeatMessage(const QString &text, quint8 *pType, bool *isAlt, quint8 *pBits3);
|
static QStringList unpackHeartbeatMessage(const QString &text, quint8 *pType, bool *isAlt, quint8 *pBits3);
|
||||||
|
Loading…
Reference in New Issue
Block a user