mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-13 00:57:31 -05:00
Resolves #373 - Adds support for Tuner frequency error PPM monitoring
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.
This commit is contained in:
@@ -134,6 +134,12 @@ public class LTRDecoder implements Listener<ReusableBuffer>, ISyncDetectListener
|
||||
mSynchronizationMonitor.syncDetected();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncLost()
|
||||
{
|
||||
//no-op
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes the buffer samples by converting all samples to boolean values reflecting if the sample value is
|
||||
* greater than zero (or not). Average symbol timing offset is calculated for the full buffer and the offset is
|
||||
|
||||
@@ -30,13 +30,13 @@ import org.slf4j.LoggerFactory;
|
||||
*
|
||||
* Synchronization States:
|
||||
*
|
||||
* -COARSE - default state. demoted from MEDIUM after one message period with no sync detection.
|
||||
* -COARSE - default state. demoted from MEDIUM after one message period with no sync detection.
|
||||
*
|
||||
* -MEDIUM - promoted from COARSE when one sync detection occurs after two message periods, or demoted from FINE
|
||||
* after two message periods with no sync detections.
|
||||
* -MEDIUM - promoted from COARSE when one sync detection occurs after two message periods, or demoted from FINE
|
||||
* after two message periods with no sync detections.
|
||||
*
|
||||
* -FINE - promoted from MEDIUM after two or more consecutive sync detections within the preceding two or more
|
||||
* message periods.
|
||||
* -FINE - promoted from MEDIUM after two or more consecutive sync detections within the preceding two or more
|
||||
* message periods.
|
||||
*/
|
||||
public class SynchronizationMonitor implements ISyncDetectListener
|
||||
{
|
||||
@@ -50,6 +50,7 @@ public class SynchronizationMonitor implements ISyncDetectListener
|
||||
|
||||
/**
|
||||
* Constructs the synchronization monitor for the specified message symbol length.
|
||||
*
|
||||
* @param messageLength in symbols.
|
||||
*/
|
||||
public SynchronizationMonitor(int messageLength)
|
||||
@@ -127,6 +128,12 @@ public class SynchronizationMonitor implements ISyncDetectListener
|
||||
updateSyncState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncLost()
|
||||
{
|
||||
//no-op
|
||||
}
|
||||
|
||||
/**
|
||||
* Increments the symbol count for each decoded symbol.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user