Porównaj commity

...

5 Commity

Autor SHA1 Wiadomość Data
Elliott Liggett 8b60a48a56 IC-9700 input registers 2024-02-12 21:05:10 -08:00
Elliott Liggett 603f87a99f TSQL is actually set now 2024-02-12 20:54:05 -08:00
Phil Taylor 7e3f4a8ac2 Fix parsing of received tone 2024-02-12 22:26:25 +00:00
Elliott Liggett 4e8819becb More work on repeater tones. 2024-02-12 13:36:39 -08:00
Elliott Liggett d182d59f59 Debug logging is back, more attempts with TONE/TSQL
TONE and TSQL in progress due to "unsupported command" error messages.
2024-02-12 10:06:08 -08:00
8 zmienionych plików z 2053 dodań i 1992 usunięć

Wyświetl plik

@ -360,6 +360,9 @@ bool cachingQueue::compare(QVariant a, QVariant b)
} else if (!strcmp(a.typeName(),"duplexMode_t")) { } else if (!strcmp(a.typeName(),"duplexMode_t")) {
if (a.value<duplexMode_t>() != b.value<duplexMode_t>()) if (a.value<duplexMode_t>() != b.value<duplexMode_t>())
changed=true; changed=true;
} else if (!strcmp(a.typeName(),"toneInfo")) {
if (a.value<toneInfo>().tone != b.value<toneInfo>().tone)
changed=true;
} else if (!strcmp(a.typeName(),"spectrumMode_t")) { } else if (!strcmp(a.typeName(),"spectrumMode_t")) {
if (a.value<spectrumMode_t>() != b.value<spectrumMode_t>()) if (a.value<spectrumMode_t>() != b.value<spectrumMode_t>())
changed=true; changed=true;

Wyświetl plik

@ -64,7 +64,7 @@ void loggingWindow::acceptLogText(QPair<QtMsgType,QString> text)
QString colour = "white"; QString colour = "white";
if (text.first == QtDebugMsg) if (text.first == QtDebugMsg)
{ {
colour = "grey"; colour = "#ffbc11"; // orange
} else if (text.first == QtWarningMsg) } else if (text.first == QtWarningMsg)
{ {
colour = "yellow"; colour = "yellow";

Wyświetl plik

@ -31,16 +31,27 @@ void repeaterSetup::setRig(rigCapabilities inRig)
{ {
this->rig = inRig; this->rig = inRig;
haveRig = true; haveRig = true;
if(rig.commands.contains(funcRepeaterTone)) {
ui->rptToneCombo->setDisabled(false);
ui->toneTone->setDisabled(false);
} else {
ui->rptToneCombo->setDisabled(true);
ui->toneTone->setDisabled(true);
}
if(rig.commands.contains(funcRepeaterTSQL)) {
ui->toneTSQL->setDisabled(false);
} else {
ui->toneTSQL->setDisabled(true);
}
if(rig.commands.contains(funcToneSquelchType)) if(rig.commands.contains(funcToneSquelchType))
{ {
ui->rptToneCombo->setDisabled(false); ui->rptToneCombo->setDisabled(false);
ui->toneTone->setDisabled(false); ui->toneTone->setDisabled(false);
ui->toneTSQL->setDisabled(false); ui->toneTSQL->setDisabled(false);
} else {
ui->rptToneCombo->setDisabled(true);
ui->toneTone->setDisabled(true);
ui->toneTSQL->setDisabled(true);
} }
if(rig.commands.contains(funcRepeaterDTCS)) if(rig.commands.contains(funcRepeaterDTCS))
{ {
ui->rptDTCSCombo->setDisabled(false); ui->rptDTCSCombo->setDisabled(false);
@ -357,6 +368,7 @@ void repeaterSetup::handleRptAccessMode(rptAccessTxRx_t tmode)
void repeaterSetup::handleTone(quint16 tone) void repeaterSetup::handleTone(quint16 tone)
{ {
qDebug(logRptr()) << "Handling incoming tone request of tone = " << tone;
int tindex = ui->rptToneCombo->findData(tone); int tindex = ui->rptToneCombo->findData(tone);
ui->rptToneCombo->setCurrentIndex(tindex); ui->rptToneCombo->setCurrentIndex(tindex);
} }
@ -364,12 +376,14 @@ void repeaterSetup::handleTone(quint16 tone)
void repeaterSetup::handleTSQL(quint16 tsql) void repeaterSetup::handleTSQL(quint16 tsql)
{ {
// TODO: Consider a second combo box for the TSQL // TODO: Consider a second combo box for the TSQL
qDebug(logRptr()) << "Handling incoming TSQL request of tone = " << tsql;
int tindex = ui->rptToneCombo->findData(tsql); int tindex = ui->rptToneCombo->findData(tsql);
ui->rptToneCombo->setCurrentIndex(tindex); ui->rptToneCombo->setCurrentIndex(tindex);
} }
void repeaterSetup::handleDTCS(quint16 dcode, bool tinv, bool rinv) void repeaterSetup::handleDTCS(quint16 dcode, bool tinv, bool rinv)
{ {
qDebug(logRptr()) << "Handling incoming DTCS request of dcode = " << dcode;
int dindex = ui->rptDTCSCombo->findData(dcode); int dindex = ui->rptDTCSCombo->findData(dcode);
ui->rptDTCSCombo->setCurrentIndex(dindex); ui->rptDTCSCombo->setCurrentIndex(dindex);
ui->rptDTCSInvertTx->setChecked(tinv); ui->rptDTCSInvertTx->setChecked(tinv);
@ -521,7 +535,7 @@ void repeaterSetup::on_rptToneCombo_activated(int tindex)
emit setTone(rt); emit setTone(rt);
if(updateSub) if(updateSub)
{ {
//rt.useSecondaryVFO = true; rt.useSecondaryVFO = true;
emit setTone(rt); emit setTone(rt);
} }
@ -529,7 +543,7 @@ void repeaterSetup::on_rptToneCombo_activated(int tindex)
emit setTSQL(rt); emit setTSQL(rt);
if(updateSub) if(updateSub)
{ {
//rt.useSecondaryVFO = true; rt.useSecondaryVFO = true;
emit setTone(rt); emit setTone(rt);
} }
} }
@ -575,8 +589,8 @@ void repeaterSetup::on_toneTone_clicked()
if(updateSub) if(updateSub)
{ {
//rd.useSecondaryVFO = true; rd.useSecondaryVFO = true;
//rt.useSecondaryVFO = true; rt.useSecondaryVFO = true;
emit setRptAccessMode(rd); emit setRptAccessMode(rd);
emit setTone(rt); emit setTone(rt);
} }
@ -596,10 +610,10 @@ void repeaterSetup::on_toneTSQL_clicked()
if(updateSub) if(updateSub)
{ {
//rd.useSecondaryVFO = true; rd.useSecondaryVFO = true;
//rt.useSecondaryVFO = true; rt.useSecondaryVFO = true;
emit setRptAccessMode(rd); emit setRptAccessMode(rd);
emit setTone(rt); emit setTSQL(rt);
} }
} }
@ -822,7 +836,7 @@ void repeaterSetup::on_setToneSubVFOBtn_clicked()
// TODO: DTCS // TODO: DTCS
toneInfo rt; toneInfo rt;
rt.tone = (quint16)ui->rptToneCombo->currentData().toUInt(); rt.tone = (quint16)ui->rptToneCombo->currentData().toUInt();
//rt.useSecondaryVFO = true; rt.useSecondaryVFO = true;
emit setTone(rt); emit setTone(rt);
} }

Wyświetl plik

@ -329,10 +329,12 @@ bool rigCommander::getCommand(funcs func, QByteArray &payload, int value, uchar
{ {
if (value == INT_MIN || (value>=it.value().minVal && value <= it.value().maxVal)) if (value == INT_MIN || (value>=it.value().minVal && value <= it.value().maxVal))
{ {
/*
if (value == INT_MIN) if (value == INT_MIN)
qDebug(logRig()) << QString("%0 with no value (get)").arg(funcString[func]); qDebug(logRig()) << QString("%0 with no value (get)").arg(funcString[func]);
else else
qDebug(logRig()) << QString("%0 with value %1 (Range: %2-%3)").arg(funcString[func]).arg(value).arg(it.value().minVal).arg(it.value().maxVal); qDebug(logRig()) << QString("%0 with value %1 (Range: %2-%3)").arg(funcString[func]).arg(value).arg(it.value().minVal).arg(it.value().maxVal);
*/
if (rigCaps.hasCommand29 && it.value().cmd29) if (rigCaps.hasCommand29 && it.value().cmd29)
{ {
// This can use cmd29 so add sub/main to the command // This can use cmd29 so add sub/main to the command
@ -350,11 +352,11 @@ bool rigCommander::getCommand(funcs func, QByteArray &payload, int value, uchar
} }
else if (value != INT_MIN) else if (value != INT_MIN)
{ {
qInfo(logRig()) << QString("Value %0 for %1 is outside of allowed range (%2-%3)").arg(value).arg(funcString[func]).arg(it.value().minVal).arg(it.value().maxVal); qDebug(logRig()) << QString("Value %0 for %1 is outside of allowed range (%2-%3)").arg(value).arg(funcString[func]).arg(it.value().minVal).arg(it.value().maxVal);
} }
} else { } else {
// Don't try this command again as the rig doesn't support it! // Don't try this command again as the rig doesn't support it!
qInfo(logRig()) << "Removing unsupported command from queue" << funcString[func] << "VFO" << vfo; qDebug(logRig()) << "Removing unsupported command from queue" << funcString[func] << "VFO" << vfo;
queue->del(func,vfo); queue->del(func,vfo);
} }
return false; return false;
@ -511,20 +513,19 @@ toneInfo rigCommander::decodeTone(QByteArray eTone)
// D(T)CS: 1B 01 TR 01 23 = T/R Invert bits + DCS code 123 // D(T)CS: 1B 01 TR 01 23 = T/R Invert bits + DCS code 123
toneInfo t; toneInfo t;
if (eTone.length() < 3) {
if (eTone.length() < 5) {
return t; return t;
} }
if((eTone.at(2) & 0x01) == 0x01) if((eTone.at(0) & 0x01) == 0x01)
t.tinv = true; t.tinv = true;
if((eTone.at(2) & 0x10) == 0x10) if((eTone.at(0) & 0x10) == 0x10)
t.rinv = true; t.rinv = true;
t.tone += (eTone.at(4) & 0x0f); t.tone += (eTone.at(2) & 0x0f);
t.tone += ((eTone.at(4) & 0xf0) >> 4) * 10; t.tone += ((eTone.at(2) & 0xf0) >> 4) * 10;
t.tone += (eTone.at(3) & 0x0f) * 100; t.tone += (eTone.at(1) & 0x0f) * 100;
t.tone += ((eTone.at(3) & 0xf0) >> 4) * 1000; t.tone += ((eTone.at(1) & 0xf0) >> 4) * 1000;
return t; return t;
} }
@ -715,7 +716,7 @@ void rigCommander::parseCommand()
if (rigCaps.hasCommand29 && payloadIn[0] == '\x29') if (rigCaps.hasCommand29 && payloadIn[0] == '\x29')
{ {
vfo = static_cast<uchar>(payloadIn[1]); vfo = static_cast<uchar>(payloadIn[1]);
payloadIn.remove(0,2); payloadIn.remove(0,2);
} }
// As some commands bave both single and multi-byte options, start at 4 characters and work down to 1. // As some commands bave both single and multi-byte options, start at 4 characters and work down to 1.

Plik diff jest za duży Load Diff

Plik diff jest za duży Load Diff

Wyświetl plik

@ -64,6 +64,7 @@ wfmain::wfmain(const QString settingsFile, const QString logFile, bool debugMode
qRegisterMetaType<duplexMode_t>(); qRegisterMetaType<duplexMode_t>();
qRegisterMetaType<rptAccessTxRx_t>(); qRegisterMetaType<rptAccessTxRx_t>();
qRegisterMetaType<rptrAccessData>(); qRegisterMetaType<rptrAccessData>();
qRegisterMetaType<toneInfo>();
qRegisterMetaType<rigInput>(); qRegisterMetaType<rigInput>();
qRegisterMetaType<inputTypes>(); qRegisterMetaType<inputTypes>();
qRegisterMetaType<meter_t>(); qRegisterMetaType<meter_t>();
@ -472,19 +473,34 @@ void wfmain::makeRig()
[=](const duplexMode_t &t) { queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(t),false));}); [=](const duplexMode_t &t) { queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(t),false));});
connect(this->rpt, &repeaterSetup::getTone, this->rig, connect(this->rpt, &repeaterSetup::getTone, this->rig,
[=]() { queue->add(priorityImmediate,funcRepeaterTone,false,false);}); [=]() {
qDebug(logSystem()) << "Asking for TONE";
queue->add(priorityImmediate,funcRepeaterTone,false,false);});
connect(this->rpt, &repeaterSetup::setTone, this->rig,
[=](const toneInfo& t) {
qDebug(logSystem()) << "Setting TONE for VFO, useInactiveVFO= [" << t.useSecondaryVFO << "], tone=" << t.tone;
queue->add(priorityImmediate,queueItem(funcToneFreq,QVariant::fromValue<toneInfo>(t),false, t.useSecondaryVFO));});
connect(this->rpt, &repeaterSetup::setTSQL, this->rig, connect(this->rpt, &repeaterSetup::setTSQL, this->rig,
[=](const toneInfo& t) { queue->add(priorityImmediate,queueItem(funcTSQLFreq,QVariant::fromValue<toneInfo>(t),false));}); [=](const toneInfo& t) {
qDebug(logSystem()) << "Setting TSQL for VFO, useInactiveVFO= [" << t.useSecondaryVFO << "], tone=" << t.tone;
queue->add(priorityImmediate,queueItem(funcTSQLFreq,QVariant::fromValue<toneInfo>(t),false, t.useSecondaryVFO));});
connect(this->rpt, &repeaterSetup::getTSQL, this->rig, connect(this->rpt, &repeaterSetup::getTSQL, this->rig,
[=]() { queue->add(priorityImmediate,funcRepeaterTSQL,false,false);}); [=]() {
qDebug(logSystem()) << "Asking for TSQL";
queue->add(priorityImmediate,funcRepeaterTSQL,false,false);});
connect(this->rpt, &repeaterSetup::setDTCS, this->rig, connect(this->rpt, &repeaterSetup::setDTCS, this->rig,
[=](const toneInfo& t) { queue->add(priorityImmediate,queueItem(funcRepeaterDTCS,QVariant::fromValue<toneInfo>(t),false));}); [=](const toneInfo& t) {
qDebug(logSystem()) << "Setting DCS, code =" << t.tone;
queue->add(priorityImmediate,queueItem(funcRepeaterDTCS,QVariant::fromValue<toneInfo>(t),false));});
connect(this->rpt, &repeaterSetup::getDTCS, this->rig, connect(this->rpt, &repeaterSetup::getDTCS, this->rig,
[=]() { queue->add(priorityImmediate,funcRepeaterDTCS,false,false);}); [=]() {
qDebug(logSystem()) << "Asking for DCS";
queue->add(priorityImmediate,funcRepeaterDTCS,false,false);});
connect(this->rpt, &repeaterSetup::getRptAccessMode, this->rig, connect(this->rpt, &repeaterSetup::getRptAccessMode, this->rig,
@ -504,8 +520,20 @@ void wfmain::makeRig()
connect(this->rpt, &repeaterSetup::setRptAccessMode, this->rig, connect(this->rpt, &repeaterSetup::setRptAccessMode, this->rig,
[=](const rptrAccessData &rd) { [=](const rptrAccessData &rd) {
if (rigCaps.commands.contains(funcToneSquelchType)) {
queue->add(priorityImmediate,queueItem(funcToneSquelchType,QVariant::fromValue<rptrAccessData>(rd),false)); queue->add(priorityImmediate,queueItem(funcToneSquelchType,QVariant::fromValue<rptrAccessData>(rd),false));
}); } else {
if(rd.accessMode == ratrTN) {
// recuring=false, vfo if rd.useSEcondaryVFO
queue->add(priorityImmediate,queueItem(funcRepeaterTone, QVariant::fromValue<bool>(true), false, rd.useSecondaryVFO));
} else if (rd.accessMode == ratrTT) {
queue->add(priorityImmediate,queueItem(funcRepeaterTSQL, QVariant::fromValue<bool>(true), false, rd.useSecondaryVFO));
} else if (rd.accessMode == ratrNN) {
queue->add(priorityImmediate,queueItem(funcRepeaterTone, QVariant::fromValue<bool>(false), false, rd.useSecondaryVFO));
queue->add(priorityImmediate,queueItem(funcRepeaterTSQL, QVariant::fromValue<bool>(false), false, rd.useSecondaryVFO));
}
}
});
connect(this->rig, &rigCommander::haveDuplexMode, this->rpt, connect(this->rig, &rigCommander::haveDuplexMode, this->rpt,
[=](const duplexMode_t &dm) { [=](const duplexMode_t &dm) {
@ -5231,7 +5259,7 @@ void wfmain::setDebugLogging(bool debugModeOn)
void wfmain::messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg) void wfmain::messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg)
{ {
// Open stream file writes // Open stream file writes
bool insaneDebugLogging = false;
if (type == QtDebugMsg && !debugModeLogging) if (type == QtDebugMsg && !debugModeLogging)
{ {
return; return;
@ -5243,6 +5271,10 @@ void wfmain::messageHandler(QtMsgType type, const QMessageLogContext& context, c
return; return;
} }
if( (type == QtDebugMsg) && (!insaneDebugLogging) && (qstrncmp(context.category, "rigTraffic", 10)==0) ) {
return;
}
QMutexLocker locker(&logMutex); QMutexLocker locker(&logMutex);
QTextStream out(m_logFile.data()); QTextStream out(m_logFile.data());
QString text; QString text;

Wyświetl plik

@ -148,6 +148,7 @@ struct toneInfo {
quint16 tone=0; quint16 tone=0;
bool tinv=false; bool tinv=false;
bool rinv=false; bool rinv=false;
bool useSecondaryVFO = false;
}; };
enum breakIn_t { enum breakIn_t {