From c788292db8797e0334eaac5a8d852349482b099b Mon Sep 17 00:00:00 2001 From: Denny Sheirer Date: Sun, 12 Mar 2023 07:21:23 -0400 Subject: [PATCH] #1489 SDRPlay RSP tuner editors now lock sample rate combo when sourcing channels. (#1490) Co-authored-by: Dennis Sheirer --- .../tuner/airspy/AirspyTunerEditor.java | 9 +++--- .../tuner/fcd/proV1/FCD1TunerEditor.java | 6 ++-- .../tuner/fcd/proplusV2/FCD2TunerEditor.java | 4 +-- .../tuner/hackrf/HackRFTunerEditor.java | 7 +++-- .../tuner/recording/RecordingTunerEditor.java | 4 +-- .../tuner/rtl/RTL2832UnknownTunerEditor.java | 4 +-- .../source/tuner/rtl/e4k/E4KTunerEditor.java | 7 +++-- .../tuner/rtl/r820t/R820TTunerEditor.java | 8 +++-- .../tuner/sdrplay/rsp1/Rsp1TunerEditor.java | 28 +++++++++++++++++ .../tuner/sdrplay/rsp1a/Rsp1aTunerEditor.java | 29 ++++++++++++++++++ .../tuner/sdrplay/rsp2/Rsp2TunerEditor.java | 28 +++++++++++++++++ .../sdrplay/rspDuo/RspDuoTuner1Editor.java | 30 +++++++++++++++++++ .../sdrplay/rspDuo/RspDuoTuner2Editor.java | 28 +++++++++++++++++ .../tuner/sdrplay/rspDx/RspDxTunerEditor.java | 28 +++++++++++++++++ .../dsheirer/source/tuner/ui/TunerEditor.java | 7 ++--- 15 files changed, 201 insertions(+), 26 deletions(-) diff --git a/src/main/java/io/github/dsheirer/source/tuner/airspy/AirspyTunerEditor.java b/src/main/java/io/github/dsheirer/source/tuner/airspy/AirspyTunerEditor.java index 619201c0..d1f72188 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/airspy/AirspyTunerEditor.java +++ b/src/main/java/io/github/dsheirer/source/tuner/airspy/AirspyTunerEditor.java @@ -1,6 +1,6 @@ /* * ***************************************************************************** - * Copyright (C) 2014-2022 Dennis Sheirer + * Copyright (C) 2014-2023 Dennis Sheirer * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -628,19 +628,20 @@ public class AirspyTunerEditor extends TunerEditor return null; } + @Override + public void setTunerLockState(boolean locked) + { + getFrequencyPanel().updateControls(); + getSampleRateCombo().setEnabled(!locked); + updateSampleRateToolTip(); + } + @Override protected void tunerStatusUpdated() { @@ -124,6 +132,7 @@ public class Rsp1TunerEditor extends RspTunerEditor getSampleRateCombo().setEnabled(hasTuner() && !getTuner().getTunerController().isLockedSampleRate()); getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null); + updateSampleRateToolTip(); getAgcModeCombo().setEnabled(hasTuner()); if(hasTuner()) @@ -187,4 +196,23 @@ public class Rsp1TunerEditor extends RspTunerEditor return mSampleRateCombo; } + + /** + * Updates the sample rate tooltip according to the tuner controller's lock state. + */ + private void updateSampleRateToolTip() + { + if(hasTuner() && getTuner().getTunerController().isLockedSampleRate()) + { + getSampleRateCombo().setToolTipText("Sample Rate is locked. Disable decoding channels to unlock."); + } + else if(hasTuner()) + { + getSampleRateCombo().setToolTipText("Select a sample rate for the tuner"); + } + else + { + getSampleRateCombo().setToolTipText("No tuner available"); + } + } } diff --git a/src/main/java/io/github/dsheirer/source/tuner/sdrplay/rsp1a/Rsp1aTunerEditor.java b/src/main/java/io/github/dsheirer/source/tuner/sdrplay/rsp1a/Rsp1aTunerEditor.java index c8bfae37..46d27b71 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/sdrplay/rsp1a/Rsp1aTunerEditor.java +++ b/src/main/java/io/github/dsheirer/source/tuner/sdrplay/rsp1a/Rsp1aTunerEditor.java @@ -117,6 +117,14 @@ public class Rsp1aTunerEditor extends RspTunerEditor return null; } + @Override + public void setTunerLockState(boolean locked) + { + getFrequencyPanel().updateControls(); + getSampleRateCombo().setEnabled(!locked); + updateSampleRateToolTip(); + } + @Override protected void tunerStatusUpdated() { @@ -135,6 +143,7 @@ public class Rsp1aTunerEditor extends RspTunerEditor getSampleRateCombo().setEnabled(hasTuner() && !getTuner().getTunerController().isLockedSampleRate()); getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null); + updateSampleRateToolTip(); getAgcModeCombo().setEnabled(hasTuner()); if(hasTuner()) @@ -315,4 +324,24 @@ public class Rsp1aTunerEditor extends RspTunerEditor return mRfNotchCheckBox; } + + /** + * Updates the sample rate tooltip according to the tuner controller's lock state. + */ + private void updateSampleRateToolTip() + { + if(hasTuner() && getTuner().getTunerController().isLockedSampleRate()) + { + getSampleRateCombo().setToolTipText("Sample Rate is locked. Disable decoding channels to unlock."); + } + else if(hasTuner()) + { + getSampleRateCombo().setToolTipText("Select a sample rate for the tuner"); + } + else + { + getSampleRateCombo().setToolTipText("No tuner available"); + } + } + } diff --git a/src/main/java/io/github/dsheirer/source/tuner/sdrplay/rsp2/Rsp2TunerEditor.java b/src/main/java/io/github/dsheirer/source/tuner/sdrplay/rsp2/Rsp2TunerEditor.java index 2cba4791..3ba0bb46 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/sdrplay/rsp2/Rsp2TunerEditor.java +++ b/src/main/java/io/github/dsheirer/source/tuner/sdrplay/rsp2/Rsp2TunerEditor.java @@ -121,6 +121,14 @@ public class Rsp2TunerEditor extends RspTunerEditor return null; } + @Override + public void setTunerLockState(boolean locked) + { + getFrequencyPanel().updateControls(); + getSampleRateCombo().setEnabled(!locked); + updateSampleRateToolTip(); + } + @Override protected void tunerStatusUpdated() { @@ -139,6 +147,7 @@ public class Rsp2TunerEditor extends RspTunerEditor getSampleRateCombo().setEnabled(hasTuner() && !getTuner().getTunerController().isLockedSampleRate()); getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null); + updateSampleRateToolTip(); getAgcModeCombo().setEnabled(hasTuner()); if(hasTuner()) @@ -360,4 +369,23 @@ public class Rsp2TunerEditor extends RspTunerEditor return mAntennaSelectionCombo; } + + /** + * Updates the sample rate tooltip according to the tuner controller's lock state. + */ + private void updateSampleRateToolTip() + { + if(hasTuner() && getTuner().getTunerController().isLockedSampleRate()) + { + getSampleRateCombo().setToolTipText("Sample Rate is locked. Disable decoding channels to unlock."); + } + else if(hasTuner()) + { + getSampleRateCombo().setToolTipText("Select a sample rate for the tuner"); + } + else + { + getSampleRateCombo().setToolTipText("No tuner available"); + } + } } diff --git a/src/main/java/io/github/dsheirer/source/tuner/sdrplay/rspDuo/RspDuoTuner1Editor.java b/src/main/java/io/github/dsheirer/source/tuner/sdrplay/rspDuo/RspDuoTuner1Editor.java index 4d767b49..e022cdcd 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/sdrplay/rspDuo/RspDuoTuner1Editor.java +++ b/src/main/java/io/github/dsheirer/source/tuner/sdrplay/rspDuo/RspDuoTuner1Editor.java @@ -132,6 +132,14 @@ public class RspDuoTuner1Editor extends RspTunerEditor return null; } + @Override + public void setTunerLockState(boolean locked) + { + getFrequencyPanel().updateControls(); + getSampleRateCombo().setEnabled(!locked); + updateSampleRateToolTip(); + } + @Override protected void tunerStatusUpdated() { @@ -148,6 +156,7 @@ public class RspDxTunerEditor extends RspTunerEditor getSampleRateCombo().setEnabled(hasTuner() && !getTuner().getTunerController().isLockedSampleRate()); getSampleRateCombo().setSelectedItem(hasTuner() ? getTunerController().getControlRsp().getSampleRateEnumeration() : null); + updateSampleRateToolTip(); getAgcModeCombo().setEnabled(hasTuner()); if(hasTuner()) @@ -438,4 +447,23 @@ public class RspDxTunerEditor extends RspTunerEditor return mHdrModeBandwidthCombo; } + + /** + * Updates the sample rate tooltip according to the tuner controller's lock state. + */ + private void updateSampleRateToolTip() + { + if(hasTuner() && getTuner().getTunerController().isLockedSampleRate()) + { + getSampleRateCombo().setToolTipText("Sample Rate is locked. Disable decoding channels to unlock."); + } + else if(hasTuner()) + { + getSampleRateCombo().setToolTipText("Select a sample rate for the tuner"); + } + else + { + getSampleRateCombo().setToolTipText("No tuner available"); + } + } } diff --git a/src/main/java/io/github/dsheirer/source/tuner/ui/TunerEditor.java b/src/main/java/io/github/dsheirer/source/tuner/ui/TunerEditor.java index aab30434..d0d11e65 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/ui/TunerEditor.java +++ b/src/main/java/io/github/dsheirer/source/tuner/ui/TunerEditor.java @@ -547,12 +547,11 @@ public abstract class TunerEditor /** * Sets the lock state for the tuner so that the frequency and sample rate controls can be enabled/disabled. * + * Note: implementing classes should invoke: getFrequencyPanel().updateControls() method. + * * @param locked true if the tuner is locked. */ - public void setTunerLockState(boolean locked) - { - getFrequencyPanel().updateControls(); - } + public abstract void setTunerLockState(boolean locked); /** * Tuner buttons panel