Replace GROUPCALL with actual group calls
This commit is contained in:
parent
47a7c06854
commit
121bb0fdb5
@ -936,8 +936,8 @@ QString Configuration::my_station() const
|
|||||||
return station.trimmed();
|
return station.trimmed();
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList Configuration::my_groups() const {
|
QSet<QString> Configuration::my_groups() const {
|
||||||
return m_->my_groups_;
|
return QSet<QString>::fromList(m_->my_groups_);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Configuration::my_qth() const
|
QString Configuration::my_qth() const
|
||||||
|
@ -98,7 +98,7 @@ public:
|
|||||||
QString my_callsign () const;
|
QString my_callsign () const;
|
||||||
QString my_grid () const;
|
QString my_grid () const;
|
||||||
QString my_station () const;
|
QString my_station () const;
|
||||||
QStringList my_groups() const;
|
QSet<QString> my_groups() const;
|
||||||
int activity_aging() const;
|
int activity_aging() const;
|
||||||
int callsign_aging() const;
|
int callsign_aging() const;
|
||||||
QString my_qth () const;
|
QString my_qth () const;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>750</width>
|
<width>750</width>
|
||||||
<height>735</height>
|
<height>748</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -247,7 +247,7 @@
|
|||||||
<item row="5" column="1">
|
<item row="5" column="1">
|
||||||
<widget class="QLineEdit" name="groups_line_edit">
|
<widget class="QLineEdit" name="groups_line_edit">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>@ALLCALL, @GROUPCALL</string>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="placeholderText">
|
<property name="placeholderText">
|
||||||
<string/>
|
<string/>
|
||||||
|
@ -152,7 +152,6 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const int NEAR_THRESHOLD_RX = 10;
|
const int NEAR_THRESHOLD_RX = 10;
|
||||||
const int NEAR_THRESHOLD_GROUPCALL = 125;
|
|
||||||
|
|
||||||
int volatile itone[NUM_ISCAT_SYMBOLS]; //Audio tones for all Tx symbols
|
int volatile itone[NUM_ISCAT_SYMBOLS]; //Audio tones for all Tx symbols
|
||||||
int volatile icw[NUM_CW_SYMBOLS]; //Dits for CW ID
|
int volatile icw[NUM_CW_SYMBOLS]; //Dits for CW ID
|
||||||
@ -4976,7 +4975,7 @@ void MainWindow::clearActivity(){
|
|||||||
m_lastTxMessage.clear();
|
m_lastTxMessage.clear();
|
||||||
|
|
||||||
clearTableWidget(ui->tableWidgetCalls);
|
clearTableWidget(ui->tableWidgetCalls);
|
||||||
createAllcallTableRow(ui->tableWidgetCalls, false);
|
createAllcallTableRows(ui->tableWidgetCalls, "");
|
||||||
|
|
||||||
clearTableWidget(ui->tableWidgetRXAll);
|
clearTableWidget(ui->tableWidgetRXAll);
|
||||||
|
|
||||||
@ -4990,28 +4989,14 @@ void MainWindow::clearActivity(){
|
|||||||
update_dynamic_property(ui->extFreeTextMsgEdit, "transmitting", false);
|
update_dynamic_property(ui->extFreeTextMsgEdit, "transmitting", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::createAllcallTableRow(QTableWidget *table, bool selected){
|
void MainWindow::createAllcallTableRows(QTableWidget *table, QString const &selectedCall){
|
||||||
table->insertRow(table->rowCount());
|
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
auto now = DriftingDateTime::currentDateTimeUtc();
|
auto now = DriftingDateTime::currentDateTimeUtc();
|
||||||
int callsignAging = m_config.callsign_aging();
|
int callsignAging = m_config.callsign_aging();
|
||||||
if(ui->selcalButton->isChecked()){
|
|
||||||
int freq = currentFreqOffset();
|
|
||||||
foreach(auto cd, m_callActivity.values()){
|
|
||||||
if (callsignAging && cd.utcTimestamp.secsTo(now) / 60 >= callsignAging) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(abs(freq - cd.freq) <= NEAR_THRESHOLD_GROUPCALL){
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
auto item = new QTableWidgetItem(count == 0 ? QString("GROUPCALL") : QString("GROUPCALL (%1)").arg(count));
|
|
||||||
item->setData(Qt::UserRole, QVariant("GROUPCALL"));
|
|
||||||
table->setItem(table->rowCount() - 1, 0, item);
|
|
||||||
table->setSpan(table->rowCount() - 1, 0, 1, table->columnCount());
|
|
||||||
|
|
||||||
} else {
|
if(!ui->selcalButton->isChecked()){
|
||||||
|
table->insertRow(table->rowCount());
|
||||||
|
|
||||||
foreach(auto cd, m_callActivity.values()){
|
foreach(auto cd, m_callActivity.values()){
|
||||||
if (callsignAging && cd.utcTimestamp.secsTo(now) / 60 >= callsignAging) {
|
if (callsignAging && cd.utcTimestamp.secsTo(now) / 60 >= callsignAging) {
|
||||||
continue;
|
continue;
|
||||||
@ -5022,10 +5007,24 @@ void MainWindow::createAllcallTableRow(QTableWidget *table, bool selected){
|
|||||||
item->setData(Qt::UserRole, QVariant("ALLCALL"));
|
item->setData(Qt::UserRole, QVariant("ALLCALL"));
|
||||||
table->setItem(table->rowCount() - 1, 0, item);
|
table->setItem(table->rowCount() - 1, 0, item);
|
||||||
table->setSpan(table->rowCount() - 1, 0, 1, table->columnCount());
|
table->setSpan(table->rowCount() - 1, 0, 1, table->columnCount());
|
||||||
|
if(selectedCall == "ALLCALL"){
|
||||||
|
table->item(table->rowCount()-1, 0)->setSelected(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selected) {
|
auto groups = m_config.my_groups().toList();
|
||||||
table->item(table->rowCount()-1, 0)->setSelected(true);
|
qSort(groups);
|
||||||
|
foreach(auto group, groups){
|
||||||
|
table->insertRow(table->rowCount());
|
||||||
|
|
||||||
|
auto item = new QTableWidgetItem(group);
|
||||||
|
item->setData(Qt::UserRole, QVariant(group));
|
||||||
|
table->setItem(table->rowCount() - 1, 0, item);
|
||||||
|
table->setSpan(table->rowCount() - 1, 0, 1, table->columnCount());
|
||||||
|
|
||||||
|
if(selectedCall == group){
|
||||||
|
table->item(table->rowCount()-1, 0)->setSelected(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6201,7 +6200,7 @@ void MainWindow::on_clearAction_triggered(QObject * sender){
|
|||||||
if(sender == ui->tableWidgetCalls){
|
if(sender == ui->tableWidgetCalls){
|
||||||
m_callActivity.clear();
|
m_callActivity.clear();
|
||||||
clearTableWidget((ui->tableWidgetCalls));
|
clearTableWidget((ui->tableWidgetCalls));
|
||||||
createAllcallTableRow(ui->tableWidgetCalls, false);
|
createAllcallTableRows(ui->tableWidgetCalls, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(sender == ui->extFreeTextMsgEdit){
|
if(sender == ui->extFreeTextMsgEdit){
|
||||||
@ -8087,7 +8086,7 @@ bool MainWindow::isAllCallIncluded(const QString &text){
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool MainWindow::isGroupCallIncluded(const QString &text){
|
bool MainWindow::isGroupCallIncluded(const QString &text){
|
||||||
return text.contains("GROUPCALL");
|
return m_config.my_groups().contains(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::processActivity(bool force) {
|
void MainWindow::processActivity(bool force) {
|
||||||
@ -8131,7 +8130,7 @@ void MainWindow::processRxActivity() {
|
|||||||
if(hasExistingMessageBuffer(d.freq, false, &prevOffset) && (
|
if(hasExistingMessageBuffer(d.freq, false, &prevOffset) && (
|
||||||
(m_messageBuffer[prevOffset].cmd.to == m_config.my_callsign()) ||
|
(m_messageBuffer[prevOffset].cmd.to == m_config.my_callsign()) ||
|
||||||
(isAllCallIncluded(m_messageBuffer[prevOffset].cmd.to) && !ui->selcalButton->isChecked()) ||
|
(isAllCallIncluded(m_messageBuffer[prevOffset].cmd.to) && !ui->selcalButton->isChecked()) ||
|
||||||
(isGroupCallIncluded(m_messageBuffer[prevOffset].cmd.to) && abs(prevOffset - freqOffset) <= NEAR_THRESHOLD_GROUPCALL)
|
(isGroupCallIncluded(m_messageBuffer[prevOffset].cmd.to))
|
||||||
)
|
)
|
||||||
){
|
){
|
||||||
d.isBuffered = true;
|
d.isBuffered = true;
|
||||||
@ -8414,8 +8413,7 @@ void MainWindow::processCommandActivity() {
|
|||||||
auto d = m_rxCommandQueue.dequeue();
|
auto d = m_rxCommandQueue.dequeue();
|
||||||
|
|
||||||
bool isAllCall = isAllCallIncluded(d.to);
|
bool isAllCall = isAllCallIncluded(d.to);
|
||||||
bool isNear = abs(d.freq - freqOffset) <= NEAR_THRESHOLD_GROUPCALL; // 100Hz + a 25Hz buffer
|
bool isGroupCall = isGroupCallIncluded(d.to);
|
||||||
bool isGroupCall = isGroupCallIncluded(d.to) && isNear;
|
|
||||||
|
|
||||||
qDebug() << "try processing command" << d.from << d.to << d.cmd << d.freq << d.grid << d.extra;
|
qDebug() << "try processing command" << d.from << d.to << d.cmd << d.freq << d.grid << d.extra;
|
||||||
|
|
||||||
@ -8443,7 +8441,7 @@ void MainWindow::processCommandActivity() {
|
|||||||
cd.utcTimestamp = d.utcTimestamp;
|
cd.utcTimestamp = d.utcTimestamp;
|
||||||
logCallActivity(cd, true);
|
logCallActivity(cd, true);
|
||||||
|
|
||||||
// we're only responding to allcall, groupcalls near us, 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) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -9242,7 +9240,7 @@ void MainWindow::displayCallActivity() {
|
|||||||
{
|
{
|
||||||
// Clear the table
|
// Clear the table
|
||||||
clearTableWidget(ui->tableWidgetCalls);
|
clearTableWidget(ui->tableWidgetCalls);
|
||||||
createAllcallTableRow(ui->tableWidgetCalls, isAllCallIncluded(selectedCall) || isGroupCallIncluded(selectedCall));
|
createAllcallTableRows(ui->tableWidgetCalls, selectedCall); // isAllCallIncluded(selectedCall)); // || isGroupCallIncluded(selectedCall));
|
||||||
|
|
||||||
// Build the table
|
// Build the table
|
||||||
QList < QString > keys = m_callActivity.keys();
|
QList < QString > keys = m_callActivity.keys();
|
||||||
|
@ -136,7 +136,7 @@ public slots:
|
|||||||
void cacheActivity(QString key);
|
void cacheActivity(QString key);
|
||||||
void restoreActivity(QString key);
|
void restoreActivity(QString key);
|
||||||
void clearActivity();
|
void clearActivity();
|
||||||
void createAllcallTableRow(QTableWidget *table, bool selected);
|
void createAllcallTableRows(QTableWidget *table, const QString &selectedCall);
|
||||||
void displayTextForFreq(QString text, int freq, QDateTime date, bool isTx, bool isNewLine, bool isLast);
|
void displayTextForFreq(QString text, int freq, QDateTime date, bool isTx, bool isNewLine, bool isLast);
|
||||||
void writeNoticeTextToUI(QDateTime date, QString text);
|
void writeNoticeTextToUI(QDateTime date, QString text);
|
||||||
int writeMessageTextToUI(QDateTime date, QString text, int freq, bool bold, int block=-1);
|
int writeMessageTextToUI(QDateTime date, QString text, int freq, bool bold, int block=-1);
|
||||||
|
@ -179,7 +179,6 @@ quint16 nmaxgrid = (1<<15)-1;
|
|||||||
QMap<QString, quint32> basecalls = {
|
QMap<QString, quint32> basecalls = {
|
||||||
{ "<....>", nbasecall + 1 }, // incomplete callsign
|
{ "<....>", nbasecall + 1 }, // incomplete callsign
|
||||||
{ "ALLCALL", nbasecall + 2 },
|
{ "ALLCALL", nbasecall + 2 },
|
||||||
{ "GROUPCALL", nbasecall + 3 },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
QMap<quint32, QString> cqs = {
|
QMap<quint32, QString> cqs = {
|
||||||
@ -1652,7 +1651,6 @@ QStringList Varicode::buildMessageFrames(
|
|||||||
|
|
||||||
bool lineStartsWithBaseCall = (
|
bool lineStartsWithBaseCall = (
|
||||||
line.startsWith("ALLCALL") ||
|
line.startsWith("ALLCALL") ||
|
||||||
line.startsWith("GROUPCALL") ||
|
|
||||||
line.startsWith("BEACON") ||
|
line.startsWith("BEACON") ||
|
||||||
Varicode::startsWithCQ(line)
|
Varicode::startsWithCQ(line)
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user