kopia lustrzana https://gitlab.com/eliggett/wfview
Possibly the tone issue is solved.
rodzic
d503df03bd
commit
eea17e5e09
|
@ -313,25 +313,45 @@ void repeaterSetup::receiveDuplexMode(duplexMode dm)
|
||||||
|
|
||||||
void repeaterSetup::handleRptAccessMode(rptAccessTxRx tmode)
|
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)
|
switch(tmode)
|
||||||
{
|
{
|
||||||
case ratrNN:
|
case ratrNN:
|
||||||
ui->toneNone->setChecked(true);
|
ui->toneNone->setChecked(true);
|
||||||
break;
|
break;
|
||||||
case ratrTT:
|
case ratrTT:
|
||||||
ui->toneTSQL->setChecked(true);
|
case ratrNT:
|
||||||
break;
|
ui->toneTSQL->setChecked(true);
|
||||||
case ratrTN:
|
break;
|
||||||
ui->toneTone->setChecked(true);
|
case ratrTN:
|
||||||
break;
|
ui->toneTone->setChecked(true);
|
||||||
case ratrDD:
|
break;
|
||||||
ui->toneDTCS->setChecked(true);
|
case ratrDD:
|
||||||
break;
|
ui->toneDTCS->setChecked(true);
|
||||||
default:
|
break;
|
||||||
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)
|
void repeaterSetup::handleTone(quint16 tone)
|
||||||
|
|
|
@ -1206,6 +1206,9 @@ void rigCommander::setRptAccessMode(rptAccessTxRx ratr)
|
||||||
|
|
||||||
void rigCommander::setRptAccessMode(rptrAccessData_t rd)
|
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;
|
QByteArray payload;
|
||||||
if(rigCaps.hasAdvancedRptrToneCmds)
|
if(rigCaps.hasAdvancedRptrToneCmds)
|
||||||
{
|
{
|
||||||
|
@ -1225,6 +1228,20 @@ void rigCommander::setRptAccessMode(rptrAccessData_t rd)
|
||||||
{
|
{
|
||||||
case ratrNN:
|
case ratrNN:
|
||||||
// No tone at all
|
// 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))
|
if(state.getBool(TONEFUNC))
|
||||||
{
|
{
|
||||||
payload.append("\x16\x42\x00", 3); // TONE off
|
payload.append("\x16\x42\x00", 3); // TONE off
|
||||||
|
@ -1234,6 +1251,8 @@ void rigCommander::setRptAccessMode(rptrAccessData_t rd)
|
||||||
// ?? turn off TSQL ??
|
// ?? turn off TSQL ??
|
||||||
payload.append("\x16\x43\x00", 3); // TSQL off
|
payload.append("\x16\x43\x00", 3); // TSQL off
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ratrTN:
|
case ratrTN:
|
||||||
// TONE on transmit only
|
// TONE on transmit only
|
||||||
|
@ -1245,7 +1264,7 @@ void rigCommander::setRptAccessMode(rptrAccessData_t rd)
|
||||||
break;
|
break;
|
||||||
case ratrNT:
|
case ratrNT:
|
||||||
// Tone squelch and no tone transmit:
|
// 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
|
// payload.append("\x16\x42\x00", 3); // TONE off
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1253,6 +1272,7 @@ void rigCommander::setRptAccessMode(rptrAccessData_t rd)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(rd.useSecondaryVFO && rigCaps.hasSpecifyMainSubCmd)
|
if(rd.useSecondaryVFO && rigCaps.hasSpecifyMainSubCmd)
|
||||||
{
|
{
|
||||||
payload.prepend("\x29\x01");
|
payload.prepend("\x29\x01");
|
||||||
|
@ -2932,6 +2952,7 @@ void rigCommander::parseRegister16()
|
||||||
//"INDEX: 00 01 02 03 "
|
//"INDEX: 00 01 02 03 "
|
||||||
//"DATA: 16 5d 00 fd "
|
//"DATA: 16 5d 00 fd "
|
||||||
// ^-- mode info here
|
// ^-- mode info here
|
||||||
|
rptAccessTxRx ra;
|
||||||
|
|
||||||
switch(payloadIn.at(1))
|
switch(payloadIn.at(1))
|
||||||
{
|
{
|
||||||
|
@ -2954,9 +2975,25 @@ void rigCommander::parseRegister16()
|
||||||
break;
|
break;
|
||||||
case '\x42':
|
case '\x42':
|
||||||
state.set(TONEFUNC, payloadIn.at(2) != 0, false);
|
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;
|
break;
|
||||||
case '\x43':
|
case '\x43':
|
||||||
state.set(TSQLFUNC, payloadIn.at(2) != 0, false);
|
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;
|
break;
|
||||||
case '\x44':
|
case '\x44':
|
||||||
state.set(COMPFUNC, payloadIn.at(2) != 0, false);
|
state.set(COMPFUNC, payloadIn.at(2) != 0, false);
|
||||||
|
|
|
@ -451,6 +451,11 @@ private:
|
||||||
struct rigCapabilities rigCaps;
|
struct rigCapabilities rigCaps;
|
||||||
|
|
||||||
rigstate state;
|
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;
|
bool haveRigCaps;
|
||||||
model_kind model;
|
model_kind model;
|
||||||
|
|
50
wfmain.cpp
50
wfmain.cpp
|
@ -389,6 +389,8 @@ void wfmain::rigConnections()
|
||||||
connect(rig, SIGNAL(haveDuplexMode(duplexMode)), rpt, SLOT(receiveDuplexMode(duplexMode)));
|
connect(rig, SIGNAL(haveDuplexMode(duplexMode)), rpt, SLOT(receiveDuplexMode(duplexMode)));
|
||||||
connect(this, SIGNAL(getRptDuplexOffset()), rig, SLOT(getRptDuplexOffset()));
|
connect(this, SIGNAL(getRptDuplexOffset()), rig, SLOT(getRptDuplexOffset()));
|
||||||
connect(rig, SIGNAL(haveRptOffsetFrequency(freqt)), rpt, SLOT(handleRptOffsetFrequency(freqt)));
|
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(getTone()), rig, SLOT(getTone()));
|
||||||
connect(rpt, SIGNAL(getTSQL()), rig, SLOT(getTSQL()));
|
connect(rpt, SIGNAL(getTSQL()), rig, SLOT(getTSQL()));
|
||||||
connect(rpt, SIGNAL(getDTCS()), rig, SLOT(getDTCS()));
|
connect(rpt, SIGNAL(getDTCS()), rig, SLOT(getDTCS()));
|
||||||
|
@ -427,7 +429,10 @@ void wfmain::rigConnections()
|
||||||
//connect(rpt, SIGNAL(setRptAccessMode(rptAccessTxRx)), rig, SLOT(setRptAccessMode(rptAccessTxRx)));
|
//connect(rpt, SIGNAL(setRptAccessMode(rptAccessTxRx)), rig, SLOT(setRptAccessMode(rptAccessTxRx)));
|
||||||
|
|
||||||
connect(this->rpt, &repeaterSetup::setRptAccessMode,
|
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(setRepeaterAccessMode(rptrAccessData_t)), rig, SLOT(setRptAccessMode(rptrAccessData_t)));
|
||||||
connect(this, SIGNAL(setTone(rptrTone_t)), rig, SLOT(setTone(rptrTone_t)));
|
connect(this, SIGNAL(setTone(rptrTone_t)), rig, SLOT(setTone(rptrTone_t)));
|
||||||
|
|
||||||
|
@ -3471,7 +3476,10 @@ void wfmain:: getInitialRigState()
|
||||||
{
|
{
|
||||||
issueDelayedCommand(cmdGetDTCS);
|
issueDelayedCommand(cmdGetDTCS);
|
||||||
}
|
}
|
||||||
|
// TODO: decide which one!
|
||||||
issueDelayedCommand(cmdGetRptAccessMode);
|
issueDelayedCommand(cmdGetRptAccessMode);
|
||||||
|
issueDelayedCommand(cmdGetToneEnabled);
|
||||||
|
issueDelayedCommand(cmdGetTSQLEnabled);
|
||||||
|
|
||||||
if(rigCaps.hasAntennaSel)
|
if(rigCaps.hasAntennaSel)
|
||||||
{
|
{
|
||||||
|
@ -3771,7 +3779,43 @@ void wfmain::doCmd(commandtype cmddata)
|
||||||
case cmdSetRptAccessMode:
|
case cmdSetRptAccessMode:
|
||||||
{
|
{
|
||||||
rptrAccessData_t rd = (*std::static_pointer_cast<rptrAccessData_t>(data));
|
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);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case cmdSetRptDuplexOffset:
|
case cmdSetRptDuplexOffset:
|
||||||
|
@ -7867,8 +7911,8 @@ void wfmain::on_underlayAverageBuffer_toggled(bool checked)
|
||||||
void wfmain::on_debugBtn_clicked()
|
void wfmain::on_debugBtn_clicked()
|
||||||
{
|
{
|
||||||
qInfo(logSystem()) << "Debug button pressed.";
|
qInfo(logSystem()) << "Debug button pressed.";
|
||||||
qDebug(logSystem()) << "Query for repeater duplex offset 0x0C headed out";
|
qDebug(logSystem()) << "Query for repeater access mode (tone, tsql, etc) sent.";
|
||||||
issueDelayedCommand(cmdGetRptDuplexOffset);
|
issueDelayedCommand(cmdGetRptAccessMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------- color helper functions: ---------- //
|
// ---------- color helper functions: ---------- //
|
||||||
|
|
2
wfmain.h
2
wfmain.h
|
@ -120,6 +120,8 @@ signals:
|
||||||
void setTSQL(rptrTone_t t);
|
void setTSQL(rptrTone_t t);
|
||||||
void getToneEnabled();
|
void getToneEnabled();
|
||||||
void getTSQLEnabled();
|
void getTSQLEnabled();
|
||||||
|
void setToneEnabled(bool enabled);
|
||||||
|
void setTSQLEnabled(bool enabled);
|
||||||
void setRptDuplexOffset(freqt f);
|
void setRptDuplexOffset(freqt f);
|
||||||
void getRptDuplexOffset();
|
void getRptDuplexOffset();
|
||||||
|
|
||||||
|
|
|
@ -98,12 +98,20 @@ enum rptAccessTxRx {
|
||||||
ratrDN=0x06, // "DTCS(T)"
|
ratrDN=0x06, // "DTCS(T)"
|
||||||
ratrTD=0x07, // "TONE(T) / TSQL(R)"
|
ratrTD=0x07, // "TONE(T) / TSQL(R)"
|
||||||
ratrDT=0x08, // "DTCS(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 {
|
struct rptrAccessData_t {
|
||||||
rptAccessTxRx accessMode = ratrNN;
|
rptAccessTxRx accessMode = ratrNN;
|
||||||
bool useSecondaryVFO = false;
|
bool useSecondaryVFO = false;
|
||||||
|
bool turnOffTone = false;
|
||||||
|
bool turnOffTSQL = false;
|
||||||
|
bool usingSequence = false;
|
||||||
|
int sequence = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mode_info {
|
struct mode_info {
|
||||||
|
@ -153,7 +161,9 @@ enum cmds {
|
||||||
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
|
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
|
||||||
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
|
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
|
||||||
cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
|
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,
|
cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS,
|
||||||
cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
|
cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
|
||||||
cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW,
|
cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW,
|
||||||
|
|
Ładowanie…
Reference in New Issue