#1304 P25 Phase 1/2 decoder enhancements. (#1898)

* P25 Phase 2 now supports control channel decoding and decoder was enhanced to improve decodes.
* Radio reference site editor updated for phase 2 sites to allow user to select FDMA or TDMA control.
* Decode events are now minimized and de-duplicated.
* Fully parsing all phase 1/2 messages from the latest ICD.
* Vendor specific messaging recoveries (Moto & Harris).
* Patch group management enhancements with stale patch detection.
* Tuner editor now fully resets the min/max frequency values
* Default traffic channel count increased to 20 (from 3).
* ISSI roaming radio and talkgroup values now displayed and aliasable as fully qualified values (e.g. 1234(123.456.7890)
* Moto emergency alarm activation messaging support
* Expanded list of P25 encryption algorithms
* Message (bits) viewer enhanced for P25 phase 1 and phase 2
* IPV4 addresses and UDP ports no longer classified as user values - won't display in event views.
* New framework for describing message binary fields that should reduce overall memory footprint and enhance code readability

Co-authored-by: Dennis Sheirer <dsheirer@github.com>
This commit is contained in:
Denny Sheirer
2024-04-26 13:55:17 -04:00
committed by GitHub
parent f5938fa8e2
commit 7e709d9d6f
430 changed files with 30098 additions and 13300 deletions

View File

@@ -1,6 +1,6 @@
/*
* *****************************************************************************
* Copyright (C) 2014-2020 Dennis Sheirer
* Copyright (C) 2014-2024 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
@@ -19,6 +19,7 @@
package io.github.dsheirer.module.decode.traffic;
import io.github.dsheirer.controller.channel.Channel;
import io.github.dsheirer.module.Module;
/**
@@ -26,4 +27,44 @@ import io.github.dsheirer.module.Module;
*/
public abstract class TrafficChannelManager extends Module
{
private long mCurrentControlFrequency;
/**
* Constructs an instance.
*/
public TrafficChannelManager()
{
}
/**
* Current control frequency
* @return frequency in hertz
*/
protected long getCurrentControlFrequency()
{
return mCurrentControlFrequency;
}
/**
* Sets the current control frequency.
* @param frequency that is now the control frequency
* @param parentChannel channel configuration
*/
public void setCurrentControlFrequency(long frequency, Channel parentChannel)
{
long previous = mCurrentControlFrequency;
mCurrentControlFrequency = frequency;
processControlFrequencyUpdate(previous, frequency, parentChannel);
}
/**
* Subclass implementation to receive notification that the control channel frequency has changed when the source
* is set for multiple frequencies, or in the case of DMR when the REST channel changes. Subclass should remove
* any traffic channels currently allocated against the new control frequency.
*
* @param previous frequency for the control channel (to remove from allocated channels)
* @param current frequency for the control channel (to add to allocated channels)
* @param channel for the current control channel
*/
protected abstract void processControlFrequencyUpdate(long previous, long current, Channel channel);
}