diff --git a/rigcommander.cpp b/rigcommander.cpp index 748eef2..36c863b 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -26,7 +26,7 @@ rigCommander::rigCommander() rigState.mode = 0; rigState.ptt = 0; rigState.currentVfo = 0; - rigState.splitEnabled = 0; + rigState.duplex = dmSplitOff; } rigCommander::~rigCommander() @@ -1220,6 +1220,7 @@ void rigCommander::parseCommand() break; case '\x0F': emit haveDuplexMode((duplexMode)(unsigned char)payloadIn[1]); + rigState.duplex = (duplexMode)(unsigned char)payloadIn[1]; break; case '\x11': emit haveAttenuator((unsigned char)payloadIn.at(1)); @@ -1227,6 +1228,8 @@ void rigCommander::parseCommand() break; case '\x12': emit haveAntenna((unsigned char)payloadIn.at(1), (bool)payloadIn.at(2)); + rigState.antenna = (unsigned char)payloadIn.at(1); + rigState.rxAntenna = (bool)payloadIn.at(2); break; case '\x14': // read levels @@ -2291,7 +2294,7 @@ void rigCommander::parsePTT() // PTT on emit havePTTStatus(true); } - rigState.ptt = (unsigned char)payloadIn[2]; + rigState.ptt = (bool)payloadIn[2]; } @@ -2855,6 +2858,7 @@ void rigCommander::determineRigCaps() switch(model){ case model7300: rigCaps.modelName = QString("IC-7300"); + rigCaps.rigctlModel = 3073; rigCaps.hasSpectrum = true; rigCaps.spectSeqMax = 11; rigCaps.spectAmpMax = 160; @@ -2878,6 +2882,7 @@ void rigCommander::determineRigCaps() break; case modelR8600: rigCaps.modelName = QString("IC-R8600"); + rigCaps.rigctlModel = 3079; rigCaps.hasSpectrum = true; rigCaps.spectSeqMax = 11; rigCaps.spectAmpMax = 160; @@ -2912,6 +2917,7 @@ void rigCommander::determineRigCaps() break; case model9700: rigCaps.modelName = QString("IC-9700"); + rigCaps.rigctlModel = 3081; rigCaps.hasSpectrum = true; rigCaps.spectSeqMax = 11; rigCaps.spectAmpMax = 160; @@ -2939,6 +2945,7 @@ void rigCommander::determineRigCaps() break; case model910h: rigCaps.modelName = QString("IC-910H"); + rigCaps.rigctlModel = 3044; rigCaps.hasSpectrum = false; rigCaps.hasLan = false; rigCaps.hasEthernet = false; @@ -2960,6 +2967,7 @@ void rigCommander::determineRigCaps() break; case model7600: rigCaps.modelName = QString("IC-7600"); + rigCaps.rigctlModel = 3063; rigCaps.hasSpectrum = false; rigCaps.inputs.append(inputACC); rigCaps.inputs.append(inputUSB); @@ -2983,6 +2991,7 @@ void rigCommander::determineRigCaps() break; case model7610: rigCaps.modelName = QString("IC-7610"); + rigCaps.rigctlModel = 3078; rigCaps.hasSpectrum = true; rigCaps.spectSeqMax = 15; rigCaps.spectAmpMax = 200; @@ -3013,6 +3022,7 @@ void rigCommander::determineRigCaps() break; case model7850: rigCaps.modelName = QString("IC-785x"); + rigCaps.rigctlModel = 3075; rigCaps.hasSpectrum = true; rigCaps.spectSeqMax = 15; rigCaps.spectAmpMax = 136; @@ -3044,6 +3054,7 @@ void rigCommander::determineRigCaps() break; case model705: rigCaps.modelName = QString("IC-705"); + rigCaps.rigctlModel = 3085; rigCaps.hasSpectrum = true; rigCaps.spectSeqMax = 11; rigCaps.spectAmpMax = 160; @@ -3079,6 +3090,7 @@ void rigCommander::determineRigCaps() break; case model7000: rigCaps.modelName = QString("IC-7000"); + rigCaps.rigctlModel = 3060; rigCaps.hasSpectrum = false; rigCaps.inputs.append(inputACC); rigCaps.hasLan = false; @@ -3100,6 +3112,7 @@ void rigCommander::determineRigCaps() break; case model7410: rigCaps.modelName = QString("IC-7410"); + rigCaps.rigctlModel = 3067; rigCaps.hasSpectrum = false; rigCaps.inputs.append(inputACC); rigCaps.hasLan = false; @@ -3120,6 +3133,7 @@ void rigCommander::determineRigCaps() break; case model7100: rigCaps.modelName = QString("IC-7100"); + rigCaps.rigctlModel = 3070; rigCaps.hasSpectrum = false; rigCaps.inputs.append(inputUSB); rigCaps.inputs.append(inputACC); @@ -3146,6 +3160,7 @@ void rigCommander::determineRigCaps() break; case model7200: rigCaps.modelName = QString("IC-7200"); + rigCaps.rigctlModel = 3061; rigCaps.hasSpectrum = false; rigCaps.inputs.append(inputUSB); rigCaps.inputs.append(inputACC); @@ -3165,6 +3180,7 @@ void rigCommander::determineRigCaps() break; case model7700: rigCaps.modelName = QString("IC-7700"); + rigCaps.rigctlModel = 3062; rigCaps.hasSpectrum = false; rigCaps.inputs.append(inputLAN); //rigCaps.inputs.append(inputSPDIF); @@ -3190,6 +3206,7 @@ void rigCommander::determineRigCaps() break; case model706: rigCaps.modelName = QString("IC-706"); + rigCaps.rigctlModel = 3009; rigCaps.hasSpectrum = false; rigCaps.inputs.clear(); rigCaps.hasLan = false; @@ -3208,6 +3225,7 @@ void rigCommander::determineRigCaps() break; case model718: rigCaps.modelName = QString("IC-718"); + rigCaps.rigctlModel = 3013; rigCaps.hasSpectrum = false; rigCaps.inputs.clear(); rigCaps.hasLan = false; @@ -3230,6 +3248,7 @@ void rigCommander::determineRigCaps() break; case model756pro: rigCaps.modelName = QString("IC-756 Pro"); + rigCaps.rigctlModel = 3027; rigCaps.hasSpectrum = false; rigCaps.inputs.clear(); rigCaps.hasLan = false; @@ -3248,6 +3267,7 @@ void rigCommander::determineRigCaps() break; case model756proii: rigCaps.modelName = QString("IC-756 Pro II"); + rigCaps.rigctlModel = 3027; rigCaps.hasSpectrum = false; rigCaps.inputs.clear(); rigCaps.hasLan = false; @@ -3266,6 +3286,7 @@ void rigCommander::determineRigCaps() break; case model756proiii: rigCaps.modelName = QString("IC-756 Pro III"); + rigCaps.rigctlModel = 3027; rigCaps.hasSpectrum = false; rigCaps.inputs.clear(); rigCaps.hasLan = false; diff --git a/rigcommander.h b/rigcommander.h index 7259777..1539aa3 100644 --- a/rigcommander.h +++ b/rigcommander.h @@ -63,11 +63,13 @@ struct rigStateStruct { freqt vfoAFreq; freqt vfoBFreq; unsigned char currentVfo; - unsigned char ptt; + bool ptt; unsigned char mode; unsigned char filter; - unsigned char splitEnabled; + duplexMode duplex; bool datamode; + unsigned char antenna; + bool rxAntenna; // Tones quint16 ctcss; quint16 tsql; diff --git a/rigctld.cpp b/rigctld.cpp index d9cd891..c16fdec 100644 --- a/rigctld.cpp +++ b/rigctld.cpp @@ -144,7 +144,7 @@ void rigCtlClient::socketReadyRead() { // Currently send "fake" state information until I can work out what is required! response.append("1"); - response.append("1"); + response.append(QString("%1").arg(rigCaps.rigctlModel)); response.append("0"); for (bandType band : rigCaps.bands) { @@ -204,15 +204,24 @@ void rigCtlClient::socketReadyRead() attens = "0"; } response.append(attens); - - response.append("0x3effffff"); - response.append("0x3effffff"); - response.append("0x7fffffff"); - response.append("0x7fffffff"); - response.append("0x7fffffff"); - response.append("0x7fffffff"); - response.append("done"); + + response.append("0xffffffffffffffff"); + response.append("0xffffffffffffffff"); + response.append("0xfffffffff7ffffff"); + response.append("0xfffffff083ffffff"); + response.append("0xffffffffffffffff"); + response.append("0xffffffffffffffbf"); + + /* + response.append("0x3effffff"); + response.append("0x3effffff"); + response.append("0x7fffffff"); + response.append("0x7fffffff"); + response.append("0x7fffffff"); + response.append("0x7fffffff"); + */ + response.append("done"); } else if (command[0] == "f" || command[0] == "get_freq") @@ -339,10 +348,10 @@ void rigCtlClient::socketReadyRead() else if (command[0] == "s" || command[0] == "get_split_vfo") { if (longReply) { - response.append(QString("Split: %1").arg(rigState->splitEnabled)); + response.append(QString("Split: %1").arg(rigState->duplex)); } else { - response.append(QString("%1").arg(rigState->splitEnabled)); + response.append(QString("%1").arg(rigState->duplex)); } QString resp; @@ -364,10 +373,12 @@ void rigCtlClient::socketReadyRead() setCommand = true; if (command[1] == "1") { - emit parent->setSplit(1); + emit parent->setDuplexMode(dmSplitOn); + rigState->duplex = dmSplitOn; } else { - emit parent->setSplit(0); + emit parent->setDuplexMode(dmSplitOff); + rigState->duplex = dmSplitOff; } } else if (command[0] == "\xf3" || command[0] == "get_vfo_info") @@ -383,7 +394,7 @@ void rigCtlClient::socketReadyRead() } response.append(QString("Mode: %1").arg(getMode(rigState->mode, rigState->datamode))); response.append(QString("Width: %1").arg(getFilter(rigState->mode, rigState->filter))); - response.append(QString("Split: %1").arg(rigState->splitEnabled)); + response.append(QString("Split: %1").arg(rigState->duplex)); response.append(QString("SatMode: %1").arg(0)); // Need to get satmode } else { @@ -483,18 +494,42 @@ void rigCtlClient::socketReadyRead() { setCommand = true; } + else if (command[0] == "y" || command[0] == "get_ant") + { + qInfo(logRigCtlD()) << "get_ant:"; + + if (command.length() > 1) { + if (longReply) { + response.append(QString("AntCurr: %1").arg(getAntName((unsigned char)command[1].toInt()))); + response.append(QString("Option: %1").arg(0)); + response.append(QString("AntTx: %1").arg(getAntName(rigState->antenna))); + response.append(QString("AntRx: %1").arg(getAntName(rigState->antenna))); + } + else { + response.append(QString("%1").arg(getAntName((unsigned char)command[1].toInt()))); + response.append(QString("%1").arg(0)); + response.append(QString("%1").arg(getAntName(rigState->antenna))); + response.append(QString("%1").arg(getAntName(rigState->antenna))); + } + } + } + else if (command[0] == "Y" || command[0] == "set_ant") + { + qInfo(logRigCtlD()) << "set_ant:"; + setCommand = true; + } else if (command[0] == "z" || command[0] == "get_xit") { - QString resp; - if (longReply) { - resp.append("XIT: "); - } - resp.append(QString("%1").arg(0)); - response.append(resp); + QString resp; + if (longReply) { + resp.append("XIT: "); + } + resp.append(QString("%1").arg(0)); + response.append(resp); } else if (command[0] == "Z" || command[0] == "set_xit") { - setCommand = true; + setCommand = true; } else if (command.length() > 1 && (command[0] == "l" || command[0] == "get_level")) { @@ -956,11 +991,20 @@ 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(0xf,0,16); + 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); } return ret; } +unsigned char rigCtlClient::getAntennas() +{ + unsigned char ant=0; + for (unsigned char i : rigCaps.antennas) + { + ant |= 1<