mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 08:37:25 -05:00
and auto-correction for R820T tuners. -Updated TunerModel and TunerViewPanel to add 2 new columns to display the current tuner's PPM setting and (when available) the measured frequency error averaged over 5 second intervals provided by certain decoders (e.g. P25 C4FM and LSM). Frequency error value from P25 decoders is provided from the Costas Loop PLL once 2 or more P25 message sync events have been observed in a short period. -Updated R820T tuner to auto-correct PPM when measured frequency error exceeds the +/- 0.4PPM threshold for a period of 30 seconds or more. Feature can be enabled/disabled by user in the tuner editor panel. Resolved several issues with P25 C4FM/LSM decoders that was impacting performance related to channel misalignment from tuner PPM offsets.
58 lines
1.6 KiB
Java
58 lines
1.6 KiB
Java
/*******************************************************************************
|
|
* 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.bits;
|
|
|
|
import io.github.dsheirer.dsp.symbol.ISyncDetectListener;
|
|
|
|
public class SyncDetector implements ISyncProcessor
|
|
{
|
|
private long mPattern;
|
|
private ISyncDetectListener mListener;
|
|
|
|
public SyncDetector(long pattern)
|
|
{
|
|
mPattern = pattern;
|
|
}
|
|
|
|
public SyncDetector(long pattern, ISyncDetectListener listener)
|
|
{
|
|
this(pattern);
|
|
|
|
mListener = listener;
|
|
}
|
|
|
|
public void setListener(ISyncDetectListener listener)
|
|
{
|
|
mListener = listener;
|
|
}
|
|
|
|
@Override
|
|
public boolean checkSync(long value)
|
|
{
|
|
if(value == mPattern)
|
|
{
|
|
if(mListener != null)
|
|
{
|
|
mListener.syncDetected();
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|