More rigctl features/fixes

merge-requests/5/merge
Phil Taylor 2021-08-07 01:14:41 +01:00
rodzic a945988671
commit c4ed4d2de4
5 zmienionych plików z 122 dodań i 35 usunięć

Wyświetl plik

@ -1223,6 +1223,7 @@ void rigCommander::parseCommand()
break; break;
case '\x11': case '\x11':
emit haveAttenuator((unsigned char)payloadIn.at(1)); emit haveAttenuator((unsigned char)payloadIn.at(1));
rigState.attenuator = (unsigned char)payloadIn.at(1);
break; break;
case '\x12': case '\x12':
emit haveAntenna((unsigned char)payloadIn.at(1), (bool)payloadIn.at(2)); emit haveAntenna((unsigned char)payloadIn.at(1), (bool)payloadIn.at(2));

Wyświetl plik

@ -75,6 +75,7 @@ struct rigStateStruct {
quint16 csql; quint16 csql;
// Levels // Levels
unsigned char preamp; unsigned char preamp;
unsigned char attenuator;
unsigned char modInput; unsigned char modInput;
unsigned char afGain; unsigned char afGain;
unsigned char rfGain; unsigned char rfGain;

Wyświetl plik

@ -173,8 +173,38 @@ void rigCtlClient::socketReadyRead()
response.append("9900"); response.append("9900");
response.append("10000"); response.append("10000");
response.append("0"); response.append("0");
response.append("10"); QString preamps="";
response.append("10 20 30"); if (rigCaps.hasPreamp) {
for (unsigned char pre : rigCaps.preamps)
{
if (pre == 0)
continue;
preamps.append(QString("%1 ").arg(pre*10));
}
if (preamps.endsWith(" "))
preamps.chop(1);
}
else {
preamps = "0";
}
response.append(preamps);
QString attens = "";
if (rigCaps.hasAttenuator) {
for (unsigned char att : rigCaps.attenuators)
{
if (att == 0)
continue;
attens.append(QString("%1 ").arg(att,0,16));
}
if (attens.endsWith(" "))
attens.chop(1);
}
else {
attens = "0";
}
response.append(attens);
response.append("0x3effffff"); response.append("0x3effffff");
response.append("0x3effffff"); response.append("0x3effffff");
response.append("0x7fffffff"); response.append("0x7fffffff");
@ -369,12 +399,17 @@ void rigCtlClient::socketReadyRead()
} }
else if (command[0] == "i" || command[0] == "get_split_freq") else if (command[0] == "i" || command[0] == "get_split_freq")
{ {
QString resp;
if (longReply) {
resp.append("TX VFO: ");
}
if (rigState->currentVfo == 0) { if (rigState->currentVfo == 0) {
response.append(QString("%1").arg(rigState->vfoBFreq.Hz)); resp.append(QString("%1").arg(rigState->vfoBFreq.Hz));
} }
else { else {
response.append(QString("%1").arg(rigState->vfoAFreq.Hz)); resp.append(QString("%1").arg(rigState->vfoAFreq.Hz));
} }
response.append(resp);
} }
else if (command[0] == "I" || command[0] == "set_split_freq") else if (command[0] == "I" || command[0] == "set_split_freq")
{ {
@ -424,18 +459,26 @@ void rigCtlClient::socketReadyRead()
} }
else if (command[0] == "s" || command[0] == "get_split_vfo") else if (command[0] == "s" || command[0] == "get_split_vfo")
{ {
response.append(QString("0")); if (longReply) {
response.append(QString("VFOA")); response.append(QString("Split: 0"));
response.append(QString("TX VFO: VFOA"));
}
else
{
response.append("0");
response.append("VFOA");
}
} }
else if (command[0] == "j" || command[0] == "get_rit") else if (command[0] == "j" || command[0] == "get_rit")
{ {
QString resp; QString resp;
if (longReply) { if (longReply) {
resp.append("RIT: "); resp.append("RIT: ");
} }
resp.append(QString("%1").arg(0)); resp.append(QString("%1").arg(0));
response.append(resp); response.append(resp);
} }
else if (command[0] == "J" || command[0] == "set_rit") else if (command[0] == "J" || command[0] == "set_rit")
{ {
setCommand = true; setCommand = true;
@ -458,7 +501,7 @@ void rigCtlClient::socketReadyRead()
QString resp; QString resp;
float value = 0; float value = 0;
if (longReply && command.length() > 1) { if (longReply && command.length() > 1) {
resp.append(QString("%1: ").arg(command[1])); resp.append("Level Value: ");
} }
if (command[1] == "STRENGTH") { if (command[1] == "STRENGTH") {
value = (float)rigState->sMeter; value = (float)rigState->sMeter;
@ -505,6 +548,15 @@ void rigCtlClient::socketReadyRead()
else if (command[1] == "RFPOWER") { else if (command[1] == "RFPOWER") {
value = (float)rigState->txPower / 255; value = (float)rigState->txPower / 255;
} }
else if (command[1] == "PREAMP") {
value = (float)rigState->preamp * 10;
qInfo(logRigCtlD()) << "PREAMP:" << command[1] << rigState->preamp << value;
}
else if (command[1] == "ATT") {
value = (float)rigState->attenuator;
qInfo(logRigCtlD()) << "ATT:" << command[1] << rigState->attenuator << value;
}
resp.append(QString("%1").arg(value)); resp.append(QString("%1").arg(value));
response.append(resp); response.append(resp);
@ -516,66 +568,82 @@ void rigCtlClient::socketReadyRead()
if (command[1] == "AF") { if (command[1] == "AF") {
value = command[2].toFloat() * 255; value = command[2].toFloat() * 255;
emit parent->setAfGain(value); emit parent->setAfGain(value);
rigState->afGain = (unsigned char)value;
} }
else if (command[1] == "RF") { else if (command[1] == "RF") {
value = command[2].toFloat() * 255; value = command[2].toFloat() * 255;
emit parent->setRfGain(value); emit parent->setRfGain(value);
rigState->rfGain = (unsigned char)value;
} }
else if (command[1] == "SQL") { else if (command[1] == "SQL") {
value = command[2].toFloat() * 255; value = command[2].toFloat() * 255;
emit parent->setSql(value); emit parent->setSql(value);
rigState->squelch = (unsigned char)value;
} }
else if (command[1] == "COMP") { else if (command[1] == "COMP") {
value = command[2].toFloat() * 255; value = command[2].toFloat() * 255;
emit parent->setCompLevel(value); emit parent->setCompLevel(value);
rigState->compLevel = (unsigned char)value;
} }
else if (command[1] == "MICGAIN") { else if (command[1] == "MICGAIN") {
value = command[2].toFloat() * 255; value = command[2].toFloat() * 255;
emit parent->setMicGain(value); emit parent->setMicGain(value);
rigState->micGain = (unsigned char)value;
} }
else if (command[1] == "MON") { else if (command[1] == "MON") {
value = command[2].toFloat() * 255; value = command[2].toFloat() * 255;
emit parent->setMonitorLevel(value); emit parent->setMonitorLevel(value);
rigState->monitorLevel = (unsigned char)value;
} }
else if (command[1] == "VOXGAIN") { else if (command[1] == "VOXGAIN") {
value = command[2].toFloat() * 255; value = command[2].toFloat() * 255;
emit parent->setVoxGain(value); emit parent->setVoxGain(value);
rigState->voxGain = (unsigned char)value;
} }
else if (command[1] == "ANTIVOX") { else if (command[1] == "ANTIVOX") {
value = command[2].toFloat() * 255; value = command[2].toFloat() * 255;
emit parent->setAntiVoxGain(value); emit parent->setAntiVoxGain(value);
rigState->antiVoxGain = (unsigned char)value;
} }
else if (command[1] == "RFPOWER") { else if (command[1] == "ATT") {
value = command[2].toFloat() * 255; value = command[2].toFloat();
emit parent->setTxPower(value); emit parent->setAttenuator((unsigned char)value);
rigState->attenuator = (unsigned char)value;
} }
else if (command[1] == "PREAMP") {
value = command[2].toFloat()/10;
emit parent->setPreamp((unsigned char)value);
rigState->preamp = (unsigned char)value;
}
qInfo(logRigCtlD()) << "Setting:" << command[1] << command[2] << value; qInfo(logRigCtlD()) << "Setting:" << command[1] << command[2] << value;
} }
else if (command[0] == "u" || command[0] == "get_func") else if (command[0] == "u" || command[0] == "get_func")
{ {
QString resp; QString resp="";
if (longReply && command.length() > 1) { if (longReply ) {
resp.append(QString("%1: ").arg(command[1])); resp.append(QString("Func Status: "));
}
resp.append(QString("%1").arg(0));
response.append(resp);
} }
resp.append("0");
response.append(resp);
}
else if (command[0] == "R" || command[0] == "set_func") else if (command[0] == "R" || command[0] == "set_func")
{ {
setCommand = true; setCommand = true;
if (command.length()>2)
qInfo(logRigCtlD()) << "Setting:" << command[1] << command[2];
} }
else if (command[0] == 0x88 || command[0] == "get_powerstat") else if (command[0] == 0x88 || command[0] == "get_powerstat")
{ {
/*
QString resp; QString resp;
if (longReply && command.length() > 1) { if (longReply && command.length() > 1) {
resp.append(QString("Power Status: ")); resp.append(QString("Power Status: "));
} }
resp.append(QString("%1").arg(0)); // Always reply with ON resp.append(QString("%1").arg(1)); // Always reply with ON
response.append(resp); response.append(resp);
*/
} }
else if (command.length() > 1 && command[0] == 0x87 || command[0] == "set_powerstat") else if (command.length() > 1 && command[0] == 0x87 || command[0] == "set_powerstat")
{ {
@ -887,7 +955,18 @@ QString rigCtlClient::generateFreqRange(bandType band)
highFreq = 30000000; highFreq = 30000000;
break; break;
} }
quint64 modes=0; 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(0xf,0,16);
}
return ret;
}
quint64 rigCtlClient::getRadioModes()
{
quint64 modes = 0;
for (mode_info mode : rigCaps.modes) for (mode_info mode : rigCaps.modes)
{ {
for (int i = 0; mode_str[i].str[0] != '\0'; i++) for (int i = 0; mode_str[i].str[0] != '\0'; i++)
@ -906,10 +985,5 @@ QString rigCtlClient::generateFreqRange(bandType band)
} }
} }
} }
QString ret = ""; return modes;
}
if (lowFreq > 0 && highFreq > 0) {
ret = QString("%1 %2 0x%3 %4 %5 0x%6 0x%7").arg(lowFreq).arg(highFreq).arg(modes,0,16).arg(-1).arg(-1).arg(0x16000003,0,16).arg(0xf,0,16);
}
return ret;
}

Wyświetl plik

@ -130,6 +130,10 @@ signals:
void sendPowerOn(); void sendPowerOn();
void sendPowerOff(); void sendPowerOff();
// Att/preamp
void setAttenuator(unsigned char att);
void setPreamp(unsigned char pre);
//Level set //Level set
void setRfGain(unsigned char level); void setRfGain(unsigned char level);
void setAfGain(unsigned char level); void setAfGain(unsigned char level);
@ -183,6 +187,7 @@ private:
unsigned char getMode(QString modeString); unsigned char getMode(QString modeString);
QString getFilter(unsigned char mode, unsigned char filter); QString getFilter(unsigned char mode, unsigned char filter);
QString generateFreqRange(bandType band); QString generateFreqRange(bandType band);
quint64 getRadioModes();
}; };

Wyświetl plik

@ -407,6 +407,9 @@ void wfmain::makeRig()
connect(rigCtl, SIGNAL(sendPowerOn()), rig, SLOT(powerOn())); connect(rigCtl, SIGNAL(sendPowerOn()), rig, SLOT(powerOn()));
connect(rigCtl, SIGNAL(sendPowerOff()), rig, SLOT(powerOff())); connect(rigCtl, SIGNAL(sendPowerOff()), rig, SLOT(powerOff()));
connect(rigCtl, SIGNAL(setAttenuator(unsigned char)), rig, SLOT(setAttenuator(unsigned char)));
connect(rigCtl, SIGNAL(setPreamp(unsigned char)), rig, SLOT(setPreamp(unsigned char)));
// Levels: Set: // Levels: Set:
connect(rigCtl, SIGNAL(setRfGain(unsigned char)), rig, SLOT(setRfGain(unsigned char))); connect(rigCtl, SIGNAL(setRfGain(unsigned char)), rig, SLOT(setRfGain(unsigned char)));
connect(rigCtl, SIGNAL(setAfGain(unsigned char)), rig, SLOT(setAfGain(unsigned char))); connect(rigCtl, SIGNAL(setAfGain(unsigned char)), rig, SLOT(setAfGain(unsigned char)));
@ -5285,6 +5288,9 @@ void wfmain::on_enableRigctldChk_clicked(bool checked)
connect(rigCtl, SIGNAL(sendPowerOn()), rig, SLOT(powerOn())); connect(rigCtl, SIGNAL(sendPowerOn()), rig, SLOT(powerOn()));
connect(rigCtl, SIGNAL(sendPowerOff()), rig, SLOT(powerOff())); connect(rigCtl, SIGNAL(sendPowerOff()), rig, SLOT(powerOff()));
connect(rigCtl, SIGNAL(setAttenuator(unsigned char)), rig, SLOT(setAttenuator(unsigned char)));
connect(rigCtl, SIGNAL(setPreamp(unsigned char)), rig, SLOT(setPreamp(unsigned char)));
// Levels: Set: // Levels: Set:
connect(rigCtl, SIGNAL(setRfGain(unsigned char)), rig, SLOT(setRfGain(unsigned char))); connect(rigCtl, SIGNAL(setRfGain(unsigned char)), rig, SLOT(setRfGain(unsigned char)));
connect(rigCtl, SIGNAL(setAfGain(unsigned char)), rig, SLOT(setAfGain(unsigned char))); connect(rigCtl, SIGNAL(setAfGain(unsigned char)), rig, SLOT(setAfGain(unsigned char)));