Additional support for the IC-R8600, including wider scope spans.

merge-requests/6/head
Elliott Liggett 2021-06-18 22:45:12 -07:00
rodzic ee54e76c5f
commit 2508b4d71c
5 zmienionych plików z 66 dodań i 3 usunięć

Wyświetl plik

@ -362,6 +362,10 @@ void rigCommander::setSpectrumBounds(double startFreq, double endFreq, unsigned
if(startFreq > 400.0) if(startFreq > 400.0)
freqRange++; freqRange++;
break; break;
case modelR8600:
freqRange = 1;
edgeNumber = 1;
break;
default: default:
return; return;
break; break;
@ -429,7 +433,7 @@ void rigCommander::setScopeSpan(char span)
// See ICD, page 165, "19-12". // See ICD, page 165, "19-12".
// 2.5k = 0 // 2.5k = 0
// 5k = 2, etc. // 5k = 2, etc.
if((span <0 ) || (span >7)) if((span <0 ) || (span >9))
return; return;
QByteArray payload; QByteArray payload;
@ -464,6 +468,12 @@ void rigCommander::setScopeSpan(char span)
case 7: case 7:
freq = 500.0E-3; freq = 500.0E-3;
break; break;
case 8:
freq = 1000.0E-3;
break;
case 9:
freq = 2500.0E-3;
break;
default: default:
return; return;
break; break;
@ -2561,6 +2571,14 @@ mode_info rigCommander::createMode(mode_kind m, unsigned char reg, QString name)
return mode; return mode;
} }
centerSpanData rigCommander::createScopeCenter(centerSpansType s, QString name)
{
centerSpanData csd;
csd.cstype = s;
csd.name = name;
return csd;
}
void rigCommander::determineRigCaps() void rigCommander::determineRigCaps()
{ {
//TODO: Determine available bands (low priority, rig will reject out of band requests anyway) //TODO: Determine available bands (low priority, rig will reject out of band requests anyway)
@ -2597,6 +2615,12 @@ void rigCommander::determineRigCaps()
rigCaps.spectSeqMax = 0; rigCaps.spectSeqMax = 0;
rigCaps.spectAmpMax = 0; rigCaps.spectAmpMax = 0;
rigCaps.spectLenMax = 0; rigCaps.spectLenMax = 0;
rigCaps.scopeCenterSpans = { createScopeCenter(cs2p5k, "±2.5k"), createScopeCenter(cs5k, "±5k"),
createScopeCenter(cs10k, "±10k"), createScopeCenter(cs25k, "±25k"),
createScopeCenter(cs50k, "±50k"), createScopeCenter(cs100k, "±100k"),
createScopeCenter(cs250k, "±250k"), createScopeCenter(cs500k, "±500k")
};
rigCaps.hasFDcomms = true; // false for older radios rigCaps.hasFDcomms = true; // false for older radios
@ -2696,6 +2720,7 @@ void rigCommander::determineRigCaps()
createMode(modeP25, 0x16, "P25"), createMode(modedPMR, 0x18, "dPMR"), createMode(modeP25, 0x16, "P25"), createMode(modedPMR, 0x18, "dPMR"),
createMode(modeNXDN_VN, 0x19, "NXDN-VN"), createMode(modeNXDN_N, 0x20, "NXDN-N"), createMode(modeNXDN_VN, 0x19, "NXDN-VN"), createMode(modeNXDN_N, 0x20, "NXDN-N"),
createMode(modeDCR, 0x21, "DCR")}); createMode(modeDCR, 0x21, "DCR")});
rigCaps.scopeCenterSpans.insert(rigCaps.scopeCenterSpans.end(), {createScopeCenter(cs1M, "±1M"), createScopeCenter(cs2p5M, "±2.5M")});
break; break;
case model9700: case model9700:
rigCaps.modelName = QString("IC-9700"); rigCaps.modelName = QString("IC-9700");

Wyświetl plik

@ -377,6 +377,7 @@ private:
void printHex(const QByteArray &pdata); void printHex(const QByteArray &pdata);
void printHex(const QByteArray &pdata, bool printVert, bool printHoriz); void printHex(const QByteArray &pdata, bool printVert, bool printHoriz);
mode_info createMode(mode_kind m, unsigned char reg, QString name); mode_info createMode(mode_kind m, unsigned char reg, QString name);
centerSpanData createScopeCenter(centerSpansType s, QString name);
commHandler* comm = Q_NULLPTR; commHandler* comm = Q_NULLPTR;
pttyHandler* ptty = Q_NULLPTR; pttyHandler* ptty = Q_NULLPTR;

Wyświetl plik

@ -55,8 +55,8 @@ model_kind determineRadioModel(unsigned char rigID)
case model718: case model718:
rig = model718; rig = model718;
break; break;
case model756proiii: case model910h:
rig = model756proiii; rig = model910h;
break; break;
case model756pro: case model756pro:
rig = model756pro; rig = model756pro;
@ -64,6 +64,9 @@ model_kind determineRadioModel(unsigned char rigID)
case model756proii: case model756proii:
rig = model756proii; rig = model756proii;
break; break;
case model756proiii:
rig = model756proiii;
break;
default: default:
rig = modelUnknown; rig = modelUnknown;
break; break;

Wyświetl plik

@ -68,6 +68,24 @@ enum bandType { band23cm=0,
bandGen bandGen
}; };
enum centerSpansType {
cs2p5k = 0,
cs5k = 1,
cs10k = 2,
cs25k = 3,
cs50k = 4,
cs100k = 5,
cs250k = 6,
cs500k = 7,
cs1M = 8,
cs2p5M = 9
};
struct centerSpanData {
centerSpansType cstype;
QString name;
};
model_kind determineRadioModel(unsigned char rigID); model_kind determineRadioModel(unsigned char rigID);
struct rigCapabilities { struct rigCapabilities {
@ -105,6 +123,7 @@ struct rigCapabilities {
std::vector <unsigned char> attenuators; std::vector <unsigned char> attenuators;
std::vector <unsigned char> preamps; std::vector <unsigned char> preamps;
std::vector <unsigned char> antennas; std::vector <unsigned char> antennas;
std::vector <centerSpanData> scopeCenterSpans;
std::vector <bandType> bands; std::vector <bandType> bands;
unsigned char bsr[20] = {0}; unsigned char bsr[20] = {0};

Wyświetl plik

@ -2643,6 +2643,21 @@ void wfmain::receiveRigID(rigCapabilities rigCaps)
ui->antennaSelCombo->setDisabled(true); ui->antennaSelCombo->setDisabled(true);
} }
ui->scopeBWCombo->blockSignals(true);
ui->scopeBWCombo->clear();
if(rigCaps.hasSpectrum)
{
ui->scopeBWCombo->setHidden(false);
for(unsigned int i=0; i < rigCaps.scopeCenterSpans.size(); i++)
{
ui->scopeBWCombo->addItem(rigCaps.scopeCenterSpans.at(i).name, (int)rigCaps.scopeCenterSpans.at(i).cstype);
}
} else {
ui->scopeBWCombo->setHidden(true);
}
ui->scopeBWCombo->blockSignals(false);
setBandButtons(); setBandButtons();
ui->tuneEnableChk->setEnabled(rigCaps.hasATU); ui->tuneEnableChk->setEnabled(rigCaps.hasATU);