Continued repeater status work...

failbranch
Elliott Liggett 2023-01-31 18:00:12 -08:00
rodzic 17d6493338
commit d503df03bd
6 zmienionych plików z 59 dodań i 9 usunięć

Wyświetl plik

@ -1207,8 +1207,9 @@ void rigCommander::setRptAccessMode(rptAccessTxRx ratr)
void rigCommander::setRptAccessMode(rptrAccessData_t rd)
{
QByteArray payload;
if(rigCaps.model==model9700)
if(rigCaps.hasAdvancedRptrToneCmds)
{
// IC-9700 basically
payload.setRawData("\x16\x5D", 2);
payload.append((unsigned char)rd.accessMode);
} else {
@ -1224,8 +1225,15 @@ void rigCommander::setRptAccessMode(rptrAccessData_t rd)
{
case ratrNN:
// No tone at all
payload.append("\x16\x42\x00", 3); // TONE off
//payload.append("\x16\x43\x00", 3); // TSQL off
if(state.getBool(TONEFUNC))
{
payload.append("\x16\x42\x00", 3); // TONE off
} else if (state.getBool(TSQLFUNC)) {
payload.append("\x16\x43\x00", 3); // TSQL off
} else {
// ?? turn off TSQL ??
payload.append("\x16\x43\x00", 3); // TSQL off
}
break;
case ratrTN:
// TONE on transmit only
@ -3567,6 +3575,7 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x27");
rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = true;
rigCaps.hasAdvancedRptrToneCmds = true;
break;
case model910h:
rigCaps.modelName = QString("IC-910H");
@ -4821,7 +4830,7 @@ void rigCommander::setToneSql(bool enabled)
prepDataAndSend(payload);
}
void rigCommander::getToneSql()
void rigCommander::getToneSqlEnabled()
{
QByteArray payload;
payload.setRawData("\x16\x43", 2);
@ -5199,7 +5208,7 @@ void rigCommander::stateUpdated()
if (i.value()._valid) {
setToneSql(state.getBool(TSQLFUNC));
}
getToneSql();
getToneSqlEnabled();
break;
case COMPFUNC:
if (i.value()._valid) {

Wyświetl plik

@ -112,7 +112,7 @@ public slots:
void setToneEnabled(bool enabled);
void getToneEnabled();
void setToneSql(bool enabled);
void getToneSql();
void getToneSqlEnabled();
void setCompressor(bool enabled);
void getCompressor();
void setMonitor(bool enabled);

Wyświetl plik

@ -152,6 +152,8 @@ struct rigCapabilities {
bool hasVFOMS = false;
bool hasVFOAB = true; // 0x07 [00||01]
bool hasAdvancedRptrToneCmds = false;
std::vector <unsigned char> attenuators;
std::vector <unsigned char> preamps;
std::vector <unsigned char> antennas;

Wyświetl plik

@ -399,8 +399,30 @@ void wfmain::rigConnections()
connect(this->rpt, &repeaterSetup::setTSQL,
[=](const rptrTone_t &t) { issueCmd(cmdSetTSQL, t);});
// TODO: struct with the DCS components and command queue entry
connect(rpt, SIGNAL(setDTCS(quint16,bool,bool)), rig, SLOT(setDTCS(quint16,bool,bool)));
connect(rpt, SIGNAL(getRptAccessMode()), rig, SLOT(getRptAccessMode()));
//connect(rpt, SIGNAL(getRptAccessMode()), rig, SLOT(getRptAccessMode()));
connect(this->rpt, &repeaterSetup::getRptAccessMode,
[=]() {
if(rigCaps.hasAdvancedRptrToneCmds) {
issueDelayedCommand(cmdGetRptAccessMode);
} else {
issueDelayedCommand(cmdGetToneEnabled);
issueDelayedCommand(cmdGetTSQLEnabled);
}
});
// How to understand the reply of getToneEnabled, getTSQLEnabled
// ......
// it's currently only read into rigState.
// We could emit a signal from rigCommander, turn it into
// a rptrAccess data type and feed that to rptr.
// But there will be two replies, and we need to somehow
// understand both before forming a sensible reply to
// the rptr setup.
// If we don't care, then it just works but we don't know the current state.
//connect(rpt, SIGNAL(setRptAccessMode(rptAccessTxRx)), rig, SLOT(setRptAccessMode(rptAccessTxRx)));
@ -422,6 +444,9 @@ void wfmain::rigConnections()
this->splitModeEnabled = false;
});
connect(this, SIGNAL(getToneEnabled()), rig, SLOT(getToneEnabled()));
connect(this, SIGNAL(getTSQLEnabled()), rig, SLOT(getToneSqlEnabled()));
connect(this->rpt, &repeaterSetup::setTransmitFrequency,
[=](const freqt &transmitFreq) { issueCmd(cmdSetFreq, transmitFreq);});
connect(this->rpt, &repeaterSetup::setTransmitMode,
@ -3951,7 +3976,19 @@ void wfmain::doCmd(cmds cmd)
emit getDTCS();
break;
case cmdGetRptAccessMode:
emit getRptAccessMode();
if(rigCaps.hasAdvancedRptrToneCmds) {
emit getRptAccessMode();
} else {
// Get both TONE and TSQL enabled status
emit getToneEnabled();
issueDelayedCommand(cmdGetTSQLEnabled);
}
break;
case cmdGetToneEnabled:
emit getToneEnabled();
break;
case cmdGetTSQLEnabled:
emit getTSQLEnabled();
break;
case cmdDispEnable:
emit scopeDisplayEnable();

Wyświetl plik

@ -118,6 +118,8 @@ signals:
void setRepeaterAccessMode(rptrAccessData_t rd);
void setTone(rptrTone_t t);
void setTSQL(rptrTone_t t);
void getToneEnabled();
void getTSQLEnabled();
void setRptDuplexOffset(freqt f);
void getRptDuplexOffset();

Wyświetl plik

@ -153,7 +153,7 @@ enum cmds {
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
cmdGetTone, cmdGetTSQL, cmdGetDTCS, cmdGetRptAccessMode, cmdSetTone, cmdSetTSQL, cmdSetRptAccessMode, cmdSetRptDuplexOffset, cmdGetRptDuplexOffset,
cmdGetTone, cmdGetTSQL, cmdGetToneEnabled, cmdGetTSQLEnabled, cmdGetDTCS, cmdGetRptAccessMode, cmdSetTone, cmdSetTSQL, cmdSetRptAccessMode, cmdSetRptDuplexOffset, cmdGetRptDuplexOffset,
cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS,
cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW,