Possibly the tone issue is solved.

failbranch
Elliott Liggett 2023-01-31 21:52:24 -08:00
rodzic d503df03bd
commit eea17e5e09
6 zmienionych plików z 140 dodań i 22 usunięć

Wyświetl plik

@ -313,25 +313,45 @@ void repeaterSetup::receiveDuplexMode(duplexMode dm)
void repeaterSetup::handleRptAccessMode(rptAccessTxRx tmode)
{
// ratrXY
// X = Transmit (T)one or (N)one or (D)CS
// Y = Receive (T)sql or (N)one or (D)CS
qDebug() << "In repeater setup, have received mode: " << tmode;
switch(tmode)
{
case ratrNN:
ui->toneNone->setChecked(true);
break;
case ratrTT:
ui->toneTSQL->setChecked(true);
break;
case ratrTN:
ui->toneTone->setChecked(true);
break;
case ratrDD:
ui->toneDTCS->setChecked(true);
break;
default:
break;
case ratrNN:
ui->toneNone->setChecked(true);
break;
case ratrTT:
case ratrNT:
ui->toneTSQL->setChecked(true);
break;
case ratrTN:
ui->toneTone->setChecked(true);
break;
case ratrDD:
ui->toneDTCS->setChecked(true);
break;
case ratrTONEoff:
ui->toneTone->setChecked(false);
break;
case ratrTONEon:
ui->toneTone->setChecked(true);
break;
case ratrTSQLoff:
ui->toneTSQL->setChecked(false);
break;
case ratrTSQLon:
ui->toneTSQL->setChecked(true);
break;
default:
break;
}
if( !ui->toneTSQL->isChecked() && !ui->toneTone->isChecked() && !ui->toneDTCS->isChecked())
{
ui->toneNone->setChecked(true);
qDebug() << "Assuming tone None is correct";
}
(void)tmode;
}
void repeaterSetup::handleTone(quint16 tone)

Wyświetl plik

@ -1206,6 +1206,9 @@ void rigCommander::setRptAccessMode(rptAccessTxRx ratr)
void rigCommander::setRptAccessMode(rptrAccessData_t rd)
{
// NB: This function is the only recommended
// function to be used for toggling tone and tone squelch.
QByteArray payload;
if(rigCaps.hasAdvancedRptrToneCmds)
{
@ -1225,6 +1228,20 @@ void rigCommander::setRptAccessMode(rptrAccessData_t rd)
{
case ratrNN:
// No tone at all
qDebug(logRig()) << "Tone off requested. state_TONE_enabled: " << state_TONE_Main_Enabled << ", state_TSQL_enabled: " << state_TSQL_Main_Enabled;
qDebug(logRig()) << "state.getBool(TONEFUNC): " << state.getBool(TONEFUNC);
qDebug(logRig()) << "state.getBool(TSQLFUNC): " << state.getBool(TSQLFUNC);
qDebug(logRig()) << "turn off tone: " << rd.turnOffTone << ", turn off tsql: " << rd.turnOffTSQL;
qDebug(logRig()) << "Using sequence? " << rd.usingSequence << ", sequence number: " << rd.sequence;
if(rd.turnOffTone)
{
payload.append("\x16\x42\x00", 3); // TONE off
} else if (rd.turnOffTSQL)
{
payload.append("\x16\x43\x00", 3); // TSQL off
}
/*
if(state.getBool(TONEFUNC))
{
payload.append("\x16\x42\x00", 3); // TONE off
@ -1234,6 +1251,8 @@ void rigCommander::setRptAccessMode(rptrAccessData_t rd)
// ?? turn off TSQL ??
payload.append("\x16\x43\x00", 3); // TSQL off
}
*/
break;
case ratrTN:
// TONE on transmit only
@ -1245,7 +1264,7 @@ void rigCommander::setRptAccessMode(rptrAccessData_t rd)
break;
case ratrNT:
// Tone squelch and no tone transmit:
payload.append("\x16\x43\x01", 3); // TSQL on
payload.append("\x16\x43\x01", 3); // TSQL on, close enough here.
// payload.append("\x16\x42\x00", 3); // TONE off
break;
default:
@ -1253,6 +1272,7 @@ void rigCommander::setRptAccessMode(rptrAccessData_t rd)
return;
}
}
if(rd.useSecondaryVFO && rigCaps.hasSpecifyMainSubCmd)
{
payload.prepend("\x29\x01");
@ -2932,6 +2952,7 @@ void rigCommander::parseRegister16()
//"INDEX: 00 01 02 03 "
//"DATA: 16 5d 00 fd "
// ^-- mode info here
rptAccessTxRx ra;
switch(payloadIn.at(1))
{
@ -2954,9 +2975,25 @@ void rigCommander::parseRegister16()
break;
case '\x42':
state.set(TONEFUNC, payloadIn.at(2) != 0, false);
state_TONE_Main_Enabled = (bool)payloadIn.at(2);
if(payloadIn.at(2)==1)
{
ra = ratrTONEon;
} else {
ra = ratrTONEoff;
}
emit haveRptAccessMode(ra);
break;
case '\x43':
state.set(TSQLFUNC, payloadIn.at(2) != 0, false);
state_TSQL_Main_Enabled = (bool)payloadIn.at(2);
if(payloadIn.at(2)==1)
{
ra = ratrTSQLon;
} else {
ra = ratrTSQLoff;
}
emit haveRptAccessMode(ra);
break;
case '\x44':
state.set(COMPFUNC, payloadIn.at(2) != 0, false);

Wyświetl plik

@ -451,6 +451,11 @@ private:
struct rigCapabilities rigCaps;
rigstate state;
// These are temporary measurements for debugging:
bool state_TONE_Main_Enabled = false;
bool state_TSQL_Main_Enabled = false;
bool state_TONE_Sub_Enabled = false;
bool state_TSQL_Sub_Enabled = false;
bool haveRigCaps;
model_kind model;

Wyświetl plik

@ -389,6 +389,8 @@ void wfmain::rigConnections()
connect(rig, SIGNAL(haveDuplexMode(duplexMode)), rpt, SLOT(receiveDuplexMode(duplexMode)));
connect(this, SIGNAL(getRptDuplexOffset()), rig, SLOT(getRptDuplexOffset()));
connect(rig, SIGNAL(haveRptOffsetFrequency(freqt)), rpt, SLOT(handleRptOffsetFrequency(freqt)));
// These are the current tone frequency or DCS code selected:
connect(rpt, SIGNAL(getTone()), rig, SLOT(getTone()));
connect(rpt, SIGNAL(getTSQL()), rig, SLOT(getTSQL()));
connect(rpt, SIGNAL(getDTCS()), rig, SLOT(getDTCS()));
@ -427,7 +429,10 @@ void wfmain::rigConnections()
//connect(rpt, SIGNAL(setRptAccessMode(rptAccessTxRx)), rig, SLOT(setRptAccessMode(rptAccessTxRx)));
connect(this->rpt, &repeaterSetup::setRptAccessMode,
[=](const rptrAccessData_t &rd) { issueCmd(cmdSetRptAccessMode, rd);});
[=](const rptrAccessData_t &rd) {
issueCmd(cmdSetRptAccessMode, rd);
});
connect(this, SIGNAL(setRepeaterAccessMode(rptrAccessData_t)), rig, SLOT(setRptAccessMode(rptrAccessData_t)));
connect(this, SIGNAL(setTone(rptrTone_t)), rig, SLOT(setTone(rptrTone_t)));
@ -3471,7 +3476,10 @@ void wfmain:: getInitialRigState()
{
issueDelayedCommand(cmdGetDTCS);
}
// TODO: decide which one!
issueDelayedCommand(cmdGetRptAccessMode);
issueDelayedCommand(cmdGetToneEnabled);
issueDelayedCommand(cmdGetTSQLEnabled);
if(rigCaps.hasAntennaSel)
{
@ -3771,7 +3779,43 @@ void wfmain::doCmd(commandtype cmddata)
case cmdSetRptAccessMode:
{
rptrAccessData_t rd = (*std::static_pointer_cast<rptrAccessData_t>(data));
if(rd.accessMode==ratrNN && !rigCaps.hasAdvancedRptrToneCmds)
{
rd.usingSequence = true;
switch(rd.sequence)
{
case 0:
rd.turnOffTone = true;
rd.turnOffTSQL = false;
break;
case 1:
rd.turnOffTSQL = true;
rd.turnOffTone = false;
break;
default:
break;
}
}
emit setRepeaterAccessMode(rd);
rd.sequence++;
if(rd.sequence == 1)
issueCmd(cmdSetRptAccessMode, rd);
break;
}
case cmdSetToneEnabled:
{
// This command is not aware of which VFO to use
bool toneEnabled = (*std::static_pointer_cast<bool>(data));
emit setToneEnabled(toneEnabled);
break;
}
case cmdSetTSQLEnabled:
{
// This command is not aware of which VFO to use
bool toneEnabled = (*std::static_pointer_cast<bool>(data));
emit setTSQLEnabled(toneEnabled);
break;
}
case cmdSetRptDuplexOffset:
@ -7867,8 +7911,8 @@ void wfmain::on_underlayAverageBuffer_toggled(bool checked)
void wfmain::on_debugBtn_clicked()
{
qInfo(logSystem()) << "Debug button pressed.";
qDebug(logSystem()) << "Query for repeater duplex offset 0x0C headed out";
issueDelayedCommand(cmdGetRptDuplexOffset);
qDebug(logSystem()) << "Query for repeater access mode (tone, tsql, etc) sent.";
issueDelayedCommand(cmdGetRptAccessMode);
}
// ---------- color helper functions: ---------- //

Wyświetl plik

@ -120,6 +120,8 @@ signals:
void setTSQL(rptrTone_t t);
void getToneEnabled();
void getTSQLEnabled();
void setToneEnabled(bool enabled);
void setTSQLEnabled(bool enabled);
void setRptDuplexOffset(freqt f);
void getRptDuplexOffset();

Wyświetl plik

@ -98,12 +98,20 @@ enum rptAccessTxRx {
ratrDN=0x06, // "DTCS(T)"
ratrTD=0x07, // "TONE(T) / TSQL(R)"
ratrDT=0x08, // "DTCS(T) / TSQL(R)"
ratrTT=0x09 // "TONE(T) / TSQL(R)"
ratrTT=0x09, // "TONE(T) / TSQL(R)"
ratrTONEoff,
ratrTONEon,
ratrTSQLoff,
ratrTSQLon
};
struct rptrAccessData_t {
rptAccessTxRx accessMode = ratrNN;
bool useSecondaryVFO = false;
bool turnOffTone = false;
bool turnOffTSQL = false;
bool usingSequence = false;
int sequence = 0;
};
struct mode_info {
@ -153,7 +161,9 @@ enum cmds {
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
cmdGetTone, cmdGetTSQL, cmdGetToneEnabled, cmdGetTSQLEnabled, cmdGetDTCS, cmdGetRptAccessMode, cmdSetTone, cmdSetTSQL, cmdSetRptAccessMode, cmdSetRptDuplexOffset, cmdGetRptDuplexOffset,
cmdGetTone, cmdGetTSQL, cmdGetToneEnabled, cmdGetTSQLEnabled, cmdGetDTCS,
cmdSetToneEnabled, cmdSetTSQLEnabled, cmdGetRptAccessMode, cmdSetTone, cmdSetTSQL,
cmdSetRptAccessMode, cmdSetRptDuplexOffset, cmdGetRptDuplexOffset,
cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS,
cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW,