kopia lustrzana https://gitlab.com/eliggett/wfview
Add RIT function and other rigctl fixes
rodzic
81c9563f16
commit
247817077c
|
@ -675,6 +675,8 @@ void rigCommander::setRitValue(int ritValue)
|
||||||
bool isNegative = false;
|
bool isNegative = false;
|
||||||
payload.setRawData("\x21\x00", 2);
|
payload.setRawData("\x21\x00", 2);
|
||||||
|
|
||||||
|
qDebug() << "Sending RIT" << ritValue;
|
||||||
|
|
||||||
if(ritValue < 0)
|
if(ritValue < 0)
|
||||||
{
|
{
|
||||||
isNegative = true;
|
isNegative = true;
|
||||||
|
@ -694,6 +696,7 @@ void rigCommander::setRitValue(int ritValue)
|
||||||
payload.append(QByteArray(1,(char)isNegative));
|
payload.append(QByteArray(1,(char)isNegative));
|
||||||
|
|
||||||
prepDataAndSend(payload);
|
prepDataAndSend(payload);
|
||||||
|
qDebug() << "Sending RIT" << ritValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
void rigCommander::setMode(mode_info m)
|
void rigCommander::setMode(mode_info m)
|
||||||
|
@ -2347,6 +2350,7 @@ void rigCommander::parseRegister21()
|
||||||
break;
|
break;
|
||||||
ritHz = f.Hz*((payloadIn.at(4)=='\x01')?-1:1);
|
ritHz = f.Hz*((payloadIn.at(4)=='\x01')?-1:1);
|
||||||
emit haveRitFrequency(ritHz);
|
emit haveRitFrequency(ritHz);
|
||||||
|
state.set(RITVALUE, ritHz, false);
|
||||||
break;
|
break;
|
||||||
case '\x01':
|
case '\x01':
|
||||||
// RIT on/off
|
// RIT on/off
|
||||||
|
@ -2356,6 +2360,7 @@ void rigCommander::parseRegister21()
|
||||||
} else {
|
} else {
|
||||||
emit haveRitEnabled(false);
|
emit haveRitEnabled(false);
|
||||||
}
|
}
|
||||||
|
state.set(RITFUNC, (bool)payloadIn.at(02), false);
|
||||||
break;
|
break;
|
||||||
case '\x02':
|
case '\x02':
|
||||||
// Delta TX setting on/off
|
// Delta TX setting on/off
|
||||||
|
@ -2505,13 +2510,13 @@ void rigCommander::parseRegister16()
|
||||||
case '\x43':
|
case '\x43':
|
||||||
state.set(TSQLFUNC, payloadIn.at(2) != 0, false);
|
state.set(TSQLFUNC, payloadIn.at(2) != 0, false);
|
||||||
break;
|
break;
|
||||||
case '\44':
|
case '\x44':
|
||||||
state.set(COMPFUNC, payloadIn.at(2) != 0, false);
|
state.set(COMPFUNC, payloadIn.at(2) != 0, false);
|
||||||
break;
|
break;
|
||||||
case '\45':
|
case '\x45':
|
||||||
state.set(MONFUNC, payloadIn.at(2) != 0, false);
|
state.set(MONFUNC, payloadIn.at(2) != 0, false);
|
||||||
break;
|
break;
|
||||||
case '\46':
|
case '\x46':
|
||||||
state.set(VOXFUNC, payloadIn.at(2) != 0, false);
|
state.set(VOXFUNC, payloadIn.at(2) != 0, false);
|
||||||
break;
|
break;
|
||||||
case '\x47':
|
case '\x47':
|
||||||
|
@ -2529,7 +2534,7 @@ void rigCommander::parseRegister16()
|
||||||
state.set(SBKINFUNC, false, false);
|
state.set(SBKINFUNC, false, false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '\48': // Manual Notch
|
case '\x48': // Manual Notch
|
||||||
state.set(MNFUNC, payloadIn.at(2) != 0, false);
|
state.set(MNFUNC, payloadIn.at(2) != 0, false);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -4469,6 +4474,27 @@ void rigCommander::stateUpdated()
|
||||||
powerOff();
|
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;
|
++i;
|
||||||
|
|
61
rigctld.cpp
61
rigctld.cpp
|
@ -144,7 +144,7 @@ void rigCtlClient::socketReadyRead()
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug(logRigCtlD()) << sessionId << "command received" << commands;
|
//qDebug(logRigCtlD()) << sessionId << "command received" << commands;
|
||||||
|
|
||||||
// We have a full line so process command.
|
// We have a full line so process command.
|
||||||
|
|
||||||
|
@ -198,29 +198,42 @@ void rigCtlClient::socketReadyRead()
|
||||||
response.append("1"); // rigctld protocol version
|
response.append("1"); // rigctld protocol version
|
||||||
response.append(QString("%1").arg(rigCaps.rigctlModel));
|
response.append(QString("%1").arg(rigCaps.rigctlModel));
|
||||||
response.append("0"); // Print something
|
response.append("0"); // Print something
|
||||||
|
bandType lastBand;
|
||||||
for (bandType band : rigCaps.bands)
|
for (bandType band : rigCaps.bands)
|
||||||
{
|
{
|
||||||
|
if (band != lastBand)
|
||||||
response.append(generateFreqRange(band));
|
response.append(generateFreqRange(band));
|
||||||
|
lastBand = band;
|
||||||
}
|
}
|
||||||
response.append("0 0 0 0 0 0 0");
|
response.append("0 0 0 0 0 0 0");
|
||||||
if (rigCaps.hasTransmit) {
|
if (rigCaps.hasTransmit) {
|
||||||
for (bandType band : rigCaps.bands)
|
for (bandType band : rigCaps.bands)
|
||||||
{
|
{
|
||||||
|
if (band != lastBand)
|
||||||
response.append(generateFreqRange(band));
|
response.append(generateFreqRange(band));
|
||||||
|
lastBand = band;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
response.append("0 0 0 0 0 0 0");
|
response.append("0 0 0 0 0 0 0");
|
||||||
|
|
||||||
response.append("0x1ff 1");
|
response.append(QString("0x%1 1").arg(getRadioModes(), 0, 16));
|
||||||
response.append("0x1ff 0");
|
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("0 0");
|
||||||
response.append("0x1e 2400");
|
response.append(QString("0x%1 1200").arg(getRadioModes(), 0, 16));
|
||||||
response.append("0x2 500");
|
response.append(QString("0x%1 2400").arg(getRadioModes(), 0, 16));
|
||||||
response.append("0x1 8000");
|
response.append(QString("0x%1 3000").arg(getRadioModes(), 0, 16));
|
||||||
response.append("0x1 2400");
|
|
||||||
response.append("0x20 15000");
|
|
||||||
response.append("0x20 8000");
|
|
||||||
response.append("0x40 230000");
|
|
||||||
response.append("0 0");
|
response.append("0 0");
|
||||||
response.append("9900");
|
response.append("9900");
|
||||||
response.append("9900");
|
response.append("9900");
|
||||||
|
@ -283,7 +296,7 @@ void rigCtlClient::socketReadyRead()
|
||||||
response.append("0x7fffffff");
|
response.append("0x7fffffff");
|
||||||
response.append("0x7fffffff");
|
response.append("0x7fffffff");
|
||||||
*/
|
*/
|
||||||
response.append("done");
|
//response.append("done");
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (command[0] == "f" || command[0] == "get_freq")
|
else if (command[0] == "f" || command[0] == "get_freq")
|
||||||
|
@ -592,11 +605,13 @@ void rigCtlClient::socketReadyRead()
|
||||||
if (longReply) {
|
if (longReply) {
|
||||||
resp.append("RIT: ");
|
resp.append("RIT: ");
|
||||||
}
|
}
|
||||||
resp.append(QString("%1").arg(0));
|
resp.append(QString("%1").arg(rigState->getInt32(RITVALUE)));
|
||||||
response.append(resp);
|
response.append(resp);
|
||||||
}
|
}
|
||||||
else if (command[0] == "J" || command[0] == "set_rit")
|
else if (command[0] == "J" || command[0] == "set_rit")
|
||||||
{
|
{
|
||||||
|
qDebug(logRigCtlD()) << "set_rit:" << command[1];
|
||||||
|
rigState->set(RITVALUE, command[1].toInt(),true);
|
||||||
setCommand = true;
|
setCommand = true;
|
||||||
}
|
}
|
||||||
else if (command[0] == "y" || command[0] == "get_ant")
|
else if (command[0] == "y" || command[0] == "get_ant")
|
||||||
|
@ -1074,12 +1089,11 @@ void rigCtlClient::socketReadyRead()
|
||||||
if (str != "")
|
if (str != "")
|
||||||
sendData(QString("%1%2").arg(str).arg(sep));
|
sendData(QString("%1%2").arg(str).arg(sep));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sep != "\n") {
|
if (sep != "\n") {
|
||||||
sendData(QString("\n"));
|
sendData(QString("\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
sep = " ";
|
sep = "\n";
|
||||||
num = 0;
|
num = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1100,7 +1114,7 @@ void rigCtlClient::closeSocket()
|
||||||
|
|
||||||
void rigCtlClient::sendData(QString data)
|
void rigCtlClient::sendData(QString data)
|
||||||
{
|
{
|
||||||
qDebug(logRigCtlD()) << "Sending:" << data;
|
//qDebug(logRigCtlD()) << "Sending:" << data;
|
||||||
if (socket != Q_NULLPTR && socket->isValid() && socket->isOpen())
|
if (socket != Q_NULLPTR && socket->isValid() && socket->isOpen())
|
||||||
{
|
{
|
||||||
socket->write(data.toLatin1());
|
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 rigCtlClient::getMode(unsigned char mode, bool datamode) {
|
||||||
|
|
||||||
QString ret;
|
QString ret;
|
||||||
if (datamode) {
|
|
||||||
ret="PKT";
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case 0:
|
case 0:
|
||||||
|
if (datamode) { ret = "PKT"; }
|
||||||
ret.append("LSB");
|
ret.append("LSB");
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
|
if (datamode) { ret = "PKT"; }
|
||||||
ret.append("USB");
|
ret.append("USB");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
if (datamode) { ret = "PKT"; }
|
||||||
ret.append("AM");
|
ret.append("AM");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
@ -1194,6 +1208,7 @@ QString rigCtlClient::getMode(unsigned char mode, bool datamode) {
|
||||||
ret.append("RTTY");
|
ret.append("RTTY");
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
|
if (datamode) { ret = "PKT"; }
|
||||||
ret.append("FM");
|
ret.append("FM");
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
|
@ -1206,12 +1221,15 @@ QString rigCtlClient::getMode(unsigned char mode, bool datamode) {
|
||||||
ret.append("RTTYR");
|
ret.append("RTTYR");
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
|
if (datamode) { ret = "PKT"; }
|
||||||
ret.append("USB");
|
ret.append("USB");
|
||||||
break;
|
break;
|
||||||
case 17:
|
case 17:
|
||||||
|
if (datamode) { ret = "PKT"; }
|
||||||
ret.append("LSB");
|
ret.append("LSB");
|
||||||
break;
|
break;
|
||||||
case 22:
|
case 22:
|
||||||
|
if (datamode) { ret = "PKT"; }
|
||||||
ret.append("FM");
|
ret.append("FM");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1351,7 +1369,7 @@ QString rigCtlClient::generateFreqRange(bandType band)
|
||||||
QString ret = "";
|
QString ret = "";
|
||||||
|
|
||||||
if (lowFreq > 0 && highFreq > 0) {
|
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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1376,17 +1394,22 @@ quint64 rigCtlClient::getRadioModes()
|
||||||
QString curMode = mode.name;
|
QString curMode = mode.name;
|
||||||
if (!strcmp(curMode.toLocal8Bit(), mode_str[i].str))
|
if (!strcmp(curMode.toLocal8Bit(), mode_str[i].str))
|
||||||
{
|
{
|
||||||
|
//qDebug(logRigCtlD()) << "Found mode:" << mode.name << mode_str[i].mode;
|
||||||
modes |= mode_str[i].mode;
|
modes |= mode_str[i].mode;
|
||||||
}
|
}
|
||||||
if (rigCaps.hasDataModes) {
|
if (rigCaps.hasDataModes) {
|
||||||
curMode = "PKT" + mode.name;
|
curMode = "PKT" + mode.name;
|
||||||
if (!strcmp(curMode.toLocal8Bit(), mode_str[i].str))
|
if (!strcmp(curMode.toLocal8Bit(), mode_str[i].str))
|
||||||
{
|
{
|
||||||
|
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;
|
modes |= mode_str[i].mode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return modes;
|
return modes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
10
rigstate.h
10
rigstate.h
|
@ -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,
|
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,
|
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,
|
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
|
RESUMEFUNC, TBURSTFUNC, TUNERFUNC, LOCKFUNC, SMETER, POWERMETER, SWRMETER, ALCMETER, COMPMETER, VOLTAGEMETER, CURRENTMETER
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ public:
|
||||||
_mutex.unlock();
|
_mutex.unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void set(stateTypes s, quint32 x, bool u) {
|
void set(stateTypes s, qint32 x, bool u) {
|
||||||
if ((quint64)x != map[s]._value) {
|
if ((quint64)x != map[s]._value) {
|
||||||
_mutex.lock();
|
_mutex.lock();
|
||||||
map[s]._value = (quint64)x;
|
map[s]._value = (quint64)x;
|
||||||
|
@ -110,9 +110,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
bool getBool(stateTypes s) { return map[s]._value != 0; }
|
bool getBool(stateTypes s) { return map[s]._value != 0; }
|
||||||
quint8 getChar(stateTypes s) { return map[s]._value & 0xff; }
|
quint8 getChar(stateTypes s) { return (quint8)map[s]._value; }
|
||||||
quint16 getInt16(stateTypes s) { return map[s]._value != 0xffff; }
|
quint16 getInt16(stateTypes s) { return (qint16)map[s]._value; }
|
||||||
quint32 getInt32(stateTypes s) { return map[s]._value != 0xffffffff; }
|
qint32 getInt32(stateTypes s) { return (qint32)map[s]._value; }
|
||||||
quint64 getInt64(stateTypes s) { return map[s]._value; }
|
quint64 getInt64(stateTypes s) { return map[s]._value; }
|
||||||
duplexMode getDuplex(stateTypes s) { return(duplexMode)map[s]._value; }
|
duplexMode getDuplex(stateTypes s) { return(duplexMode)map[s]._value; }
|
||||||
rigInput getInput(stateTypes s) { return(rigInput)map[s]._value; }
|
rigInput getInput(stateTypes s) { return(rigInput)map[s]._value; }
|
||||||
|
|
Ładowanie…
Reference in New Issue