mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-15 01:57:39 -05:00
Updates heterodyne channel manager to correctly lock/unlock the tuner
controller.
This commit is contained in:
@@ -1,3 +1,18 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* sdr-trunk
|
||||||
|
* Copyright (C) 2014-2018 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 the Free Software Foundation, either version 3 of the License, or (at your option) any
|
||||||
|
* later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with this program.
|
||||||
|
* If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
package io.github.dsheirer.controller.channel;
|
package io.github.dsheirer.controller.channel;
|
||||||
|
|
||||||
import com.jidesoft.swing.JideSplitPane;
|
import com.jidesoft.swing.JideSplitPane;
|
||||||
@@ -24,8 +39,7 @@ import java.awt.Rectangle;
|
|||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
public class ChannelController extends JPanel
|
public class ChannelController extends JPanel implements ActionListener, ListSelectionListener
|
||||||
implements ActionListener, ListSelectionListener
|
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@@ -168,9 +182,13 @@ public class ChannelController extends JPanel
|
|||||||
if( index >= 0 )
|
if( index >= 0 )
|
||||||
{
|
{
|
||||||
int translatedIndex = mChannelTable.convertRowIndexToView( index );
|
int translatedIndex = mChannelTable.convertRowIndexToView( index );
|
||||||
mChannelTable.setRowSelectionInterval( translatedIndex, translatedIndex );
|
|
||||||
mChannelTable.scrollRectToVisible(
|
if(translatedIndex >= 0)
|
||||||
new Rectangle( mChannelTable.getCellRect( translatedIndex, 0, true ) ) );
|
{
|
||||||
|
mChannelTable.setRowSelectionInterval( translatedIndex, translatedIndex );
|
||||||
|
mChannelTable.scrollRectToVisible(
|
||||||
|
new Rectangle( mChannelTable.getCellRect( translatedIndex, 0, true ) ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -289,15 +289,7 @@ public class TunerModel extends AbstractTableModel implements Listener<TunerEven
|
|||||||
}
|
}
|
||||||
case CHANNEL_COUNT:
|
case CHANNEL_COUNT:
|
||||||
int channelCount = tuner.getChannelSourceManager().getTunerChannelCount();
|
int channelCount = tuner.getChannelSourceManager().getTunerChannelCount();
|
||||||
|
return channelCount + " (" + (tuner.getTunerController().isLocked() ? "LOCKED)" : "UNLOCKED)");
|
||||||
if(channelCount > 0)
|
|
||||||
{
|
|
||||||
return channelCount + " (LOCKED)";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return "0";
|
|
||||||
}
|
|
||||||
case FREQUENCY_ERROR:
|
case FREQUENCY_ERROR:
|
||||||
double ppm = tuner.getTunerController().getFrequencyCorrection();
|
double ppm = tuner.getTunerController().getFrequencyCorrection();
|
||||||
return mFrequencyErrorPPMFormat.format(ppm);
|
return mFrequencyErrorPPMFormat.format(ppm);
|
||||||
|
|||||||
@@ -85,6 +85,10 @@ public class HeterodyneChannelSourceManager extends ChannelSourceManager
|
|||||||
//Add to the channel list and update the tuner center frequency as needed
|
//Add to the channel list and update the tuner center frequency as needed
|
||||||
mTunerChannels.add(tunerChannel);
|
mTunerChannels.add(tunerChannel);
|
||||||
updateTunerFrequency();
|
updateTunerFrequency();
|
||||||
|
|
||||||
|
//Lock the tuner controller frequency and sample rate
|
||||||
|
mTunerController.setLocked(true);
|
||||||
|
|
||||||
broadcast(SourceEvent.channelCountChange(getTunerChannelCount()));
|
broadcast(SourceEvent.channelCountChange(getTunerChannelCount()));
|
||||||
|
|
||||||
return tunerChannelSource;
|
return tunerChannelSource;
|
||||||
@@ -138,6 +142,8 @@ public class HeterodyneChannelSourceManager extends ChannelSourceManager
|
|||||||
broadcastToChannels(tunerSourceEvent);
|
broadcastToChannels(tunerSourceEvent);
|
||||||
break;
|
break;
|
||||||
case NOTIFICATION_SAMPLE_RATE_CHANGE:
|
case NOTIFICATION_SAMPLE_RATE_CHANGE:
|
||||||
|
case NOTIFICATION_FREQUENCY_AND_SAMPLE_RATE_LOCKED:
|
||||||
|
case NOTIFICATION_FREQUENCY_AND_SAMPLE_RATE_UNLOCKED:
|
||||||
//no-op
|
//no-op
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -205,6 +211,12 @@ public class HeterodyneChannelSourceManager extends ChannelSourceManager
|
|||||||
mChannelSources.remove(channelSource);
|
mChannelSources.remove(channelSource);
|
||||||
mTunerChannels.remove(channelSource.getTunerChannel());
|
mTunerChannels.remove(channelSource.getTunerChannel());
|
||||||
channelSource.dispose();
|
channelSource.dispose();
|
||||||
|
|
||||||
|
//Unlock the tuner controller if there are no more channels
|
||||||
|
if(getTunerChannelCount() == 0)
|
||||||
|
{
|
||||||
|
mTunerController.setLocked(false);
|
||||||
|
}
|
||||||
broadcast(SourceEvent.channelCountChange(getTunerChannelCount()));
|
broadcast(SourceEvent.channelCountChange(getTunerChannelCount()));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -212,8 +224,12 @@ public class HeterodyneChannelSourceManager extends ChannelSourceManager
|
|||||||
//Rebroadcast so that the tuner source can process this event
|
//Rebroadcast so that the tuner source can process this event
|
||||||
broadcast(sourceEvent);
|
broadcast(sourceEvent);
|
||||||
break;
|
break;
|
||||||
|
case NOTIFICATION_CHANNEL_COUNT_CHANGE:
|
||||||
|
//Lock the tuner controller frequency & sample rate when we're processing channels
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
mLog.info("Unrecognized Source Event received from channel: " + sourceEvent);
|
mLog.info("Unrecognized Source Event received from channel: " + sourceEvent);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user