mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 08:37:25 -05:00
2537 Complex Vector Oscillator (256/512) Lanes Can Drift Apart Over Time (#2538)
* #2535 Heterodyne Channelizer enhancements and corrections. * #2537 Complex vector oscillator SIMD lane drift. Realigns the SIMD lanes every 262,144 samples. At frequencies where the rotation for a set of lanes is nearly a whole or half turn, rounding affects each lane differently and the lanes drift apart until the next frequency change, producing spurs at multiples of the sample rate divided by the lane count. Lane phase error at 3125 Hz with a 50 kHz sample rate was about -38 dBc after one hour and is now about -83 dBc with 16 lanes and -73 dBc with 8 lanes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * #2537 test updates * #2537 test updates --------- Co-authored-by: denny <dennis.sheirer@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -489,8 +489,10 @@ public class DMRTrafficChannelManager extends TrafficChannelManager implements I
|
||||
config.setChannelGrantEvent(event);
|
||||
}
|
||||
|
||||
getInterModuleEventBus().post(new ChannelStartProcessingRequest(trafficChannel, channel,
|
||||
identifierCollection, this));
|
||||
ChannelStartProcessingRequest request = new ChannelStartProcessingRequest(trafficChannel, channel,
|
||||
identifierCollection, this);
|
||||
request.setStartTimestamp(timestamp);
|
||||
getInterModuleEventBus().post(request);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -371,7 +371,7 @@ public class NXDNTrafficChannelManager extends TrafficChannelManager implements
|
||||
|
||||
if(traffic != null)
|
||||
{
|
||||
requestTrafficChannelStart(traffic, channel, ic, tracker);
|
||||
requestTrafficChannelStart(traffic, channel, ic, tracker, timestamp);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -583,7 +583,7 @@ public class NXDNTrafficChannelManager extends TrafficChannelManager implements
|
||||
|
||||
if(traffic != null)
|
||||
{
|
||||
requestTrafficChannelStart(traffic, channel, ic, tracker);
|
||||
requestTrafficChannelStart(traffic, channel, ic, tracker, timestamp);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -609,7 +609,7 @@ public class NXDNTrafficChannelManager extends TrafficChannelManager implements
|
||||
* @param tracker to update with channel allocation flag
|
||||
*/
|
||||
private void requestTrafficChannelStart(Channel trafficChannel, NXDNChannel nxdnChannel,
|
||||
IdentifierCollection ic, NXDNChannelEventTracker tracker)
|
||||
IdentifierCollection ic, NXDNChannelEventTracker tracker, long timestamp)
|
||||
{
|
||||
if(nxdnChannel != null && nxdnChannel.getDownlinkFrequency() > 0 && getInterModuleEventBus() != null)
|
||||
{
|
||||
@@ -623,6 +623,7 @@ public class NXDNTrafficChannelManager extends TrafficChannelManager implements
|
||||
mAllocatedTrafficChannelMap.put(nxdnChannel.getDownlinkFrequency(), trafficChannel);
|
||||
ChannelStartProcessingRequest startChannelRequest = new ChannelStartProcessingRequest(trafficChannel,
|
||||
nxdnChannel, ic, this);
|
||||
startChannelRequest.setStartTimestamp(timestamp);
|
||||
startChannelRequest.addPreloadDataContent(new NXDNChannelInfoPreloadData(mChannelAccessInformation, mChannelFrequencies));
|
||||
getInterModuleEventBus().post(startChannelRequest);
|
||||
tracker.setTrafficChannelAllocated(true);
|
||||
|
||||
@@ -1182,6 +1182,7 @@ public class P25TrafficChannelManager extends TrafficChannelManager implements I
|
||||
|
||||
ChannelStartProcessingRequest startChannelRequest = new ChannelStartProcessingRequest(trafficChannel,
|
||||
apco25Channel, identifierCollection, this);
|
||||
startChannelRequest.setStartTimestamp(timestamp);
|
||||
startChannelRequest.addPreloadDataContent(new PatchGroupPreLoadDataContent(identifierCollection, timestamp));
|
||||
startChannelRequest.addPreloadDataContent(new P25FrequencyBandPreloadDataContent(mFrequencyBandMap.values()));
|
||||
getInterModuleEventBus().post(startChannelRequest);
|
||||
|
||||
Reference in New Issue
Block a user