Added heard activity graph logging
This commit is contained in:
parent
e098fe75c2
commit
68c15aa83e
@ -4019,6 +4019,7 @@ void MainWindow::readFromStdout() //readFromStdout
|
|||||||
cmdcd.ackTimestamp = cmd.to == m_config.my_callsign() ? cmd.utcTimestamp : QDateTime{};
|
cmdcd.ackTimestamp = cmd.to == m_config.my_callsign() ? cmd.utcTimestamp : QDateTime{};
|
||||||
cmdcd.tdrift = cmd.tdrift;
|
cmdcd.tdrift = cmd.tdrift;
|
||||||
logCallActivity(cmdcd, false);
|
logCallActivity(cmdcd, false);
|
||||||
|
logHeardGraph(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
hasExistingMessageBuffer(cmd.freq, true, nullptr);
|
hasExistingMessageBuffer(cmd.freq, true, nullptr);
|
||||||
@ -4051,6 +4052,7 @@ void MainWindow::readFromStdout() //readFromStdout
|
|||||||
td.utcTimestamp = cmd.utcTimestamp;
|
td.utcTimestamp = cmd.utcTimestamp;
|
||||||
td.tdrift = cmd.tdrift;
|
td.tdrift = cmd.tdrift;
|
||||||
logCallActivity(td, true);
|
logCallActivity(td, true);
|
||||||
|
logHeardGraph(cmd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -4264,6 +4266,27 @@ void MainWindow::logCallActivity(CallDetail d, bool spot){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::logHeardGraph(CommandDetail d){
|
||||||
|
auto from = d.from;
|
||||||
|
auto to = d.to;
|
||||||
|
|
||||||
|
if(to == "@ALLCALL"){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(m_heardGraphOutgoing.contains(from)){
|
||||||
|
m_heardGraphOutgoing[from].insert(to);
|
||||||
|
} else {
|
||||||
|
m_heardGraphOutgoing[from] = { to };
|
||||||
|
}
|
||||||
|
|
||||||
|
if(m_heardGraphIncoming.contains(to)){
|
||||||
|
m_heardGraphIncoming[to].insert(from);
|
||||||
|
} else {
|
||||||
|
m_heardGraphIncoming[to] = { from };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QString MainWindow::lookupCallInCompoundCache(QString const &call){
|
QString MainWindow::lookupCallInCompoundCache(QString const &call){
|
||||||
QString myBaseCall = Radio::base_callsign(m_config.my_callsign());
|
QString myBaseCall = Radio::base_callsign(m_config.my_callsign());
|
||||||
if(call == myBaseCall){
|
if(call == myBaseCall){
|
||||||
@ -9407,6 +9430,7 @@ void MainWindow::processCommandActivity() {
|
|||||||
cd.utcTimestamp = d.utcTimestamp;
|
cd.utcTimestamp = d.utcTimestamp;
|
||||||
cd.tdrift = d.tdrift;
|
cd.tdrift = d.tdrift;
|
||||||
logCallActivity(cd, true);
|
logCallActivity(cd, true);
|
||||||
|
logHeardGraph(d);
|
||||||
|
|
||||||
// we're only responding to allcall, groupcalls, and our callsign at this point, so we'll end after logging the callsigns we've heard
|
// we're only responding to allcall, groupcalls, and our callsign at this point, so we'll end after logging the callsigns we've heard
|
||||||
if (!isAllCall && !toMe && !isGroupCall) {
|
if (!isAllCall && !toMe && !isGroupCall) {
|
||||||
@ -10454,6 +10478,17 @@ void MainWindow::displayCallActivity() {
|
|||||||
|
|
||||||
auto displayItem = new QTableWidgetItem(displayCall);
|
auto displayItem = new QTableWidgetItem(displayCall);
|
||||||
displayItem->setData(Qt::UserRole, QVariant(d.call));
|
displayItem->setData(Qt::UserRole, QVariant(d.call));
|
||||||
|
auto hearing = m_heardGraphOutgoing.value(d.call).values().join(", ");
|
||||||
|
auto heardby = m_heardGraphIncoming.value(d.call).values().join(", ");
|
||||||
|
QStringList tip = {};
|
||||||
|
if(!hearing.isEmpty()){
|
||||||
|
tip.append(QString("HEARING: %1").arg(hearing));
|
||||||
|
}
|
||||||
|
if(!heardby.isEmpty()){
|
||||||
|
tip.append(QString("HEARD BY: %1").arg(heardby));
|
||||||
|
}
|
||||||
|
displayItem->setToolTip(tip.join("\n"));
|
||||||
|
|
||||||
ui->tableWidgetCalls->setItem(row, col++, displayItem);
|
ui->tableWidgetCalls->setItem(row, col++, displayItem);
|
||||||
|
|
||||||
auto flagItem = new QTableWidgetItem(flag);
|
auto flagItem = new QTableWidgetItem(flag);
|
||||||
|
@ -101,6 +101,7 @@ class MainWindow : public QMainWindow
|
|||||||
Q_OBJECT;
|
Q_OBJECT;
|
||||||
|
|
||||||
struct CallDetail;
|
struct CallDetail;
|
||||||
|
struct CommandDetail;
|
||||||
public:
|
public:
|
||||||
using Frequency = Radio::Frequency;
|
using Frequency = Radio::Frequency;
|
||||||
using FrequencyDelta = Radio::FrequencyDelta;
|
using FrequencyDelta = Radio::FrequencyDelta;
|
||||||
@ -135,6 +136,7 @@ public slots:
|
|||||||
bool hasExistingMessageBufferToMe(int *pOffset);
|
bool hasExistingMessageBufferToMe(int *pOffset);
|
||||||
bool hasExistingMessageBuffer(int offset, bool drift, int *pPrevOffset);
|
bool hasExistingMessageBuffer(int offset, bool drift, int *pPrevOffset);
|
||||||
void logCallActivity(CallDetail d, bool spot=true);
|
void logCallActivity(CallDetail d, bool spot=true);
|
||||||
|
void logHeardGraph(CommandDetail d);
|
||||||
QString lookupCallInCompoundCache(QString const &call);
|
QString lookupCallInCompoundCache(QString const &call);
|
||||||
void cacheActivity(QString key);
|
void cacheActivity(QString key);
|
||||||
void restoreActivity(QString key);
|
void restoreActivity(QString key);
|
||||||
@ -817,6 +819,9 @@ private:
|
|||||||
QQueue<QString> m_txHeartbeatQueue; // ping frames to be sent
|
QQueue<QString> m_txHeartbeatQueue; // ping frames to be sent
|
||||||
QMap<QString, QDateTime> m_aprsCallCache;
|
QMap<QString, QDateTime> m_aprsCallCache;
|
||||||
|
|
||||||
|
QMap<QString, QSet<QString>> m_heardGraphOutgoing; // callsign -> [stations who've this callsign has heard]
|
||||||
|
QMap<QString, QSet<QString>> m_heardGraphIncoming; // callsign -> [stations who've heard this callsign]
|
||||||
|
|
||||||
QMap<QString, int> m_rxInboxCountCache; // call -> count
|
QMap<QString, int> m_rxInboxCountCache; // call -> count
|
||||||
|
|
||||||
QMap<QString, QMap<QString, CallDetail>> m_callActivityCache; // band -> call activity
|
QMap<QString, QMap<QString, CallDetail>> m_callActivityCache; // band -> call activity
|
||||||
|
Loading…
Reference in New Issue
Block a user