#1821 Resolves issue with SDRPlay IF Gain auto/manual modes and slider adjustment. (#1822)

Co-authored-by: Dennis Sheirer <dsheirer@github.com>
This commit is contained in:
Denny Sheirer
2024-02-03 16:12:01 -05:00
committed by GitHub
parent be02393f65
commit 3acaea0019
8 changed files with 56 additions and 55 deletions

View File

@@ -52,7 +52,7 @@ public abstract class RspTunerEditor<C extends RspTunerConfiguration> extends Tu
private JToggleButton mAgcButton;
private JLabel mGainValueLabel;
private LnaSlider mLNASlider;
private GainReductionSlider mBasebandSlider;
private IfGainSlider mIfGainSlider;
private JButton mGainOverloadButton;
private JPanel mGainPanel;
private AtomicBoolean mGainOverloadAlert = new AtomicBoolean();
@@ -131,6 +131,8 @@ public abstract class RspTunerEditor<C extends RspTunerConfiguration> extends Tu
save();
}
getIfGainSlider().setEnabled(!getAgcButton().isSelected());
if(mAgcButton.isSelected())
{
getAgcButton().setText(AUTOMATIC);
@@ -198,12 +200,11 @@ public abstract class RspTunerEditor<C extends RspTunerConfiguration> extends Tu
getGainOverloadButton().setForeground(getForeground());
getGainOverloadButton().setBackground(getBackground());
}
else
{
mLog.info("Ignoring duplicate gain alerting - alert[" + alert + "] atomic [" + mGainOverloadAlert.get() + "]");
}
}
/**
* Updates the LNA slider with the number of LNA states available for the current frequency.
*/
protected void updateLnaSlider()
{
if(hasTuner())
@@ -253,7 +254,7 @@ public abstract class RspTunerEditor<C extends RspTunerConfiguration> extends Tu
private void updateGain()
{
int lna = getLNASlider().getLNA();
int gr = getBasebandSlider().getGR();
int gr = getIfGainSlider().getGR();
if(hasTuner() && !isLoading())
{
@@ -266,7 +267,7 @@ public abstract class RspTunerEditor<C extends RspTunerConfiguration> extends Tu
catch(Exception e)
{
mLog.error("Couldn't set RSP gain to LNA:" + lna + " Gain Reduction:" + gr, e);
JOptionPane.showMessageDialog(mBasebandSlider, "Couldn't set RSP gain value to LNA:" + lna + " Gain Reduction:" + gr);
JOptionPane.showMessageDialog(mIfGainSlider, "Couldn't set RSP gain value to LNA:" + lna + " Gain Reduction:" + gr);
}
}
}
@@ -285,17 +286,17 @@ public abstract class RspTunerEditor<C extends RspTunerConfiguration> extends Tu
}
/**
* Baseband Gain Reduction Slider
* IF Gain Slider
*/
protected GainReductionSlider getBasebandSlider()
protected IfGainSlider getIfGainSlider()
{
if(mBasebandSlider == null)
if(mIfGainSlider == null)
{
mBasebandSlider = new GainReductionSlider();
mBasebandSlider.setEnabled(true);
mBasebandSlider.setMajorTickSpacing(1);
mBasebandSlider.setPaintTicks(true);
mBasebandSlider.addChangeListener(event ->
mIfGainSlider = new IfGainSlider();
mIfGainSlider.setEnabled(true);
mIfGainSlider.setMajorTickSpacing(1);
mIfGainSlider.setPaintTicks(true);
mIfGainSlider.addChangeListener(event ->
{
JSlider source = (JSlider)event.getSource();
@@ -306,7 +307,7 @@ public abstract class RspTunerEditor<C extends RspTunerConfiguration> extends Tu
});
}
return mBasebandSlider;
return mIfGainSlider;
}
/**
@@ -342,14 +343,14 @@ public abstract class RspTunerEditor<C extends RspTunerConfiguration> extends Tu
}
/**
* JSlider implementation that inverts the scale to support Gain Reduction values.
* JSlider implementation that inverts the scale to support IF Gain (aka Gain Reduction) values.
*/
public class GainReductionSlider extends JSlider
public class IfGainSlider extends JSlider
{
/**
* Constructs an instance
*/
public GainReductionSlider()
public IfGainSlider()
{
super(JSlider.HORIZONTAL, 0, 39, 30);
}
@@ -360,7 +361,7 @@ public abstract class RspTunerEditor<C extends RspTunerConfiguration> extends Tu
*/
public int getGR()
{
return getBasebandSlider().getMaximum() - getBasebandSlider().getValue() + 20;
return getIfGainSlider().getMaximum() - getIfGainSlider().getValue() + 20;
}
/**

View File

@@ -82,8 +82,8 @@ public class Rsp1TunerEditor extends RspTunerEditor<Rsp1TunerConfiguration>
add(getGainPanel(), "wrap");
add(new JLabel("LNA:"));
add(getLNASlider(), "wrap");
add(new JLabel("Baseband:"));
add(getBasebandSlider(), "wrap");
add(new JLabel("IF:"));
add(getIfGainSlider(), "wrap");
add(new JSeparator(), "span,growx,push");
}
@@ -136,7 +136,7 @@ public class Rsp1TunerEditor extends RspTunerEditor<Rsp1TunerConfiguration>
getAgcButton().setSelected(current == null || current.equals(AgcMode.ENABLE));
getAgcButton().setText((current == null || current.equals(AgcMode.ENABLE)) ? AUTOMATIC : MANUAL);
getLNASlider().setLNA(getTunerController().getControlRsp().getLNA());
getBasebandSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
getIfGainSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
//Register to receive gain overload notifications
getTunerController().getControlRsp().setGainOverloadListener(this);
@@ -144,7 +144,7 @@ public class Rsp1TunerEditor extends RspTunerEditor<Rsp1TunerConfiguration>
}
getLNASlider().setEnabled(hasTuner());
getBasebandSlider().setEnabled(hasTuner());
getIfGainSlider().setEnabled(hasTuner() && getTunerController().getControlRsp().getAgcMode() != AgcMode.ENABLE);
getGainValueLabel().setEnabled(hasTuner());
setLoading(false);
@@ -161,7 +161,7 @@ public class Rsp1TunerEditor extends RspTunerEditor<Rsp1TunerConfiguration>
getConfiguration().setAutoPPMCorrectionEnabled(getAutoPPMCheckBox().isSelected());
getConfiguration().setSampleRate((RspSampleRate)getSampleRateCombo().getSelectedItem());
getConfiguration().setLNA(getLNASlider().getLNA());
getConfiguration().setBasebandGainReduction(getBasebandSlider().getGR());
getConfiguration().setBasebandGainReduction(getIfGainSlider().getGR());
getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
saveConfiguration();

View File

@@ -86,8 +86,8 @@ public class Rsp1aTunerEditor extends RspTunerEditor<Rsp1aTunerConfiguration>
add(getGainPanel(), "wrap");
add(new JLabel("LNA:"));
add(getLNASlider(), "wrap");
add(new JLabel("Baseband:"));
add(getBasebandSlider(), "wrap");
add(new JLabel("IF:"));
add(getIfGainSlider(), "wrap");
add(new JSeparator(), "span,growx,push");
@@ -147,7 +147,7 @@ public class Rsp1aTunerEditor extends RspTunerEditor<Rsp1aTunerConfiguration>
getAgcButton().setSelected(current == null || current.equals(AgcMode.ENABLE));
getAgcButton().setText((current == null || current.equals(AgcMode.ENABLE)) ? AUTOMATIC : MANUAL);
getLNASlider().setLNA(getTunerController().getControlRsp().getLNA());
getBasebandSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
getIfGainSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
//Register to receive gain overload notifications
getTunerController().getControlRsp().setGainOverloadListener(this);
@@ -155,7 +155,7 @@ public class Rsp1aTunerEditor extends RspTunerEditor<Rsp1aTunerConfiguration>
}
getLNASlider().setEnabled(hasTuner());
getBasebandSlider().setEnabled(hasTuner());
getIfGainSlider().setEnabled(hasTuner() && getTunerController().getControlRsp().getAgcMode() != AgcMode.ENABLE);
getGainValueLabel().setEnabled(hasTuner());
getBiasTCheckBox().setEnabled(hasTuner());
@@ -205,7 +205,7 @@ public class Rsp1aTunerEditor extends RspTunerEditor<Rsp1aTunerConfiguration>
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
getConfiguration().setRfDabNotch(getRfDabNotchCheckBox().isSelected());
getConfiguration().setLNA(getLNASlider().getLNA());
getConfiguration().setBasebandGainReduction(getBasebandSlider().getGR());
getConfiguration().setBasebandGainReduction(getIfGainSlider().getGR());
getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
saveConfiguration();

View File

@@ -86,8 +86,8 @@ public class Rsp1bTunerEditor extends RspTunerEditor<Rsp1bTunerConfiguration>
add(getGainPanel(), "wrap");
add(new JLabel("LNA:"));
add(getLNASlider(), "wrap");
add(new JLabel("Baseband:"));
add(getBasebandSlider(), "wrap");
add(new JLabel("IF:"));
add(getIfGainSlider(), "wrap");
add(new JSeparator(), "span,growx,push");
@@ -147,7 +147,7 @@ public class Rsp1bTunerEditor extends RspTunerEditor<Rsp1bTunerConfiguration>
getAgcButton().setSelected(current == null || current.equals(AgcMode.ENABLE));
getAgcButton().setText((current == null || current.equals(AgcMode.ENABLE)) ? AUTOMATIC : MANUAL);
getLNASlider().setLNA(getTunerController().getControlRsp().getLNA());
getBasebandSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
getIfGainSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
//Register to receive gain overload notifications
getTunerController().getControlRsp().setGainOverloadListener(this);
@@ -155,7 +155,7 @@ public class Rsp1bTunerEditor extends RspTunerEditor<Rsp1bTunerConfiguration>
}
getLNASlider().setEnabled(hasTuner());
getBasebandSlider().setEnabled(hasTuner());
getIfGainSlider().setEnabled(hasTuner() && getTunerController().getControlRsp().getAgcMode() != AgcMode.ENABLE);
getGainValueLabel().setEnabled(hasTuner());
getBiasTCheckBox().setEnabled(hasTuner());
try
@@ -204,7 +204,7 @@ public class Rsp1bTunerEditor extends RspTunerEditor<Rsp1bTunerConfiguration>
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
getConfiguration().setRfDabNotch(getRfDabNotchCheckBox().isSelected());
getConfiguration().setLNA(getLNASlider().getLNA());
getConfiguration().setBasebandGainReduction(getBasebandSlider().getGR());
getConfiguration().setBasebandGainReduction(getIfGainSlider().getGR());
getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
saveConfiguration();

View File

@@ -88,8 +88,8 @@ public class Rsp2TunerEditor extends RspTunerEditor<Rsp2TunerConfiguration>
add(getGainPanel(), "wrap");
add(new JLabel("LNA:"));
add(getLNASlider(), "wrap");
add(new JLabel("Baseband:"));
add(getBasebandSlider(), "wrap");
add(new JLabel("IF:"));
add(getIfGainSlider(), "wrap");
add(new JSeparator(), "span,growx,push");
@@ -151,7 +151,7 @@ public class Rsp2TunerEditor extends RspTunerEditor<Rsp2TunerConfiguration>
getAgcButton().setSelected(current == null || current.equals(AgcMode.ENABLE));
getAgcButton().setText((current == null || current.equals(AgcMode.ENABLE)) ? AUTOMATIC : MANUAL);
getLNASlider().setLNA(getTunerController().getControlRsp().getLNA());
getBasebandSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
getIfGainSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
//Register to receive gain overload notifications
getTunerController().getControlRsp().setGainOverloadListener(this);
@@ -159,7 +159,7 @@ public class Rsp2TunerEditor extends RspTunerEditor<Rsp2TunerConfiguration>
}
getLNASlider().setEnabled(hasTuner());
getBasebandSlider().setEnabled(hasTuner());
getIfGainSlider().setEnabled(hasTuner() && getTunerController().getControlRsp().getAgcMode() != AgcMode.ENABLE);
getGainValueLabel().setEnabled(hasTuner());
getBiasTCheckBox().setEnabled(hasTuner());
@@ -219,7 +219,7 @@ public class Rsp2TunerEditor extends RspTunerEditor<Rsp2TunerConfiguration>
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
getConfiguration().setAntennaSelection((Rsp2AntennaSelection)getAntennaSelectionCombo().getSelectedItem());
getConfiguration().setLNA(getLNASlider().getLNA());
getConfiguration().setBasebandGainReduction(getBasebandSlider().getGR());
getConfiguration().setBasebandGainReduction(getIfGainSlider().getGR());
getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
saveConfiguration();

View File

@@ -98,8 +98,8 @@ public class RspDuoTuner1Editor extends RspTunerEditor<RspDuoTuner1Configuration
add(getGainPanel(), "wrap");
add(new JLabel("LNA:"));
add(getLNASlider(), "wrap");
add(new JLabel("Baseband:"));
add(getBasebandSlider(), "wrap");
add(new JLabel("IF:"));
add(getIfGainSlider(), "wrap");
add(new JSeparator(), "span,growx,push");
@@ -168,7 +168,7 @@ public class RspDuoTuner1Editor extends RspTunerEditor<RspDuoTuner1Configuration
getAgcButton().setSelected(current == null || current.equals(AgcMode.ENABLE));
getAgcButton().setText((current == null || current.equals(AgcMode.ENABLE)) ? AUTOMATIC : MANUAL);
getLNASlider().setLNA(getTunerController().getControlRsp().getLNA());
getBasebandSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
getIfGainSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
//Register to receive gain overload notifications
getTunerController().getControlRsp().setGainOverloadListener(this);
@@ -176,7 +176,7 @@ public class RspDuoTuner1Editor extends RspTunerEditor<RspDuoTuner1Configuration
}
getLNASlider().setEnabled(hasTuner());
getBasebandSlider().setEnabled(hasTuner());
getIfGainSlider().setEnabled(hasTuner() && getTunerController().getControlRsp().getAgcMode() != AgcMode.ENABLE);
getGainValueLabel().setEnabled(hasTuner());
getAmPortCombo().setEnabled(hasTuner() && !getTuner().getTunerController().isLockedSampleRate());
@@ -249,7 +249,7 @@ public class RspDuoTuner1Editor extends RspTunerEditor<RspDuoTuner1Configuration
getConfiguration().setRfDabNotch(getRfDabNotchCheckBox().isSelected());
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
getConfiguration().setLNA(getLNASlider().getLNA());
getConfiguration().setBasebandGainReduction(getBasebandSlider().getGR());
getConfiguration().setBasebandGainReduction(getIfGainSlider().getGR());
getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
saveConfiguration();

View File

@@ -96,8 +96,8 @@ public class RspDuoTuner2Editor extends RspTunerEditor<RspDuoTuner2Configuration
add(getGainPanel(), "wrap");
add(new JLabel("LNA:"));
add(getLNASlider(), "wrap");
add(new JLabel("Baseband:"));
add(getBasebandSlider(), "wrap");
add(new JLabel("IF:"));
add(getIfGainSlider(), "wrap");
add(new JSeparator(), "span,growx,push");
@@ -185,7 +185,7 @@ public class RspDuoTuner2Editor extends RspTunerEditor<RspDuoTuner2Configuration
getAgcButton().setSelected(current == null || current.equals(AgcMode.ENABLE));
getAgcButton().setText((current == null || current.equals(AgcMode.ENABLE)) ? AUTOMATIC : MANUAL);
getLNASlider().setLNA(getTunerController().getControlRsp().getLNA());
getBasebandSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
getIfGainSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
//Register to receive gain overload notifications
getTunerController().getControlRsp().setGainOverloadListener(this);
@@ -193,7 +193,7 @@ public class RspDuoTuner2Editor extends RspTunerEditor<RspDuoTuner2Configuration
}
getLNASlider().setEnabled(hasTuner());
getBasebandSlider().setEnabled(hasTuner());
getIfGainSlider().setEnabled(hasTuner() && getTunerController().getControlRsp().getAgcMode() != AgcMode.ENABLE);
getGainValueLabel().setEnabled(hasTuner());
getRfDabNotchCheckBox().setEnabled(hasTuner());
@@ -261,7 +261,7 @@ public class RspDuoTuner2Editor extends RspTunerEditor<RspDuoTuner2Configuration
getConfiguration().setRfDabNotch(getRfDabNotchCheckBox().isSelected());
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
getConfiguration().setLNA(getLNASlider().getLNA());
getConfiguration().setBasebandGainReduction(getBasebandSlider().getGR());
getConfiguration().setBasebandGainReduction(getIfGainSlider().getGR());
getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
saveConfiguration();

View File

@@ -91,8 +91,8 @@ public class RspDxTunerEditor extends RspTunerEditor<RspDxTunerConfiguration>
add(getGainPanel(), "wrap");
add(new JLabel("LNA:"));
add(getLNASlider(), "wrap");
add(new JLabel("Baseband:"));
add(getBasebandSlider(), "wrap");
add(new JLabel("IF:"));
add(getIfGainSlider(), "wrap");
add(new JSeparator(), "span,growx,push");
@@ -160,7 +160,7 @@ public class RspDxTunerEditor extends RspTunerEditor<RspDxTunerConfiguration>
getAgcButton().setSelected(current == null || current.equals(AgcMode.ENABLE));
getAgcButton().setText((current == null || current.equals(AgcMode.ENABLE)) ? AUTOMATIC : MANUAL);
getLNASlider().setLNA(getTunerController().getControlRsp().getLNA());
getBasebandSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
getIfGainSlider().setGR(getTunerController().getControlRsp().getBasebandGainReduction());
//Register to receive gain overload notifications
getTunerController().getControlRsp().setGainOverloadListener(this);
@@ -168,7 +168,7 @@ public class RspDxTunerEditor extends RspTunerEditor<RspDxTunerConfiguration>
}
getLNASlider().setEnabled(hasTuner());
getBasebandSlider().setEnabled(hasTuner());
getIfGainSlider().setEnabled(hasTuner() && getTunerController().getControlRsp().getAgcMode() != AgcMode.ENABLE);
getGainValueLabel().setEnabled(hasTuner());
getBiasTCheckBox().setEnabled(hasTuner());
@@ -240,7 +240,7 @@ public class RspDxTunerEditor extends RspTunerEditor<RspDxTunerConfiguration>
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
getConfiguration().setAntenna((RspDxAntenna) getAntennaCombo().getSelectedItem());
getConfiguration().setLNA(getLNASlider().getLNA());
getConfiguration().setBasebandGainReduction(getBasebandSlider().getGR());
getConfiguration().setBasebandGainReduction(getIfGainSlider().getGR());
getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
saveConfiguration();