mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 08:37:25 -05:00
#1753 Changes tuner editors to use toggle button for IF AGC mode and updates enum lookup to always return either ENABLE or DISABLE. Deprecates 3x enum values as no longer supported.
This commit is contained in:
@@ -35,10 +35,10 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JComboBox;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JSlider;
|
||||
import javax.swing.JToggleButton;
|
||||
|
||||
/**
|
||||
* 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 JSlider mGainSlider;
|
||||
private JLabel mGainValueLabel;
|
||||
private JComboBox<AgcMode> mAgcModeCombo;
|
||||
private JToggleButton mAgcButton;
|
||||
private JButton mGainOverloadButton;
|
||||
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());
|
||||
mAgcModeCombo.setEnabled(false);
|
||||
mAgcModeCombo.addActionListener(e -> {
|
||||
mAgcButton = new JToggleButton("IF AGC");
|
||||
mAgcButton.setEnabled(false);
|
||||
mAgcButton.addActionListener(e -> {
|
||||
if(hasTuner() && !isLoading())
|
||||
{
|
||||
AgcMode selected = (AgcMode)mAgcModeCombo.getSelectedItem();
|
||||
try
|
||||
{
|
||||
getTunerController().getControlRsp().setAgcMode(selected);
|
||||
save();
|
||||
getTunerController().getControlRsp().setAgcMode(mAgcButton.isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
|
||||
}
|
||||
catch(SDRPlayException se)
|
||||
{
|
||||
@@ -146,7 +144,7 @@ public abstract class RspTunerEditor<C extends RspTunerConfiguration> extends Tu
|
||||
});
|
||||
}
|
||||
|
||||
return mAgcModeCombo;
|
||||
return mAgcButton;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -20,16 +20,19 @@
|
||||
package io.github.dsheirer.source.tuner.sdrplay.api.parameter.control;
|
||||
|
||||
import io.github.dsheirer.source.tuner.sdrplay.api.v3_07.sdrplay_api_h;
|
||||
import java.util.EnumSet;
|
||||
|
||||
/**
|
||||
* Automatic Gain Control (AGC) Control (mode)
|
||||
*/
|
||||
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"),
|
||||
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");
|
||||
|
||||
private int mValue;
|
||||
@@ -41,6 +44,8 @@ public enum AgcMode
|
||||
mDescription = description;
|
||||
}
|
||||
|
||||
public static EnumSet<AgcMode> SUPPORTED_MODES = EnumSet.of(ENABLE, DISABLE);
|
||||
|
||||
/**
|
||||
* Numeric value
|
||||
*/
|
||||
@@ -49,6 +54,15 @@ public enum AgcMode
|
||||
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
|
||||
* @param value to lookup
|
||||
@@ -60,7 +74,16 @@ public enum AgcMode
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ public class Rsp1TunerEditor extends RspTunerEditor<Rsp1TunerConfiguration>
|
||||
add(new JLabel("IF AGC Mode:"));
|
||||
JPanel gainPanel = new JPanel();
|
||||
gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]",""));
|
||||
gainPanel.add(getAgcModeCombo());
|
||||
gainPanel.add(getAgcButton());
|
||||
gainPanel.add(getGainOverloadButton());
|
||||
add(gainPanel, "wrap");
|
||||
|
||||
@@ -134,10 +134,11 @@ public class Rsp1TunerEditor extends RspTunerEditor<Rsp1TunerConfiguration>
|
||||
getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null);
|
||||
updateSampleRateToolTip();
|
||||
|
||||
getAgcModeCombo().setEnabled(hasTuner());
|
||||
getAgcButton().setEnabled(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
|
||||
getTunerController().getControlRsp().setGainOverloadListener(this);
|
||||
}
|
||||
@@ -160,7 +161,7 @@ public class Rsp1TunerEditor extends RspTunerEditor<Rsp1TunerConfiguration>
|
||||
getConfiguration().setAutoPPMCorrectionEnabled(getAutoPPMCheckBox().isSelected());
|
||||
getConfiguration().setSampleRate((RspSampleRate)getSampleRateCombo().getSelectedItem());
|
||||
getConfiguration().setGain(getGainSlider().getValue());
|
||||
getConfiguration().setAgcMode((AgcMode)getAgcModeCombo().getSelectedItem());
|
||||
getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
|
||||
|
||||
saveConfiguration();
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ public class Rsp1aTunerEditor extends RspTunerEditor<Rsp1aTunerConfiguration>
|
||||
add(new JLabel("IF AGC Mode:"));
|
||||
JPanel gainPanel = new JPanel();
|
||||
gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]",""));
|
||||
gainPanel.add(getAgcModeCombo());
|
||||
gainPanel.add(getAgcButton());
|
||||
gainPanel.add(getGainOverloadButton());
|
||||
add(gainPanel, "wrap");
|
||||
|
||||
@@ -145,10 +145,11 @@ public class Rsp1aTunerEditor extends RspTunerEditor<Rsp1aTunerConfiguration>
|
||||
getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null);
|
||||
updateSampleRateToolTip();
|
||||
|
||||
getAgcModeCombo().setEnabled(hasTuner());
|
||||
getAgcButton().setEnabled(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
|
||||
getTunerController().getControlRsp().setGainOverloadListener(this);
|
||||
}
|
||||
@@ -204,7 +205,7 @@ public class Rsp1aTunerEditor extends RspTunerEditor<Rsp1aTunerConfiguration>
|
||||
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
|
||||
getConfiguration().setRfDabNotch(getRfDabNotchCheckBox().isSelected());
|
||||
getConfiguration().setGain(getGainSlider().getValue());
|
||||
getConfiguration().setAgcMode((AgcMode)getAgcModeCombo().getSelectedItem());
|
||||
getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
|
||||
|
||||
saveConfiguration();
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ public class Rsp2TunerEditor extends RspTunerEditor<Rsp2TunerConfiguration>
|
||||
add(new JLabel("IF AGC Mode:"));
|
||||
JPanel gainPanel = new JPanel();
|
||||
gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]",""));
|
||||
gainPanel.add(getAgcModeCombo());
|
||||
gainPanel.add(getAgcButton());
|
||||
gainPanel.add(getGainOverloadButton());
|
||||
add(gainPanel, "wrap");
|
||||
|
||||
@@ -149,10 +149,11 @@ public class Rsp2TunerEditor extends RspTunerEditor<Rsp2TunerConfiguration>
|
||||
getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null);
|
||||
updateSampleRateToolTip();
|
||||
|
||||
getAgcModeCombo().setEnabled(hasTuner());
|
||||
getAgcButton().setEnabled(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
|
||||
getTunerController().getControlRsp().setGainOverloadListener(this);
|
||||
}
|
||||
@@ -218,7 +219,7 @@ public class Rsp2TunerEditor extends RspTunerEditor<Rsp2TunerConfiguration>
|
||||
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
|
||||
getConfiguration().setAntennaSelection((Rsp2AntennaSelection)getAntennaSelectionCombo().getSelectedItem());
|
||||
getConfiguration().setGain(getGainSlider().getValue());
|
||||
getConfiguration().setAgcMode((AgcMode)getAgcModeCombo().getSelectedItem());
|
||||
getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
|
||||
|
||||
saveConfiguration();
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ public class RspDuoTuner1Editor extends RspTunerEditor<RspDuoTuner1Configuration
|
||||
add(new JLabel("IF AGC Mode:"));
|
||||
JPanel gainPanel = new JPanel();
|
||||
gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]",""));
|
||||
gainPanel.add(getAgcModeCombo());
|
||||
gainPanel.add(getAgcButton());
|
||||
gainPanel.add(getGainOverloadButton());
|
||||
add(gainPanel, "wrap");
|
||||
|
||||
@@ -154,8 +154,6 @@ public class RspDuoTuner1Editor extends RspTunerEditor<RspDuoTuner1Configuration
|
||||
}
|
||||
getTunerStatusLabel().setText(status);
|
||||
getButtonPanel().updateControls();
|
||||
mLog.info("Update tuner status - has tuner: " + hasTuner() + " is locked:" + getTuner().getTunerController().isLockedSampleRate());
|
||||
|
||||
getFrequencyPanel().updateControls();
|
||||
|
||||
clearSampleRates();
|
||||
@@ -167,10 +165,11 @@ public class RspDuoTuner1Editor extends RspTunerEditor<RspDuoTuner1Configuration
|
||||
getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null);
|
||||
updateSampleRateToolTip();
|
||||
|
||||
getAgcModeCombo().setEnabled(hasTuner());
|
||||
getAgcButton().setEnabled(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
|
||||
getTunerController().getControlRsp().setGainOverloadListener(this);
|
||||
}
|
||||
@@ -249,7 +248,7 @@ public class RspDuoTuner1Editor extends RspTunerEditor<RspDuoTuner1Configuration
|
||||
getConfiguration().setRfDabNotch(getRfDabNotchCheckBox().isSelected());
|
||||
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
|
||||
getConfiguration().setGain(getGainSlider().getValue());
|
||||
getConfiguration().setAgcMode((AgcMode)getAgcModeCombo().getSelectedItem());
|
||||
getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
|
||||
|
||||
saveConfiguration();
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ public class RspDuoTuner2Editor extends RspTunerEditor<RspDuoTuner2Configuration
|
||||
add(new JLabel("IF AGC Mode:"));
|
||||
JPanel gainPanel = new JPanel();
|
||||
gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]",""));
|
||||
gainPanel.add(getAgcModeCombo());
|
||||
gainPanel.add(getAgcButton());
|
||||
gainPanel.add(getGainOverloadButton());
|
||||
add(gainPanel, "wrap");
|
||||
|
||||
@@ -182,10 +182,11 @@ public class RspDuoTuner2Editor extends RspTunerEditor<RspDuoTuner2Configuration
|
||||
getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null);
|
||||
updateSampleRateToolTip();
|
||||
|
||||
getAgcModeCombo().setEnabled(hasTuner());
|
||||
getAgcButton().setEnabled(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
|
||||
getTunerController().getControlRsp().setGainOverloadListener(this);
|
||||
}
|
||||
@@ -259,7 +260,7 @@ public class RspDuoTuner2Editor extends RspTunerEditor<RspDuoTuner2Configuration
|
||||
getConfiguration().setRfDabNotch(getRfDabNotchCheckBox().isSelected());
|
||||
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
|
||||
getConfiguration().setGain(getGainSlider().getValue());
|
||||
getConfiguration().setAgcMode((AgcMode)getAgcModeCombo().getSelectedItem());
|
||||
getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
|
||||
|
||||
saveConfiguration();
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ public class RspDxTunerEditor extends RspTunerEditor<RspDxTunerConfiguration>
|
||||
add(new JLabel("IF AGC Mode:"));
|
||||
JPanel gainPanel = new JPanel();
|
||||
gainPanel.setLayout(new MigLayout("insets 0","[grow,fill][]",""));
|
||||
gainPanel.add(getAgcModeCombo());
|
||||
gainPanel.add(getAgcButton());
|
||||
gainPanel.add(getGainOverloadButton());
|
||||
add(gainPanel, "wrap");
|
||||
|
||||
@@ -158,10 +158,11 @@ public class RspDxTunerEditor extends RspTunerEditor<RspDxTunerConfiguration>
|
||||
getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null);
|
||||
updateSampleRateToolTip();
|
||||
|
||||
getAgcModeCombo().setEnabled(hasTuner());
|
||||
getAgcButton().setEnabled(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
|
||||
getTunerController().getControlRsp().setGainOverloadListener(this);
|
||||
}
|
||||
@@ -239,7 +240,7 @@ public class RspDxTunerEditor extends RspTunerEditor<RspDxTunerConfiguration>
|
||||
getConfiguration().setRfNotch(getRfNotchCheckBox().isSelected());
|
||||
getConfiguration().setAntenna((RspDxAntenna) getAntennaCombo().getSelectedItem());
|
||||
getConfiguration().setGain(getGainSlider().getValue());
|
||||
getConfiguration().setAgcMode((AgcMode)getAgcModeCombo().getSelectedItem());
|
||||
getConfiguration().setAgcMode(getAgcButton().isSelected() ? AgcMode.ENABLE : AgcMode.DISABLE);
|
||||
|
||||
saveConfiguration();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user