Audio input gain slider now adjusts whatever the active MOD source is.

Text follows drop-down menu selection.
merge-requests/2/head
Elliott Liggett 2021-02-20 00:05:23 -08:00
rodzic 3538e545d9
commit 9793b9e1cb
5 zmienionych plików z 287 dodań i 26 usunięć

Wyświetl plik

@ -1121,6 +1121,72 @@ void rigCommander::setModInput(rigInput input, bool dataOn, bool isQuery)
}
void rigCommander::setModInputLevel(rigInput input, unsigned char level)
{
switch(input)
{
case inputMic:
setMicGain(level);
break;
case inputACCA:
setACCGain(level, 0);
break;
case inputACCB:
setACCGain(level, 1);
break;
case inputACC:
setACCGain(level);
break;
case inputUSB:
setUSBGain(level);
break;
case inputLAN:
setLANGain(level);
break;
default:
break;
}
}
void rigCommander::getModInputLevel(rigInput input)
{
switch(input)
{
case inputMic:
getMicGain();
break;
case inputACCA:
getACCGain(0);
break;
case inputACCB:
getACCGain(1);
break;
case inputACC:
getACCGain();
break;
case inputUSB:
getUSBGain();
break;
case inputLAN:
getLANGain();
break;
default:
break;
}
}
QByteArray rigCommander::getUSBAddr()
{
QByteArray payload;
@ -1203,12 +1269,15 @@ void rigCommander::setLANGain(unsigned char gain)
prepDataAndSend(payload);
}
QByteArray rigCommander::getACCAddr()
QByteArray rigCommander::getACCAddr(unsigned char ab)
{
QByteArray payload;
// Note: the manual for the IC-7600 does not call out a
// register to adjust the ACC gain.
// 7850: ACC-A = 0, ACC-B = 1
switch(rigCaps.model)
{
case model9700:
@ -1225,7 +1294,14 @@ QByteArray rigCommander::getACCAddr()
break;
case model7850:
// Note: 0x58 = ACC-A, 0x59 = ACC-B
payload.setRawData("\x1A\x05\x00\x58", 4);
if(ab==0)
{
// A
payload.setRawData("\x1A\x05\x00\x58", 4);
} else {
// B
payload.setRawData("\x1A\x05\x00\x59", 4);
}
break;
default:
break;
@ -1236,13 +1312,28 @@ QByteArray rigCommander::getACCAddr()
void rigCommander::getACCGain()
{
QByteArray payload = getACCAddr();
QByteArray payload = getACCAddr(0);
prepDataAndSend(payload);
}
void rigCommander::getACCGain(unsigned char ab)
{
QByteArray payload = getACCAddr(ab);
prepDataAndSend(payload);
}
void rigCommander::setACCGain(unsigned char gain)
{
QByteArray payload = getACCAddr();
QByteArray payload = getACCAddr(0);
payload.append(bcdEncodeInt(gain));
prepDataAndSend(payload);
}
void rigCommander::setACCGain(unsigned char gain, unsigned char ab)
{
QByteArray payload = getACCAddr(ab);
payload.append(bcdEncodeInt(gain));
prepDataAndSend(payload);
}
@ -1607,7 +1698,7 @@ void rigCommander::parseDetailedRegisters1A05()
// It is a work in progress.
// TODO: inputMod source and gain for models: 7700, and 7600
int level = bcdHexToUChar(payloadIn[4]) + (100*bcdHexToUChar(payloadIn[5]));
int level = (100*bcdHexToUChar(payloadIn[4])) + bcdHexToUChar(payloadIn[5]);
int subcmd = bcdHexToUChar(payloadIn[3]) + (100*bcdHexToUChar(payloadIn[2]));
@ -1630,7 +1721,7 @@ void rigCommander::parseDetailedRegisters1A05()
emit haveRefAdjustFine( bcdHexToUChar(payloadIn[5]) + (100*bcdHexToUChar(payloadIn[4])) );
break;
case 112:
emit haveACCGain(level, 0);
emit haveACCGain(level, 5);
break;
case 113:
emit haveUSBGain(level);
@ -1722,7 +1813,7 @@ void rigCommander::parseDetailedRegisters1A05()
emit haveModInput(input, true);
break;
case 88:
emit haveACCGain(level, 0);
emit haveACCGain(level, 5);
break;
case 89:
emit haveUSBGain(level);
@ -1754,7 +1845,7 @@ void rigCommander::parseDetailedRegisters1A05()
switch(subcmd)
{
case 64:
emit haveACCGain(level, 0);
emit haveACCGain(level, 5);
break;
case 65:
emit haveUSBGain(level);
@ -1773,7 +1864,7 @@ void rigCommander::parseDetailedRegisters1A05()
switch(subcmd)
{
case 87:
emit haveACCGain(level, 0);
emit haveACCGain(level, 5);
break;
case 89:
emit haveUSBGain(level);

Wyświetl plik

@ -82,6 +82,8 @@ public slots:
void getUSBGain();
void getLANGain();
void getACCGain();
void getACCGain(unsigned char ab);
void getSMeter();
void getRFPowerMeter();
@ -101,6 +103,8 @@ public slots:
void setUSBGain(unsigned char gain);
void setLANGain(unsigned char gain);
void setACCGain(unsigned char gain);
void setACCGain(unsigned char gain, unsigned char ab);
void setCompLevel(unsigned char compLevel);
void setMonitorLevel(unsigned char monitorLevel);
void setVoxGain(unsigned char gain);
@ -109,6 +113,9 @@ public slots:
void getModInput(bool dataOn);
void setModInput(rigInput input, bool dataOn);
void setModInputLevel(rigInput input, unsigned char level);
void getModInputLevel(rigInput input);
void startATU();
void setATU(bool enabled);
void getATUStatus();
@ -161,6 +168,7 @@ signals:
void haveLANGain(unsigned char gain);
void haveUSBGain(unsigned char gain);
void haveACCGain(unsigned char gain, unsigned char ab);
void haveModSrcGain(rigInput input, unsigned char gain);
void haveSMeter(unsigned char level);
void haveRFMeter(unsigned char level);
@ -208,7 +216,7 @@ private:
void sendLevelCmd(unsigned char levAddr, unsigned char level);
QByteArray getLANAddr();
QByteArray getUSBAddr();
QByteArray getACCAddr();
QByteArray getACCAddr(unsigned char ab);
void setModInput(rigInput input, bool dataOn, bool isQuery);
void sendDataOut();
void prepDataAndSend(QByteArray data);

Wyświetl plik

@ -327,6 +327,7 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent
connect(this, SIGNAL(getTxPower()), rig, SLOT(getTxLevel()));
connect(this, SIGNAL(getMicGain()), rig, SLOT(getMicGain()));
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)));
@ -338,7 +339,7 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent
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)));
// Levels: handle return on query:
connect(rig, SIGNAL(haveRfGain(unsigned char)), this, SLOT(receiveRfGain(unsigned char)));
@ -347,6 +348,9 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent
connect(rig, SIGNAL(haveTxPower(unsigned char)), this, SLOT(receiveTxPower(unsigned char)));
connect(rig, SIGNAL(haveMicGain(unsigned char)), this, SLOT(receiveMicGain(unsigned char)));
connect(rig, SIGNAL(haveSpectrumRefLevel(int)), this, SLOT(receiveSpectrumRefLevel(int)));
connect(rig, SIGNAL(haveACCGain(unsigned char,unsigned char)), this, SLOT(receiveACCGain(unsigned char,unsigned char)));
connect(rig, SIGNAL(haveUSBGain(unsigned char)), this, SLOT(receiveUSBGain(unsigned char)));
connect(rig, SIGNAL(haveLANGain(unsigned char)), this, SLOT(receiveLANGain(unsigned char)));
connect(this, SIGNAL(startATU()), rig, SLOT(startATU()));
connect(this, SIGNAL(setATU(bool)), rig, SLOT(setATU(bool)));
@ -1232,11 +1236,13 @@ void wfmain:: getInitialRigState()
// From left to right in the UI:
cmdOutQue.append(cmdGetDataMode);
cmdOutQue.append(cmdGetModInput);
cmdOutQue.append(cmdGetModDataInput);
cmdOutQue.append(cmdGetRxGain);
cmdOutQue.append(cmdGetAfGain);
cmdOutQue.append(cmdGetSql);
cmdOutQue.append(cmdGetTxPower);
cmdOutQue.append(cmdGetMicGain);
cmdOutQue.append(cmdGetCurrentModLevel); // level for currently selected mod sources
cmdOutQue.append(cmdGetSpectrumRefLevel);
cmdOutQue.append(cmdGetDuplexMode);
@ -1426,6 +1432,10 @@ void wfmain::runDelayedCommand()
case cmdGetModDataInput:
emit getModInput(true);
break;
case cmdGetCurrentModLevel:
emit getModInputLevel(currentModSrc);
emit getModInputLevel(currentModDataSrc);
break;
case cmdGetDuplexMode:
emit getDuplexMode();
break;
@ -1886,6 +1896,8 @@ void wfmain::receiveDataModeStatus(bool dataEnabled)
ui->dataModeBtn->blockSignals(true);
ui->dataModeBtn->setChecked(dataEnabled);
ui->dataModeBtn->blockSignals(false);
usingDataMode = dataEnabled;
}
void wfmain::on_clearPeakBtn_clicked()
@ -2675,6 +2687,7 @@ void wfmain::on_modeFilterCombo_activated(int index)
void wfmain::on_dataModeBtn_toggled(bool checked)
{
setDataMode(checked);
usingDataMode = checked;
}
void wfmain::on_transmitBtn_clicked()
@ -2730,19 +2743,72 @@ void wfmain::receiveTxPower(unsigned char power)
void wfmain::receiveMicGain(unsigned char gain)
{
changeSliderQuietly(ui->micGainSlider, gain);
processModLevel(inputMic, gain);
}
void wfmain::processModLevel(rigInput source, unsigned char level)
{
rigInput currentIn;
if(usingDataMode)
{
currentIn = currentModDataSrc;
} else {
currentIn = currentModSrc;
}
switch(source)
{
case inputMic:
micGain = level;
break;
case inputACC:
accGain = level;
break;
case inputACCA:
accAGain = level;
break;
case inputACCB:
accBGain = level;
break;
case inputUSB:
usbGain = level;
break;
case inputLAN:
lanGain = level;
break;
default:
break;
}
if(currentIn == source)
{
changeSliderQuietly(ui->micGainSlider, level);
}
}
void wfmain::receiveModInput(rigInput input, bool dataOn)
{
QComboBox *box;
QString inputName;
bool found;
qDebug() << "Found rig input " << (int) input << " with data set to: " << dataOn;
bool foundCurrent = false;
if(dataOn)
{
box = ui->modInputDataCombo;
currentModDataSrc = input;
if(usingDataMode)
foundCurrent = true;
} else {
box = ui->modInputCombo;
currentModSrc = input;
if(!usingDataMode)
foundCurrent = true;
}
for(int i=0; i < box->count(); i++)
@ -2755,6 +2821,11 @@ void wfmain::receiveModInput(rigInput input, bool dataOn)
found = true;
}
}
if(foundCurrent)
{
changeModLabel(input);
}
if(!found)
qDebug() << "Could not find modulation input: " << (int)input;
}
@ -2780,18 +2851,27 @@ void wfmain::receiveDuplexMode(duplexMode dm)
void wfmain::receiveACCGain(unsigned char level, unsigned char ab)
{
(void)level;
(void)ab;
if(ab==1)
{
processModLevel(inputACCB, level);
} else {
if(rigCaps.model == model7850)
{
processModLevel(inputACCA, level);
} else {
processModLevel(inputACC, level);
}
}
}
void wfmain::receiveUSBGain(unsigned char level)
{
(void)level;
processModLevel(inputUSB, level);
}
void wfmain::receiveLANGain(unsigned char level)
{
(void)level;
processModLevel(inputLAN, level);
}
void wfmain::receiveCompLevel(unsigned char compLevel)
@ -2821,7 +2901,7 @@ void wfmain::on_txPowerSlider_valueChanged(int value)
void wfmain::on_micGainSlider_valueChanged(int value)
{
emit setMicGain(value);
processChangingCurrentModLevel((unsigned char) value);
}
void wfmain::on_scopeRefLevelSlider_valueChanged(int value)
@ -2883,11 +2963,69 @@ void wfmain::on_rptAutoBtn_clicked()
void wfmain::on_modInputCombo_activated(int index)
{
emit setModInput( (rigInput)ui->modInputCombo->currentData().toInt(), false );
currentModSrc = (rigInput)ui->modInputCombo->currentData().toInt();
issueDelayedCommand(cmdGetCurrentModLevel);
if(!usingDataMode)
{
changeModLabel(currentModSrc);
}
(void)index;
}
void wfmain::on_modInputDataCombo_activated(int index)
{
emit setModInput( (rigInput)ui->modInputDataCombo->currentData().toInt(), true );
currentModDataSrc = (rigInput)ui->modInputDataCombo->currentData().toInt();
issueDelayedCommand(cmdGetCurrentModLevel);
if(usingDataMode)
{
changeModLabel(currentModDataSrc);
}
(void)index;
}
void wfmain::changeModLabel(rigInput input)
{
QString inputName;
switch(input)
{
case inputMic:
inputName = "Mic";
break;
case inputACC:
inputName = "ACC";
break;
case inputACCA:
inputName = "ACCA";
break;
case inputACCB:
inputName = "ACCB";
break;
case inputUSB:
inputName = "USB";
break;
case inputLAN:
inputName = "LAN";
break;
default:
inputName = "UNK";
}
ui->modSliderLbl->setText(inputName);
}
void wfmain::processChangingCurrentModLevel(unsigned char level)
{
// slider moved, so find the current mod and issue the level set command.
rigInput currentIn;
if(usingDataMode)
{
currentIn = currentModDataSrc;
} else {
currentIn = currentModSrc;
}
qDebug() << __func__ << ": setting current level: " << level;
emit setModLevel(currentIn, level);
}
// --- DEBUG FUNCTION ---
@ -2904,8 +3042,4 @@ void wfmain::on_debugBtn_clicked()
// emit getMeters(amTransmitting);
// emit getTSQL();
emit getModInput(false);
emit getModInput(true);
}

Wyświetl plik

@ -62,6 +62,7 @@ signals:
void getTxPower();
void getMicGain();
void getSpectrumRefLevel();
void getModInputLevel(rigInput input);
// Level set:
void setRfGain(unsigned char level);
@ -74,9 +75,18 @@ signals:
void setVoxGain(unsigned char);
void setAntiVoxGain(unsigned char);
void setSpectrumRefLevel(int);
void setModLevel(rigInput input, unsigned char level);
void setACCGain(unsigned char level);
void setACCAGain(unsigned char level);
void setACCBGain(unsigned char level);
void setUSBGain(unsigned char level);
void setLANGain(unsigned char level);
void getMeters(bool isTransmitting);
void startATU();
void setATU(bool atuEnabled);
void getATUStatus();
@ -453,7 +463,8 @@ private:
enum cmds {cmdNone, cmdGetRigID, cmdGetRigCIV, cmdGetFreq, cmdGetMode, cmdGetDataMode, cmdSetDataModeOn, cmdSetDataModeOff,
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdGetAfGain,
cmdGetSql, cmdGetATUStatus, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT,
cmdGetTxPower, cmdGetMicGain, cmdGetSpectrumRefLevel, cmdGetDuplexMode, cmdGetModInput, cmdGetModDataInput};
cmdGetTxPower, cmdGetMicGain, cmdGetSpectrumRefLevel, cmdGetDuplexMode, cmdGetModInput, cmdGetModDataInput,
cmdGetCurrentModLevel};
cmds cmdOut;
QVector <cmds> cmdOutQue;
freqMemory mem;
@ -520,14 +531,31 @@ private:
void issueDelayedCommandPriority(cmds cmd);
void changeSliderQuietly(QSlider *slider, int value);
void processModLevel(rigInput source, unsigned char level);
void processChangingCurrentModLevel(unsigned char level);
void changeModLabel(rigInput source);
void changeMode(mode_kind mode);
void changeMode(mode_kind mode, bool dataOn);
int oldFreqDialVal;
rigCapabilities rigCaps;
rigInput currentModSrc = inputUnknown;
rigInput currentModDataSrc = inputUnknown;
bool haveRigCaps;
bool amTransmitting;
bool usingDataMode = false;
unsigned char micGain=0;
unsigned char accAGain=0;
unsigned char accBGain=0;
unsigned char accGain=0;
unsigned char usbGain=0;
unsigned char lanGain=0;
calibrationWindow *cal;
satelliteSetup *sat;

Wyświetl plik

@ -18,7 +18,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>3</number>
<number>0</number>
</property>
<widget class="QWidget" name="mainTab">
<attribute name="title">
@ -513,7 +513,7 @@
</widget>
</item>
<item>
<widget class="QLabel" name="label_24">
<widget class="QLabel" name="modSliderLbl">
<property name="maximumSize">
<size>
<width>16777215</width>