mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 08:37:25 -05:00
* 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:
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2014-2023 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
|
||||
@@ -66,7 +66,7 @@ public class DecodeEventLogger extends EventLogger implements IDecodeEventListen
|
||||
@Override
|
||||
public void receive(IDecodeEvent decodeEvent)
|
||||
{
|
||||
write(toCSV(decodeEvent));
|
||||
write(toCSV(decodeEvent));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -88,7 +88,7 @@ public class DecodeEventLogger extends EventLogger implements IDecodeEventListen
|
||||
|
||||
public static String getCSVHeader()
|
||||
{
|
||||
return "TIMESTAMP,DURATION_MS,PROTOCOL,EVENT,FROM,TO,CHANNEL_NUMBER,FREQUENCY,TIMESLOT,DETAILS";
|
||||
return "TIMESTAMP,DURATION_MS,PROTOCOL,EVENT,FROM,TO,CHANNEL_NUMBER,FREQUENCY,TIMESLOT,DETAILS,EVENT_ID";
|
||||
}
|
||||
|
||||
private String toCSV(IDecodeEvent event)
|
||||
@@ -137,18 +137,25 @@ public class DecodeEventLogger extends EventLogger implements IDecodeEventListen
|
||||
IChannelDescriptor descriptor = event.getChannelDescriptor();
|
||||
cells.add(descriptor != null ? descriptor : "");
|
||||
|
||||
Identifier frequency = event.getIdentifierCollection()
|
||||
.getIdentifier(IdentifierClass.CONFIGURATION, Form.CHANNEL_FREQUENCY, Role.ANY);
|
||||
|
||||
if(frequency instanceof FrequencyConfigurationIdentifier)
|
||||
if(descriptor != null)
|
||||
{
|
||||
cells.add(mFrequencyFormat
|
||||
.format(((FrequencyConfigurationIdentifier)frequency).getValue() / 1e6d));
|
||||
|
||||
cells.add(mFrequencyFormat.format(descriptor.getDownlinkFrequency() / 1e6d));
|
||||
}
|
||||
else
|
||||
{
|
||||
cells.add("");
|
||||
Identifier frequency = event.getIdentifierCollection()
|
||||
.getIdentifier(IdentifierClass.CONFIGURATION, Form.CHANNEL_FREQUENCY, Role.ANY);
|
||||
|
||||
if(frequency instanceof FrequencyConfigurationIdentifier)
|
||||
{
|
||||
cells.add(mFrequencyFormat
|
||||
.format(((FrequencyConfigurationIdentifier)frequency).getValue() / 1e6d));
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
cells.add("");
|
||||
}
|
||||
}
|
||||
|
||||
if(event.hasTimeslot())
|
||||
@@ -163,6 +170,8 @@ public class DecodeEventLogger extends EventLogger implements IDecodeEventListen
|
||||
String details = event.getDetails();
|
||||
cells.add(details != null ? details : "");
|
||||
|
||||
cells.add(event.hashCode());
|
||||
|
||||
return mCsvFormat.format(cells.toArray());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user