Add RIT function and other rigctl fixes

merge-requests/8/head
Phil Taylor 2021-12-07 12:32:51 +00:00
rodzic 81c9563f16
commit 247817077c
3 zmienionych plików z 82 dodań i 33 usunięć

Wyświetl plik

@ -675,6 +675,8 @@ void rigCommander::setRitValue(int ritValue)
bool isNegative = false;
payload.setRawData("\x21\x00", 2);
qDebug() << "Sending RIT" << ritValue;
if(ritValue < 0)
{
isNegative = true;
@ -694,6 +696,7 @@ void rigCommander::setRitValue(int ritValue)
payload.append(QByteArray(1,(char)isNegative));
prepDataAndSend(payload);
qDebug() << "Sending RIT" << ritValue;
}
void rigCommander::setMode(mode_info m)
@ -2347,6 +2350,7 @@ void rigCommander::parseRegister21()
break;
ritHz = f.Hz*((payloadIn.at(4)=='\x01')?-1:1);
emit haveRitFrequency(ritHz);
state.set(RITVALUE, ritHz, false);
break;
case '\x01':
// RIT on/off
@ -2356,6 +2360,7 @@ void rigCommander::parseRegister21()
} else {
emit haveRitEnabled(false);
}
state.set(RITFUNC, (bool)payloadIn.at(02), false);
break;
case '\x02':
// Delta TX setting on/off
@ -2505,13 +2510,13 @@ void rigCommander::parseRegister16()
case '\x43':
state.set(TSQLFUNC, payloadIn.at(2) != 0, false);
break;
case '\44':
case '\x44':
state.set(COMPFUNC, payloadIn.at(2) != 0, false);
break;
case '\45':
case '\x45':
state.set(MONFUNC, payloadIn.at(2) != 0, false);
break;
case '\46':
case '\x46':
state.set(VOXFUNC, payloadIn.at(2) != 0, false);
break;
case '\x47':
@ -2529,7 +2534,7 @@ void rigCommander::parseRegister16()
state.set(SBKINFUNC, false, false);
}
break;
case '\48': // Manual Notch
case '\x48': // Manual Notch
state.set(MNFUNC, payloadIn.at(2) != 0, false);
break;
default:
@ -4469,6 +4474,27 @@ void rigCommander::stateUpdated()
powerOff();
}
}
break;
case RITVALUE:
if (i.value()._valid) {
setRitValue(state.getInt32(RITVALUE));
}
getRitValue();
break;
case RITFUNC:
if (i.value()._valid) {
setRitEnable(state.getBool(RITFUNC));
}
getRitEnabled();
break;
case SMETER:
case POWERMETER:
case ALCMETER:
case COMPMETER:
case VOLTAGEMETER:
case CURRENTMETER:
break;
}
}
++i;

Wyświetl plik

@ -144,7 +144,7 @@ void rigCtlClient::socketReadyRead()
continue;
}
qDebug(logRigCtlD()) << sessionId << "command received" << commands;
//qDebug(logRigCtlD()) << sessionId << "command received" << commands;
// We have a full line so process command.
@ -198,29 +198,42 @@ void rigCtlClient::socketReadyRead()
response.append("1"); // rigctld protocol version
response.append(QString("%1").arg(rigCaps.rigctlModel));
response.append("0"); // Print something
bandType lastBand;
for (bandType band : rigCaps.bands)
{
response.append(generateFreqRange(band));
if (band != lastBand)
response.append(generateFreqRange(band));
lastBand = band;
}
response.append("0 0 0 0 0 0 0");
if (rigCaps.hasTransmit) {
for (bandType band : rigCaps.bands)
{
response.append(generateFreqRange(band));
{
if (band != lastBand)
response.append(generateFreqRange(band));
lastBand = band;
}
}
response.append("0 0 0 0 0 0 0");
response.append("0x1ff 1");
response.append("0x1ff 0");
response.append(QString("0x%1 1").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 10").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 100").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 1000").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 2500").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 5000").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 6125").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 8333").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 10000").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 12500").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 25000").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 100000").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 250000").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 1000000").arg(getRadioModes(), 0, 16));
response.append("0 0");
response.append("0x1e 2400");
response.append("0x2 500");
response.append("0x1 8000");
response.append("0x1 2400");
response.append("0x20 15000");
response.append("0x20 8000");
response.append("0x40 230000");
response.append(QString("0x%1 1200").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 2400").arg(getRadioModes(), 0, 16));
response.append(QString("0x%1 3000").arg(getRadioModes(), 0, 16));
response.append("0 0");
response.append("9900");
response.append("9900");
@ -283,7 +296,7 @@ void rigCtlClient::socketReadyRead()
response.append("0x7fffffff");
response.append("0x7fffffff");
*/
response.append("done");
//response.append("done");
}
else if (command[0] == "f" || command[0] == "get_freq")
@ -592,11 +605,13 @@ void rigCtlClient::socketReadyRead()
if (longReply) {
resp.append("RIT: ");
}
resp.append(QString("%1").arg(0));
resp.append(QString("%1").arg(rigState->getInt32(RITVALUE)));
response.append(resp);
}
}
else if (command[0] == "J" || command[0] == "set_rit")
{
qDebug(logRigCtlD()) << "set_rit:" << command[1];
rigState->set(RITVALUE, command[1].toInt(),true);
setCommand = true;
}
else if (command[0] == "y" || command[0] == "get_ant")
@ -1074,12 +1089,11 @@ void rigCtlClient::socketReadyRead()
if (str != "")
sendData(QString("%1%2").arg(str).arg(sep));
}
if (sep != "\n") {
sendData(QString("\n"));
}
sep = " ";
sep = "\n";
num = 0;
}
@ -1100,7 +1114,7 @@ void rigCtlClient::closeSocket()
void rigCtlClient::sendData(QString data)
{
qDebug(logRigCtlD()) << "Sending:" << data;
//qDebug(logRigCtlD()) << "Sending:" << data;
if (socket != Q_NULLPTR && socket->isValid() && socket->isOpen())
{
socket->write(data.toLatin1());
@ -1173,18 +1187,18 @@ QString rigCtlClient::getFilter(unsigned char mode, unsigned char filter) {
QString rigCtlClient::getMode(unsigned char mode, bool datamode) {
QString ret;
if (datamode) {
ret="PKT";
}
switch (mode) {
case 0:
if (datamode) { ret = "PKT"; }
ret.append("LSB");
break;
case 1:
if (datamode) { ret = "PKT"; }
ret.append("USB");
break;
case 2:
if (datamode) { ret = "PKT"; }
ret.append("AM");
break;
case 3:
@ -1194,6 +1208,7 @@ QString rigCtlClient::getMode(unsigned char mode, bool datamode) {
ret.append("RTTY");
break;
case 5:
if (datamode) { ret = "PKT"; }
ret.append("FM");
break;
case 6:
@ -1206,12 +1221,15 @@ QString rigCtlClient::getMode(unsigned char mode, bool datamode) {
ret.append("RTTYR");
break;
case 12:
if (datamode) { ret = "PKT"; }
ret.append("USB");
break;
case 17:
if (datamode) { ret = "PKT"; }
ret.append("LSB");
break;
case 22:
if (datamode) { ret = "PKT"; }
ret.append("FM");
break;
}
@ -1351,7 +1369,7 @@ QString rigCtlClient::generateFreqRange(bandType band)
QString ret = "";
if (lowFreq > 0 && highFreq > 0) {
ret = QString("%1 %2 0x%3 %4 %5 0x%6 0x%7").arg(lowFreq).arg(highFreq).arg(getRadioModes(),0,16).arg(-1).arg(-1).arg(0x16000003,0,16).arg(getAntennas(),0,16);
ret = QString("%1.000000 %2.000000 0x%3 %4 %5 0x%6 0x%7").arg(lowFreq).arg(highFreq).arg(getRadioModes(),0,16).arg(-1).arg(-1).arg(0x16000003,0,16).arg(getAntennas(),0,16);
}
return ret;
}
@ -1376,13 +1394,18 @@ quint64 rigCtlClient::getRadioModes()
QString curMode = mode.name;
if (!strcmp(curMode.toLocal8Bit(), mode_str[i].str))
{
//qDebug(logRigCtlD()) << "Found mode:" << mode.name << mode_str[i].mode;
modes |= mode_str[i].mode;
}
if (rigCaps.hasDataModes) {
curMode = "PKT" + mode.name;
if (!strcmp(curMode.toLocal8Bit(), mode_str[i].str))
{
modes |= mode_str[i].mode;
if (mode.name == "LSB" || mode.name == "USB" || mode.name == "FM" || mode.name == "AM")
{
// qDebug(logRigCtlD()) << "Found data mode:" << mode.name << mode_str[i].mode;
modes |= mode_str[i].mode;
}
}
}
}

Wyświetl plik

@ -16,7 +16,7 @@ enum stateTypes { NONE, VFOAFREQ, VFOBFREQ, CURRENTVFO, PTT, MODE, FILTER, DUPLE
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,
NBLEVEL, NBDEPTH, NBWIDTH, NRLEVEL, RIGINPUT, POWERONOFF,
NBLEVEL, NBDEPTH, NBWIDTH, NRLEVEL, RIGINPUT, POWERONOFF, RITVALUE,
RESUMEFUNC, TBURSTFUNC, TUNERFUNC, LOCKFUNC, SMETER, POWERMETER, SWRMETER, ALCMETER, COMPMETER, VOLTAGEMETER, CURRENTMETER
};
@ -47,7 +47,7 @@ public:
_mutex.unlock();
}
}
void set(stateTypes s, quint32 x, bool u) {
void set(stateTypes s, qint32 x, bool u) {
if ((quint64)x != map[s]._value) {
_mutex.lock();
map[s]._value = (quint64)x;
@ -110,9 +110,9 @@ public:
}
bool getBool(stateTypes s) { return map[s]._value != 0; }
quint8 getChar(stateTypes s) { return map[s]._value & 0xff; }
quint16 getInt16(stateTypes s) { return map[s]._value != 0xffff; }
quint32 getInt32(stateTypes s) { return map[s]._value != 0xffffffff; }
quint8 getChar(stateTypes s) { return (quint8)map[s]._value; }
quint16 getInt16(stateTypes s) { return (qint16)map[s]._value; }
qint32 getInt32(stateTypes s) { return (qint32)map[s]._value; }
quint64 getInt64(stateTypes s) { return map[s]._value; }
duplexMode getDuplex(stateTypes s) { return(duplexMode)map[s]._value; }
rigInput getInput(stateTypes s) { return(rigInput)map[s]._value; }