Properly handle different rigctld client versions

merge-requests/8/head
Phil Taylor 2021-12-07 14:52:47 +00:00
rodzic 247817077c
commit 60118169e1
5 zmienionych plików z 121 dodań i 12 usunięć

Wyświetl plik

@ -22,6 +22,7 @@
rigCommander::rigCommander()
{
state.set(SCOPEFUNC,true,false);
}
rigCommander::~rigCommander()
@ -675,8 +676,6 @@ void rigCommander::setRitValue(int ritValue)
bool isNegative = false;
payload.setRawData("\x21\x00", 2);
qDebug() << "Sending RIT" << ritValue;
if(ritValue < 0)
{
isNegative = true;
@ -696,7 +695,6 @@ void rigCommander::setRitValue(int ritValue)
payload.append(QByteArray(1,(char)isNegative));
prepDataAndSend(payload);
qDebug() << "Sending RIT" << ritValue;
}
void rigCommander::setMode(mode_info m)
@ -1706,6 +1704,20 @@ void rigCommander::setModInputLevel(rigInput input, unsigned char level)
}
}
void rigCommander::setAfMute(bool gainOn)
{
QByteArray payload("\x1a\x09");
payload.append((quint8)gainOn);
prepDataAndSend(payload);
}
void rigCommander::setDialLock(bool lockOn)
{
QByteArray payload("\x16\x50");
payload.append((quint8)lockOn);
prepDataAndSend(payload);
}
void rigCommander::getModInputLevel(rigInput input)
{
switch(input)
@ -1739,6 +1751,18 @@ void rigCommander::getModInputLevel(rigInput input)
}
}
void rigCommander::getAfMute()
{
QByteArray payload("\x1a\x09");
prepDataAndSend(payload);
}
void rigCommander::getDialLock()
{
QByteArray payload("\x16\x50");
prepDataAndSend(payload);
}
QByteArray rigCommander::getUSBAddr()
{
QByteArray payload;
@ -2378,6 +2402,8 @@ void rigCommander::parseATU()
// [1]: 0x01
// [2]: 0 = off, 0x01 = on, 0x02 = tuning in-progress
emit haveATUStatus((unsigned char) payloadIn[2]);
// This is a bool so any non-zero will mean enabled.
state.set(TUNERFUNC, (bool)payloadIn[2], false);
}
void rigCommander::parsePTT()
@ -2438,6 +2464,8 @@ void rigCommander::parseRegisters1A()
case '\x07':
// IP+ status
break;
case '\x09':
state.set(MUTEFUNC, (quint8)payloadIn[2], false);
default:
break;
}
@ -2537,6 +2565,9 @@ void rigCommander::parseRegister16()
case '\x48': // Manual Notch
state.set(MNFUNC, payloadIn.at(2) != 0, false);
break;
case '\x50': // Dial lock
state.set(LOCKFUNC, payloadIn.at(2) != 0, false);
break;
default:
break;
}
@ -4482,12 +4513,12 @@ void rigCommander::stateUpdated()
getRitValue();
break;
case RITFUNC:
if (i.value()._valid) {
setRitEnable(state.getBool(RITFUNC));
}
getRitEnabled();
break;
if (i.value()._valid) {
setRitEnable(state.getBool(RITFUNC));
}
getRitEnabled();
break;
// All meters can only be updated from the rig end.
case SMETER:
case POWERMETER:
case ALCMETER:
@ -4495,6 +4526,66 @@ void rigCommander::stateUpdated()
case VOLTAGEMETER:
case CURRENTMETER:
break;
case AGC:
break;
case MODINPUT:
break;
case FAGCFUNC:
break;
case AIPFUNC:
break;
case APFFUNC:
break;
case RFFUNC: // Should this set RF output power to 0?
break;
case AROFUNC:
break;
case MUTEFUNC:
if (i.value()._valid) {
setAfMute(state.getBool(MUTEFUNC));
}
getAfMute();
break;
case VSCFUNC:
break;
case REVFUNC:
break;
case SQLFUNC:
break;
case ABMFUNC:
break;
case BCFUNC:
break;
case MBCFUNC:
break;
case AFCFUNC:
break;
case SATMODEFUNC:
break;
case NBLEVEL:
break;
case NBDEPTH:
break;
case NBWIDTH:
break;
case NRLEVEL:
break;
case RESUMEFUNC:
break;
case TBURSTFUNC:
break;
case TUNERFUNC:
if (i.value()._valid) {
setATU(state.getBool(TUNERFUNC));
}
getATUStatus();
break;
case LOCKFUNC:
if (i.value()._valid) {
setDialLock(state.getBool(LOCKFUNC));
}
getDialLock();
break;
}
}
++i;

Wyświetl plik

@ -184,6 +184,8 @@ public slots:
void getACCGain(unsigned char ab);
void getModInput(bool dataOn);
void getModInputLevel(rigInput input);
void getAfMute();
void getDialLock();
// Set Levels:
void setSquelch(unsigned char level);
@ -204,6 +206,8 @@ public slots:
void setAntiVoxGain(unsigned char gain);
void setModInput(rigInput input, bool dataOn);
void setModInputLevel(rigInput input, unsigned char level);
void setAfMute(bool muteOn);
void setDialLock(bool lockOn);
// NB, NR, IP+:
void setIPP(bool enabled);

Wyświetl plik

@ -185,6 +185,7 @@ void rigCtlClient::socketReadyRead()
if (command[0] == 0xf0 || command[0] == "chk_vfo")
{
chkVfoEecuted = true;
QString resp;
if (longReply) {
resp.append(QString("ChkVFO: "));
@ -296,7 +297,20 @@ void rigCtlClient::socketReadyRead()
response.append("0x7fffffff");
response.append("0x7fffffff");
*/
//response.append("done");
if (chkVfoEecuted) {
response.append(QString("vfo_ops=0x%1").arg(255, 0, 16));
response.append(QString("ptt_type=0x%1").arg(rigCaps.hasTransmit, 0, 16));
response.append(QString("has_set_vfo=0x%1").arg(1, 0, 16));
response.append(QString("has_get_vfo=0x%1").arg(1, 0, 16));
response.append(QString("has_set_freq=0x%1").arg(1, 0, 16));
response.append(QString("has_get_freq=0x%1").arg(1, 0, 16));
response.append(QString("has_set_conf=0x%1").arg(1, 0, 16));
response.append(QString("has_get_conf=0x%1").arg(1, 0, 16));
response.append(QString("has_power2mW=0x%1").arg(1, 0, 16));
response.append(QString("has_mW2power=0x%1").arg(1, 0, 16));
response.append(QString("timeout=0x%1").arg(1000, 0, 16));
response.append("done");
}
}
else if (command[0] == "f" || command[0] == "get_freq")
@ -610,7 +624,6 @@ void rigCtlClient::socketReadyRead()
}
else if (command[0] == "J" || command[0] == "set_rit")
{
qDebug(logRigCtlD()) << "set_rit:" << command[1];
rigState->set(RITVALUE, command[1].toInt(),true);
setCommand = true;
}

Wyświetl plik

@ -402,6 +402,7 @@ private:
rigCapabilities rigCaps;
rigstate* rigState = Q_NULLPTR;
rigCtlD* parent;
bool chkVfoEecuted=false;
QString getMode(unsigned char mode, bool datamode);
unsigned char getMode(QString modeString);
QString getFilter(unsigned char mode, unsigned char filter);

Wyświetl plik

@ -12,7 +12,7 @@
#include "rigidentities.h"
// Meters at the end as they are ALWAYS updated from the rig!
enum stateTypes { NONE, VFOAFREQ, VFOBFREQ, CURRENTVFO, PTT, MODE, FILTER, DUPLEX, DATAMODE, ANTENNA, RXANTENNA, CTCSS, TSQL, DTCS, CSQL,
enum stateTypes { VFOAFREQ, VFOBFREQ, CURRENTVFO, PTT, MODE, FILTER, DUPLEX, DATAMODE, ANTENNA, RXANTENNA, CTCSS, TSQL, DTCS, CSQL,
PREAMP, AGC, ATTENUATOR, MODINPUT, AFGAIN, RFGAIN, SQUELCH, TXPOWER, MICGAIN, COMPLEVEL, MONITORLEVEL, VOXGAIN, ANTIVOXGAIN,
FAGCFUNC, NBFUNC, COMPFUNC, VOXFUNC, TONEFUNC, TSQLFUNC, SBKINFUNC, FBKINFUNC, ANFFUNC, NRFUNC, AIPFUNC, APFFUNC, MONFUNC, MNFUNC,RFFUNC,
AROFUNC, MUTEFUNC, VSCFUNC, REVFUNC, SQLFUNC, ABMFUNC, BCFUNC, MBCFUNC, RITFUNC, AFCFUNC, SATMODEFUNC, SCOPEFUNC,