Merge pull request #1756 from DSheirer/1753-sdrplay-remove-unsupported-ifagc-modes

#1753 SDRPlay - Remove Deprecated AGC Modes
This commit is contained in:
Denny Sheirer
2023-12-01 03:43:16 -05:00
committed by GitHub
8 changed files with 67 additions and 42 deletions

View File

@@ -35,10 +35,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.JSlider; import javax.swing.JSlider;
import javax.swing.JToggleButton;
/** /**
* Abstract RSP tuner editor * Abstract RSP tuner editor
@@ -48,7 +48,7 @@ public abstract class RspTunerEditor<C extends RspTunerConfiguration> extends Tu
private Logger mLog = LoggerFactory.getLogger(RspTunerEditor.class); private Logger mLog = LoggerFactory.getLogger(RspTunerEditor.class);
private JSlider mGainSlider; private JSlider mGainSlider;
private JLabel mGainValueLabel; private JLabel mGainValueLabel;
private JComboBox<AgcMode> mAgcModeCombo; private JToggleButton mAgcButton;
private JButton mGainOverloadButton; private JButton mGainOverloadButton;
private AtomicBoolean mGainOverloadAlert = new AtomicBoolean(); private AtomicBoolean mGainOverloadAlert = new AtomicBoolean();
@@ -120,22 +120,20 @@ public abstract class RspTunerEditor<C extends RspTunerConfiguration> extends Tu
} }
/** /**
* IF AGC mode combobox control * IF AGC mode (enable/disable) toggle button
*/ */
protected JComboBox<AgcMode> getAgcModeCombo() protected JToggleButton getAgcButton()
{ {
if(mAgcModeCombo == null) if(mAgcButton == null)
{ {
mAgcModeCombo = new JComboBox<>(AgcMode.values()); mAgcButton = new JToggleButton("IF AGC");
mAgcModeCombo.setEnabled(false); mAgcButton.setEnabled(false);
mAgcModeCombo.addActionListener(e -> { mAgcButton.addActionListener(e -> {
if(hasTuner() && !isLoading()) if(hasTuner() && !isLoading())
{ {
AgcMode selected = (AgcMode)mAgcModeCombo.getSelectedItem();
try try
{ {
getTunerController().getControlRsp().setAgcMode(selected); getTunerController().getControlRsp().setAgcMode(mAgcButton.isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
save();
} }
catch(SDRPlayException se) catch(SDRPlayException se)
{ {
@@ -146,7 +144,7 @@ public abstract class RspTunerEditor<C extends RspTunerConfiguration> extends Tu
}); });
} }
return mAgcModeCombo; return mAgcButton;
} }
/** /**

View File

@@ -20,16 +20,19 @@
package io.github.dsheirer.source.tuner.sdrplay.api.parameter.control; package io.github.dsheirer.source.tuner.sdrplay.api.parameter.control;
import io.github.dsheirer.source.tuner.sdrplay.api.v3_07.sdrplay_api_h; import io.github.dsheirer.source.tuner.sdrplay.api.v3_07.sdrplay_api_h;
import java.util.EnumSet;
/** /**
* Automatic Gain Control (AGC) Control (mode) * Automatic Gain Control (AGC) Control (mode)
*/ */
public enum AgcMode public enum AgcMode
{ {
//Deprecated modes ... only use the ENABLE or DISABLE, in conjunction with the
AGC_100_HZ(sdrplay_api_h.sdrplay_api_AGC_100HZ(), "Deprecated - 100 Hz"),
AGC_50_HZ(sdrplay_api_h.sdrplay_api_AGC_50HZ(), "Deprecated 50 Hz"),
AGC_5_HZ(sdrplay_api_h.sdrplay_api_AGC_5HZ(), "Deprecated 5 Hz"),
DISABLE(sdrplay_api_h.sdrplay_api_AGC_DISABLE(), "DISABLE"), DISABLE(sdrplay_api_h.sdrplay_api_AGC_DISABLE(), "DISABLE"),
AGC_100_HZ(sdrplay_api_h.sdrplay_api_AGC_100HZ(), "100 Hz"),
AGC_50_HZ(sdrplay_api_h.sdrplay_api_AGC_50HZ(), "50 Hz"),
AGC_5_HZ(sdrplay_api_h.sdrplay_api_AGC_5HZ(), "5 Hz"),
ENABLE(sdrplay_api_h.sdrplay_api_AGC_CTRL_EN(), "ENABLE"); ENABLE(sdrplay_api_h.sdrplay_api_AGC_CTRL_EN(), "ENABLE");
private int mValue; private int mValue;
@@ -41,6 +44,8 @@ public enum AgcMode
mDescription = description; mDescription = description;
} }
public static EnumSet<AgcMode> SUPPORTED_MODES = EnumSet.of(ENABLE, DISABLE);
/** /**
* Numeric value * Numeric value
*/ */
@@ -49,6 +54,15 @@ public enum AgcMode
return mValue; return mValue;
} }
/**
* Indicates if the mode is a supported mode.
* @return true if it's a supported mode.
*/
public boolean isSupported()
{
return SUPPORTED_MODES.contains(this);
}
/** /**
* Lookup the entry from a return code * Lookup the entry from a return code
* @param value to lookup * @param value to lookup
@@ -60,7 +74,16 @@ public enum AgcMode
{ {
if(status.getValue() == value) if(status.getValue() == value)
{ {
return status; //legacy support in case some users had the deprecated values stored in their tuner configs. In
//this situation we return ENABLED instead of one of these deprecated values.
if(status.isSupported())
{
return status;
}
else
{
return ENABLE;
}
} }
} }

View File

@@ -82,7 +82,7 @@ public class Rsp1TunerEditor extends RspTunerEditor<Rsp1TunerConfiguration>
add(new JLabel("IF AGC Mode:")); add(new JLabel("IF AGC Mode:"));
JPanel gainPanel = new JPanel(); JPanel gainPanel = new JPanel();
gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]","")); gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]",""));
gainPanel.add(getAgcModeCombo()); gainPanel.add(getAgcButton());
gainPanel.add(getGainOverloadButton()); gainPanel.add(getGainOverloadButton());
add(gainPanel, "wrap"); add(gainPanel, "wrap");
@@ -134,10 +134,11 @@ public class Rsp1TunerEditor extends RspTunerEditor<Rsp1TunerConfiguration>
getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null); getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null);
updateSampleRateToolTip(); updateSampleRateToolTip();
getAgcModeCombo().setEnabled(hasTuner()); getAgcButton().setEnabled(hasTuner());
if(hasTuner()) if(hasTuner())
{ {
getAgcModeCombo().setSelectedItem(getTunerController().getControlRsp().getAgcMode()); AgcMode current = getTunerController().getControlRsp().getAgcMode();
getAgcButton().setSelected(current == null || current.equals(AgcMode.ENABLE));
//Register to receive gain overload notifications //Register to receive gain overload notifications
getTunerController().getControlRsp().setGainOverloadListener(this); getTunerController().getControlRsp().setGainOverloadListener(this);
} }
@@ -160,7 +161,7 @@ public class Rsp1TunerEditor extends RspTunerEditor<Rsp1TunerConfiguration>
getConfiguration().setAutoPPMCorrectionEnabled(getAutoPPMCheckBox().isSelected()); getConfiguration().setAutoPPMCorrectionEnabled(getAutoPPMCheckBox().isSelected());
getConfiguration().setSampleRate((RspSampleRate)getSampleRateCombo().getSelectedItem()); getConfiguration().setSampleRate((RspSampleRate)getSampleRateCombo().getSelectedItem());
getConfiguration().setGain(getGainSlider().getValue()); getConfiguration().setGain(getGainSlider().getValue());
getConfiguration().setAgcMode((AgcMode)getAgcModeCombo().getSelectedItem()); getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
saveConfiguration(); saveConfiguration();
} }

View File

@@ -86,7 +86,7 @@ public class Rsp1aTunerEditor extends RspTunerEditor<Rsp1aTunerConfiguration>
add(new JLabel("IF AGC Mode:")); add(new JLabel("IF AGC Mode:"));
JPanel gainPanel = new JPanel(); JPanel gainPanel = new JPanel();
gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]","")); gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]",""));
gainPanel.add(getAgcModeCombo()); gainPanel.add(getAgcButton());
gainPanel.add(getGainOverloadButton()); gainPanel.add(getGainOverloadButton());
add(gainPanel, "wrap"); add(gainPanel, "wrap");
@@ -145,10 +145,11 @@ public class Rsp1aTunerEditor extends RspTunerEditor<Rsp1aTunerConfiguration>
getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null); getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null);
updateSampleRateToolTip(); updateSampleRateToolTip();
getAgcModeCombo().setEnabled(hasTuner()); getAgcButton().setEnabled(hasTuner());
if(hasTuner()) if(hasTuner())
{ {
getAgcModeCombo().setSelectedItem(getTunerController().getControlRsp().getAgcMode()); AgcMode current = getTunerController().getControlRsp().getAgcMode();
getAgcButton().setSelected(current == null || current.equals(AgcMode.ENABLE));
//Register to receive gain overload notifications //Register to receive gain overload notifications
getTunerController().getControlRsp().setGainOverloadListener(this); getTunerController().getControlRsp().setGainOverloadListener(this);
} }
@@ -204,7 +205,7 @@ public class Rsp1aTunerEditor extends RspTunerEditor<Rsp1aTunerConfiguration>
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected()); getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
getConfiguration().setRfDabNotch(getRfDabNotchCheckBox().isSelected()); getConfiguration().setRfDabNotch(getRfDabNotchCheckBox().isSelected());
getConfiguration().setGain(getGainSlider().getValue()); getConfiguration().setGain(getGainSlider().getValue());
getConfiguration().setAgcMode((AgcMode)getAgcModeCombo().getSelectedItem()); getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
saveConfiguration(); saveConfiguration();
} }

View File

@@ -88,7 +88,7 @@ public class Rsp2TunerEditor extends RspTunerEditor<Rsp2TunerConfiguration>
add(new JLabel("IF AGC Mode:")); add(new JLabel("IF AGC Mode:"));
JPanel gainPanel = new JPanel(); JPanel gainPanel = new JPanel();
gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]","")); gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]",""));
gainPanel.add(getAgcModeCombo()); gainPanel.add(getAgcButton());
gainPanel.add(getGainOverloadButton()); gainPanel.add(getGainOverloadButton());
add(gainPanel, "wrap"); add(gainPanel, "wrap");
@@ -149,10 +149,11 @@ public class Rsp2TunerEditor extends RspTunerEditor<Rsp2TunerConfiguration>
getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null); getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null);
updateSampleRateToolTip(); updateSampleRateToolTip();
getAgcModeCombo().setEnabled(hasTuner()); getAgcButton().setEnabled(hasTuner());
if(hasTuner()) if(hasTuner())
{ {
getAgcModeCombo().setSelectedItem(getTunerController().getControlRsp().getAgcMode()); AgcMode current = getTunerController().getControlRsp().getAgcMode();
getAgcButton().setSelected(current == null || current.equals(AgcMode.ENABLE));
//Register to receive gain overload notifications //Register to receive gain overload notifications
getTunerController().getControlRsp().setGainOverloadListener(this); getTunerController().getControlRsp().setGainOverloadListener(this);
} }
@@ -218,7 +219,7 @@ public class Rsp2TunerEditor extends RspTunerEditor<Rsp2TunerConfiguration>
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected()); getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
getConfiguration().setAntennaSelection((Rsp2AntennaSelection)getAntennaSelectionCombo().getSelectedItem()); getConfiguration().setAntennaSelection((Rsp2AntennaSelection)getAntennaSelectionCombo().getSelectedItem());
getConfiguration().setGain(getGainSlider().getValue()); getConfiguration().setGain(getGainSlider().getValue());
getConfiguration().setAgcMode((AgcMode)getAgcModeCombo().getSelectedItem()); getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
saveConfiguration(); saveConfiguration();
} }

View File

@@ -97,7 +97,7 @@ public class RspDuoTuner1Editor extends RspTunerEditor<RspDuoTuner1Configuration
add(new JLabel("IF AGC Mode:")); add(new JLabel("IF AGC Mode:"));
JPanel gainPanel = new JPanel(); JPanel gainPanel = new JPanel();
gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]","")); gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]",""));
gainPanel.add(getAgcModeCombo()); gainPanel.add(getAgcButton());
gainPanel.add(getGainOverloadButton()); gainPanel.add(getGainOverloadButton());
add(gainPanel, "wrap"); add(gainPanel, "wrap");
@@ -154,8 +154,6 @@ public class RspDuoTuner1Editor extends RspTunerEditor<RspDuoTuner1Configuration
} }
getTunerStatusLabel().setText(status); getTunerStatusLabel().setText(status);
getButtonPanel().updateControls(); getButtonPanel().updateControls();
mLog.info("Update tuner status - has tuner: " + hasTuner() + " is locked:" + getTuner().getTunerController().isLockedSampleRate());
getFrequencyPanel().updateControls(); getFrequencyPanel().updateControls();
clearSampleRates(); clearSampleRates();
@@ -167,10 +165,11 @@ public class RspDuoTuner1Editor extends RspTunerEditor<RspDuoTuner1Configuration
getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null); getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null);
updateSampleRateToolTip(); updateSampleRateToolTip();
getAgcModeCombo().setEnabled(hasTuner()); getAgcButton().setEnabled(hasTuner());
if(hasTuner()) if(hasTuner())
{ {
getAgcModeCombo().setSelectedItem(getTunerController().getControlRsp().getAgcMode()); AgcMode current = getTunerController().getControlRsp().getAgcMode();
getAgcButton().setSelected(current == null || current.equals(AgcMode.ENABLE));
//Register to receive gain overload notifications //Register to receive gain overload notifications
getTunerController().getControlRsp().setGainOverloadListener(this); getTunerController().getControlRsp().setGainOverloadListener(this);
} }
@@ -249,7 +248,7 @@ public class RspDuoTuner1Editor extends RspTunerEditor<RspDuoTuner1Configuration
getConfiguration().setRfDabNotch(getRfDabNotchCheckBox().isSelected()); getConfiguration().setRfDabNotch(getRfDabNotchCheckBox().isSelected());
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected()); getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
getConfiguration().setGain(getGainSlider().getValue()); getConfiguration().setGain(getGainSlider().getValue());
getConfiguration().setAgcMode((AgcMode)getAgcModeCombo().getSelectedItem()); getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
saveConfiguration(); saveConfiguration();
} }

View File

@@ -95,7 +95,7 @@ public class RspDuoTuner2Editor extends RspTunerEditor<RspDuoTuner2Configuration
add(new JLabel("IF AGC Mode:")); add(new JLabel("IF AGC Mode:"));
JPanel gainPanel = new JPanel(); JPanel gainPanel = new JPanel();
gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]","")); gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]",""));
gainPanel.add(getAgcModeCombo()); gainPanel.add(getAgcButton());
gainPanel.add(getGainOverloadButton()); gainPanel.add(getGainOverloadButton());
add(gainPanel, "wrap"); add(gainPanel, "wrap");
@@ -182,10 +182,11 @@ public class RspDuoTuner2Editor extends RspTunerEditor<RspDuoTuner2Configuration
getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null); getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null);
updateSampleRateToolTip(); updateSampleRateToolTip();
getAgcModeCombo().setEnabled(hasTuner()); getAgcButton().setEnabled(hasTuner());
if(hasTuner()) if(hasTuner())
{ {
getAgcModeCombo().setSelectedItem(getTunerController().getControlRsp().getAgcMode()); AgcMode current = getTunerController().getControlRsp().getAgcMode();
getAgcButton().setSelected(current == null || current.equals(AgcMode.ENABLE));
//Register to receive gain overload notifications //Register to receive gain overload notifications
getTunerController().getControlRsp().setGainOverloadListener(this); getTunerController().getControlRsp().setGainOverloadListener(this);
} }
@@ -259,7 +260,7 @@ public class RspDuoTuner2Editor extends RspTunerEditor<RspDuoTuner2Configuration
getConfiguration().setRfDabNotch(getRfDabNotchCheckBox().isSelected()); getConfiguration().setRfDabNotch(getRfDabNotchCheckBox().isSelected());
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected()); getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
getConfiguration().setGain(getGainSlider().getValue()); getConfiguration().setGain(getGainSlider().getValue());
getConfiguration().setAgcMode((AgcMode)getAgcModeCombo().getSelectedItem()); getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
saveConfiguration(); saveConfiguration();
} }

View File

@@ -91,7 +91,7 @@ public class RspDxTunerEditor extends RspTunerEditor<RspDxTunerConfiguration>
add(new JLabel("IF AGC Mode:")); add(new JLabel("IF AGC Mode:"));
JPanel gainPanel = new JPanel(); JPanel gainPanel = new JPanel();
gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]","")); gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]",""));
gainPanel.add(getAgcModeCombo()); gainPanel.add(getAgcButton());
gainPanel.add(getGainOverloadButton()); gainPanel.add(getGainOverloadButton());
add(gainPanel, "wrap"); add(gainPanel, "wrap");
@@ -158,10 +158,11 @@ public class RspDxTunerEditor extends RspTunerEditor<RspDxTunerConfiguration>
getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null); getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null);
updateSampleRateToolTip(); updateSampleRateToolTip();
getAgcModeCombo().setEnabled(hasTuner()); getAgcButton().setEnabled(hasTuner());
if(hasTuner()) if(hasTuner())
{ {
getAgcModeCombo().setSelectedItem(getTunerController().getControlRsp().getAgcMode()); AgcMode current = getTunerController().getControlRsp().getAgcMode();
getAgcButton().setSelected(current == null || current.equals(AgcMode.ENABLE));
//Register to receive gain overload notifications //Register to receive gain overload notifications
getTunerController().getControlRsp().setGainOverloadListener(this); getTunerController().getControlRsp().setGainOverloadListener(this);
} }
@@ -239,7 +240,7 @@ public class RspDxTunerEditor extends RspTunerEditor<RspDxTunerConfiguration>
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected()); getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
getConfiguration().setAntenna((RspDxAntenna) getAntennaCombo().getSelectedItem()); getConfiguration().setAntenna((RspDxAntenna) getAntennaCombo().getSelectedItem());
getConfiguration().setGain(getGainSlider().getValue()); getConfiguration().setGain(getGainSlider().getValue());
getConfiguration().setAgcMode((AgcMode)getAgcModeCombo().getSelectedItem()); getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
saveConfiguration(); saveConfiguration();
} }