#7 NXDN Decoder support. Redesigns tuner and channel frequency error management. (#2431)

Closes #7 

NXDN Decoder

* Implements: NXDN4800, NXDN9600, Type-C and Type-D decoding and trunk tracking.
* Redesigns tuner and channel frequency error management.
This commit is contained in:
Denny Sheirer
2026-07-08 03:44:08 -04:00
committed by GitHub
parent a053315675
commit 7945f0ce63
445 changed files with 30854 additions and 2053 deletions

View File

@@ -1,6 +1,6 @@
/*
* *****************************************************************************
* Copyright (C) 2014-2024 Dennis Sheirer
* Copyright (C) 2014-2025 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
@@ -30,6 +30,7 @@ public enum Form
ARS_USER,
ARS_PASSWORD,
CALL_PROGRESS_TONE,
CATEGORY,
CHANNEL,
CHANNEL_DESCRIPTOR,
CHANNEL_NAME,
@@ -49,6 +50,7 @@ public enum Form
NETWORK_ACCESS_CODE,
PATCH_GROUP,
RADIO,
RAN,
RF_SUBSYSTEM,
SCRAMBLE_PARAMETERS,
SHORT_DATA_MESSAGE,

View File

@@ -1,6 +1,6 @@
/*
* *****************************************************************************
* Copyright (C) 2014-2025 Dennis Sheirer
* Copyright (C) 2014-2026 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
@@ -48,9 +48,10 @@ public class TalkerAliasManager
}
/**
* Updates the alias for the
* @param identifier
* @param alias
* Updates the alias for the radio identifier
*
* @param identifier to update
* @param alias to assign to the radio identifier
*/
public void update(RadioIdentifier identifier, TalkerAliasIdentifier alias)
{

View File

@@ -1,7 +1,6 @@
/*
* ******************************************************************************
* sdrtrunk
* Copyright (C) 2014-2018 Dennis Sheirer
* *****************************************************************************
* Copyright (C) 2014-2025 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
@@ -15,12 +14,12 @@
*
* 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.identifier.configuration;
import io.github.dsheirer.channel.IChannelDescriptor;
import io.github.dsheirer.channel.IBandChannelDescriptor;
import io.github.dsheirer.identifier.Form;
import io.github.dsheirer.identifier.Identifier;
import io.github.dsheirer.identifier.IdentifierClass;
@@ -31,12 +30,12 @@ import io.github.dsheirer.protocol.Protocol;
* Configuration identifier that identifies a channel descriptor. This is primarily used to broadcast the channel
* descriptor for a traffic channel so that it is aware of what channel number and frequency it is decoding.
*/
public class ChannelDescriptorConfigurationIdentifier extends Identifier<IChannelDescriptor>
public class ChannelDescriptorConfigurationIdentifier extends Identifier<IBandChannelDescriptor>
{
/**
* Constructs a channel descriptor configuration identifier
*/
public ChannelDescriptorConfigurationIdentifier(IChannelDescriptor value)
public ChannelDescriptorConfigurationIdentifier(IBandChannelDescriptor value)
{
super(value, IdentifierClass.CONFIGURATION, Form.CHANNEL_DESCRIPTOR, Role.ANY);
}

View File

@@ -30,7 +30,9 @@ import io.github.dsheirer.protocol.Protocol;
public class EncryptionKeyIdentifier extends Identifier<EncryptionKey>
{
public EncryptionKeyIdentifier(EncryptionKey value, IdentifierClass identifierClass, Form form, Role role)
private Protocol mProtocol;
public EncryptionKeyIdentifier(Protocol protocol, EncryptionKey value, IdentifierClass identifierClass, Form form, Role role)
{
super(value, identifierClass, form, role);
}
@@ -38,7 +40,7 @@ public class EncryptionKeyIdentifier extends Identifier<EncryptionKey>
@Override
public Protocol getProtocol()
{
return Protocol.APCO25;
return mProtocol;
}
public boolean isEncrypted()
@@ -46,8 +48,8 @@ public class EncryptionKeyIdentifier extends Identifier<EncryptionKey>
return getValue() != null && getValue().isEncrypted();
}
public static EncryptionKeyIdentifier create(EncryptionKey encryptionKey)
public static EncryptionKeyIdentifier create(Protocol protocol, EncryptionKey encryptionKey)
{
return new EncryptionKeyIdentifier(encryptionKey, IdentifierClass.USER, Form.ENCRYPTION_KEY, Role.ANY);
return new EncryptionKeyIdentifier(protocol, encryptionKey, IdentifierClass.USER, Form.ENCRYPTION_KEY, Role.ANY);
}
}