diff --git a/rigctld.cpp b/rigctld.cpp index 18d6ca0..0563af9 100644 --- a/rigctld.cpp +++ b/rigctld.cpp @@ -456,12 +456,12 @@ void rigCtlClient::socketReadyRead() else if (command[0] == "l" || command[0] == "get_level") { QString resp; - int value = 0; + float value = 0; if (longReply && command.length() > 1) { resp.append(QString("%1: ").arg(command[1])); } if (command[1] == "STRENGTH") { - value = rigState->sMeter; + value = (float)rigState->sMeter; if (value > 240) value = value - 176; else if (value > 120) @@ -477,15 +477,96 @@ void rigCtlClient::socketReadyRead() else if (value > 0) value = value - 54; } + else if (command[1] == "AF") { + value = (float)rigState->afGain / 255; + } + else if (command[1] == "RF") { + value = (float)rigState->rfGain / 255; + } + else if (command[1] == "SQL") { + value = (float)rigState->squelch / 255; + } + else if (command[1] == "COMP") { + value = (float)rigState->compLevel / 255; + } + else if (command[1] == "MICGAIN") { + value = (float)rigState->micGain / 255; + emit parent->setMicGain(value); + } + else if (command[1] == "MON") { + value = (float)rigState->monitorLevel / 255; + } + else if (command[1] == "VOXGAIN") { + value = (float)rigState->voxGain / 255; + } + else if (command[1] == "ANTIVOX") { + value = (float)rigState->antiVoxGain / 255; + } + else if (command[1] == "RFPOWER") { + value = (float)rigState->txPower / 255; + } resp.append(QString("%1").arg(value)); response.append(resp); } - else if (command[0] == "L" || command[0] == "set_level") + else if (command[0] == "L" || command[0] == "set_level" && command.length() > 2) { + int value; setCommand = true; + if (command[1] == "AF") { + value = command[2].toFloat() * 255; + emit parent->setAfGain(value); + } + else if (command[1] == "RF") { + value = command[2].toFloat() * 255; + emit parent->setRfGain(value); + } + else if (command[1] == "SQL") { + value = command[2].toFloat() * 255; + emit parent->setSql(value); + } + else if (command[1] == "COMP") { + value = command[2].toFloat() * 255; + emit parent->setCompLevel(value); + } + else if (command[1] == "MICGAIN") { + value = command[2].toFloat() * 255; + emit parent->setMicGain(value); + } + else if (command[1] == "MON") { + value = command[2].toFloat() * 255; + emit parent->setMonitorLevel(value); + } + else if (command[1] == "VOXGAIN") { + value = command[2].toFloat() * 255; + emit parent->setVoxGain(value); + } + else if (command[1] == "ANTIVOX") { + value = command[2].toFloat() * 255; + emit parent->setAntiVoxGain(value); + } + else if (command[1] == "RFPOWER") { + value = command[2].toFloat() * 255; + emit parent->setTxPower(value); + } + + qInfo(logRigCtlD()) << "Setting:" << command[1] << command[2] << value; + } else if (command[0] == "u" || command[0] == "get_func") + { + QString resp; + if (longReply && command.length() > 1) { + resp.append(QString("%1: ").arg(command[1])); + } + resp.append(QString("%1").arg(0)); + response.append(resp); + } + else if (command[0] == "R" || command[0] == "set_func") + { + setCommand = true; + } + else if (command[0] == 0x88 || command[0] == "get_powerstat") { QString resp; if (longReply && command.length() > 1) { @@ -493,10 +574,17 @@ void rigCtlClient::socketReadyRead() } resp.append(QString("%1").arg(0)); response.append(resp); - } - else if (command[0] == "R" || command[0] == "set_func") + } + else if (command.length() > 1 && command[0] == 0x87 || command[0] == "set_powerstat") { - setCommand = true; + setCommand = true; + if (command[1] == "0") + { + emit parent->sendPowerOff(); + } + else { + emit parent->sendPowerOn(); + } } else { qInfo(logRigCtlD()) << "Unimplemented command" << commandBuffer; @@ -802,10 +890,18 @@ QString rigCtlClient::generateFreqRange(bandType band) { for (int i = 0; mode_str[i].str[0] != '\0'; i++) { - if (!strcmp(mode.name.toLocal8Bit(), mode_str[i].str)) + QString curMode = mode.name; + if (!strcmp(curMode.toLocal8Bit(), mode_str[i].str)) { 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; + } + } } } QString ret = ""; diff --git a/rigctld.h b/rigctld.h index 96398f4..39e92fb 100644 --- a/rigctld.h +++ b/rigctld.h @@ -126,6 +126,23 @@ signals: void setVFO(unsigned char vfo); void setSplit(unsigned char split); + // Power + void sendPowerOn(); + void sendPowerOff(); + + //Level set + void setRfGain(unsigned char level); + void setAfGain(unsigned char level); + void setSql(unsigned char level); + void setMicGain(unsigned char); + void setCompLevel(unsigned char); + void setTxPower(unsigned char); + void setMonitorLevel(unsigned char); + void setVoxGain(unsigned char); + void setAntiVoxGain(unsigned char); + void setSpectrumRefLevel(int); + + public slots: virtual void incomingConnection(qintptr socketDescriptor); void receiveRigCaps(rigCapabilities caps); diff --git a/wfmain.cpp b/wfmain.cpp index f7ab67e..39b1823 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -296,6 +296,7 @@ void wfmain::rigConnections() connect(this, SIGNAL(getSpectrumRefLevel()), rig, SLOT(getSpectrumRefLevel())); connect(this, SIGNAL(getModInputLevel(rigInput)), rig, SLOT(getModInputLevel(rigInput))); + // Levels: Set: connect(this, SIGNAL(setRfGain(unsigned char)), rig, SLOT(setRfGain(unsigned char))); connect(this, SIGNAL(setAfGain(unsigned char)), rig, SLOT(setAfGain(unsigned char))); @@ -306,7 +307,7 @@ void wfmain::rigConnections() connect(this, SIGNAL(setVoxGain(unsigned char)), rig, SLOT(setVoxGain(unsigned char))); connect(this, SIGNAL(setAntiVoxGain(unsigned char)), rig, SLOT(setAntiVoxGain(unsigned char))); connect(this, SIGNAL(setSpectrumRefLevel(int)), rig, SLOT(setSpectrumRefLevel(int))); - connect(this, SIGNAL(setModLevel(rigInput,unsigned char)), rig, SLOT(setModInputLevel(rigInput,unsigned char))); + connect(this, SIGNAL(setModLevel(rigInput, unsigned char)), rig, SLOT(setModInputLevel(rigInput, unsigned char))); // Levels: handle return on query: connect(rig, SIGNAL(haveRfGain(unsigned char)), this, SLOT(receiveRfGain(unsigned char))); @@ -403,6 +404,20 @@ void wfmain::makeRig() connect(rigCtl, SIGNAL(setMode(unsigned char, unsigned char)), rig, SLOT(setMode(unsigned char, unsigned char))); connect(rigCtl, SIGNAL(setDataMode(bool, unsigned char)), rig, SLOT(setDataMode(bool, unsigned char))); connect(rigCtl, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool))); + connect(rigCtl, SIGNAL(sendPowerOn()), rig, SLOT(powerOn())); + connect(rigCtl, SIGNAL(sendPowerOff()), rig, SLOT(powerOff())); + + // Levels: Set: + 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(setSql(unsigned char)), rig, SLOT(setSquelch(unsigned char))); + connect(rigCtl, SIGNAL(setTxPower(unsigned char)), rig, SLOT(setTxPower(unsigned char))); + connect(rigCtl, SIGNAL(setMicGain(unsigned char)), rig, SLOT(setMicGain(unsigned char))); + connect(rigCtl, SIGNAL(setMonitorLevel(unsigned char)), rig, SLOT(setMonitorLevel(unsigned char))); + connect(rigCtl, SIGNAL(setVoxGain(unsigned char)), rig, SLOT(setVoxGain(unsigned char))); + connect(rigCtl, SIGNAL(setAntiVoxGain(unsigned char)), rig, SLOT(setAntiVoxGain(unsigned char))); + connect(rigCtl, SIGNAL(setSpectrumRefLevel(int)), rig, SLOT(setSpectrumRefLevel(int))); + } } } @@ -5267,6 +5282,20 @@ void wfmain::on_enableRigctldChk_clicked(bool checked) connect(rigCtl, SIGNAL(setMode(unsigned char, unsigned char)), rig, SLOT(setMode(unsigned char, unsigned char))); connect(rigCtl, SIGNAL(setDataMode(bool, unsigned char)), rig, SLOT(setDataMode(bool, unsigned char))); connect(rigCtl, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool))); + connect(rigCtl, SIGNAL(sendPowerOn()), rig, SLOT(powerOn())); + connect(rigCtl, SIGNAL(sendPowerOff()), rig, SLOT(powerOff())); + + // Levels: Set: + 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(setSql(unsigned char)), rig, SLOT(setSquelch(unsigned char))); + connect(rigCtl, SIGNAL(setTxPower(unsigned char)), rig, SLOT(setTxPower(unsigned char))); + connect(rigCtl, SIGNAL(setMicGain(unsigned char)), rig, SLOT(setMicGain(unsigned char))); + connect(rigCtl, SIGNAL(setMonitorLevel(unsigned char)), rig, SLOT(setMonitorLevel(unsigned char))); + connect(rigCtl, SIGNAL(setVoxGain(unsigned char)), rig, SLOT(setVoxGain(unsigned char))); + connect(rigCtl, SIGNAL(setAntiVoxGain(unsigned char)), rig, SLOT(setAntiVoxGain(unsigned char))); + connect(rigCtl, SIGNAL(setSpectrumRefLevel(int)), rig, SLOT(setSpectrumRefLevel(int))); + emit sendRigCaps(rigCaps); emit requestRigState(); }