diff --git a/.idea/dictionaries/denny.xml b/.idea/dictionaries/denny.xml
index 7f72f826..223a1c26 100644
--- a/.idea/dictionaries/denny.xml
+++ b/.idea/dictionaries/denny.xml
@@ -18,6 +18,7 @@
talkgroup
tgid
ultravox
+ wacn
xtea
diff --git a/src/channel/details/ChannelDetailPanel.java b/src/channel/details/ChannelDetailPanel.java
index 3ed53b2f..4f41e267 100644
--- a/src/channel/details/ChannelDetailPanel.java
+++ b/src/channel/details/ChannelDetailPanel.java
@@ -38,7 +38,7 @@ public class ChannelDetailPanel extends JPanel implements Listener mCallEventBroadcaster = new Broadcaster<>();
private Broadcaster mAttributeChangeRequestBroadcaster = new Broadcaster<>();
diff --git a/src/module/decode/mpt1327/MPT1327DecoderState.java b/src/module/decode/mpt1327/MPT1327DecoderState.java
index 00e85efe..a70b96fa 100644
--- a/src/module/decode/mpt1327/MPT1327DecoderState.java
+++ b/src/module/decode/mpt1327/MPT1327DecoderState.java
@@ -389,9 +389,9 @@ public class MPT1327DecoderState extends DecoderState
{
StringBuilder sb = new StringBuilder();
- sb.append("Activity Summary\n");
- sb.append("Decoder:\tMPT-1327\n");
- sb.append("Site:\t");
+ sb.append("Activity Summary - Decoder: MPT-1327\n");
+ sb.append(DIVIDER1);
+ sb.append("Site: ");
if(mSite != null)
{
@@ -403,9 +403,7 @@ public class MPT1327DecoderState extends DecoderState
if(siteAlias != null)
{
- sb.append(" ");
- sb.append(siteAlias.getName());
- sb.append("\n");
+ sb.append(" ").append(siteAlias.getName()).append("\n");
}
}
}
@@ -414,13 +412,11 @@ public class MPT1327DecoderState extends DecoderState
sb.append("Unknown\n");
}
- sb.append("\n\n");
-
- sb.append("Talkgroups\n\n");
+ sb.append(DIVIDER2).append("Talkgroups: ");
if(mGroups.isEmpty())
{
- sb.append(" None\n");
+ sb.append("None\n");
}
else
{
@@ -429,8 +425,7 @@ public class MPT1327DecoderState extends DecoderState
for(String talkgroup : talkgroups)
{
- sb.append(" ");
- sb.append(talkgroup);
+ sb.append("\n ").append(talkgroup);
if(hasAliasList())
{
@@ -450,7 +445,7 @@ public class MPT1327DecoderState extends DecoderState
for(String member : members)
{
- sb.append(" >");
+ sb.append(" >");
sb.append(member);
if(hasAliasList())
@@ -466,27 +461,26 @@ public class MPT1327DecoderState extends DecoderState
sb.append("\n");
}
-
- sb.append("\n");
}
}
- sb.append("\n");
+ sb.append(DIVIDER2).append("All Idents: ");
- sb.append("Individual Idents\n");
if(mIdents.isEmpty())
{
- sb.append(" None\n");
+ sb.append("None\n");
}
else
{
+ sb.append("\n");
+
Iterator it = mIdents.iterator();
while(it.hasNext())
{
String ident = it.next();
- sb.append(" ");
+ sb.append("");
sb.append(ident);
sb.append(" ");
diff --git a/src/module/decode/p25/P25DecoderState.java b/src/module/decode/p25/P25DecoderState.java
index 2b835de3..76666ccd 100644
--- a/src/module/decode/p25/P25DecoderState.java
+++ b/src/module/decode/p25/P25DecoderState.java
@@ -148,6 +148,7 @@ public class P25DecoderState extends DecoderState
private static final DecimalFormat mFrequencyFormatter =
new DecimalFormat("0.000000");
+
private module.decode.p25.message.tsbk.osp.control.NetworkStatusBroadcast mNetworkStatus;
private NetworkStatusBroadcastExtended mNetworkStatusExtended;
private ProtectionParameterBroadcast mProtectionParameterBroadcast;
@@ -3343,29 +3344,25 @@ public class P25DecoderState extends DecoderState
{
StringBuilder sb = new StringBuilder();
- sb.append("Activity Summary\n");
- sb.append("Decoder:\tP25\n");
- sb.append("===================== THIS SITE ======================");
+ sb.append("Activity Summary - Decoder:P25 ").append(getModulation().getLabel()).append("\n");
+ sb.append(DIVIDER1);
+ sb.append("SITE ");
if(mNetworkStatus != null)
{
- sb.append("\nNAC:\t" + mNetworkStatus.getNAC());
- sb.append("\nWACN-SYS:\t" + mNetworkStatus.getWACN());
- sb.append("-" + mNetworkStatus.getSystemID());
- sb.append(" [");
- sb.append(mNetworkStatus.getNetworkCallsign());
- sb.append("]");
- sb.append("\nLRA:\t" + mNetworkStatus.getLocationRegistrationArea());
+ sb.append("NAC:" + mNetworkStatus.getNAC());
+ sb.append("h WACN:" + mNetworkStatus.getWACN());
+ sb.append("h SYS:" + mNetworkStatus.getSystemID());
+ sb.append("h [").append(mNetworkStatus.getNetworkCallsign()).append("]");
+ sb.append(" LRA:" + mNetworkStatus.getLocationRegistrationArea());
}
else if(mNetworkStatusExtended != null)
{
- sb.append("\nNAC:\t" + mNetworkStatusExtended.getNAC());
- sb.append("\nWACN-SYS:\t" + mNetworkStatusExtended.getWACN());
- sb.append("-" + mNetworkStatusExtended.getSystemID());
- sb.append(" [");
- sb.append(mNetworkStatusExtended.getNetworkCallsign());
- sb.append("]");
- sb.append("\nLRA:\t" + mNetworkStatusExtended.getLocationRegistrationArea());
+ sb.append("NAC:" + mNetworkStatusExtended.getNAC());
+ sb.append("h WACN:" + mNetworkStatusExtended.getWACN());
+ sb.append("h SYS:" + mNetworkStatusExtended.getSystemID());
+ sb.append("h [").append(mNetworkStatusExtended.getNetworkCallsign()).append("]");
+ sb.append(" LRA:" + mNetworkStatusExtended.getLocationRegistrationArea());
}
String site = null;
@@ -3376,11 +3373,10 @@ public class P25DecoderState extends DecoderState
}
else if(mRFSSStatusMessageExtended != null)
{
- site = mRFSSStatusMessageExtended.getRFSubsystemID() + "-" +
- mRFSSStatusMessageExtended.getSiteID();
+ site = mRFSSStatusMessageExtended.getRFSubsystemID() + "-" + mRFSSStatusMessageExtended.getSiteID();
}
- sb.append("\nRFSS-SITE:\t" + site);
+ sb.append("h RFSS-SITE:").append(site).append("h");
if(hasAliasList())
{
@@ -3392,121 +3388,120 @@ public class P25DecoderState extends DecoderState
}
}
+ sb.append("\n").append(DIVIDER2);
+
if(mNetworkStatus != null)
{
- sb.append("\nSERVICES:\t" + SystemService.toString(
- mNetworkStatus.getSystemServiceClass()));
- sb.append("\nPCCH:\tDNLINK " + mFrequencyFormatter.format(
- (double)mNetworkStatus.getDownlinkFrequency() / 1E6d) +
- " [" + mNetworkStatus.getIdentifier() + "-" +
- mNetworkStatus.getChannel() + "]\n");
- sb.append("\tUPLINK " + mFrequencyFormatter.format(
- (double)mNetworkStatus.getUplinkFrequency() / 1E6d) + " [" +
- mNetworkStatus.getIdentifier() + "-" +
- mNetworkStatus.getChannel() + "]\n");
+ sb.append("SERVICES: " + SystemService.toString(mNetworkStatus.getSystemServiceClass())).append("\n");
+ sb.append(DIVIDER2);
+ sb.append("PCCH DOWNLINK ")
+ .append(mFrequencyFormatter.format((double)mNetworkStatus.getDownlinkFrequency() / 1E6d))
+ .append(" [").append(mNetworkStatus.getIdentifier()).append("-").append(mNetworkStatus.getChannel())
+ .append("] UPLINK ")
+ .append(mFrequencyFormatter.format((double)mNetworkStatus.getUplinkFrequency() / 1E6d))
+ .append(" [").append(mNetworkStatus.getIdentifier()).append("-").append(mNetworkStatus.getChannel())
+ .append("]\n");
}
else if(mNetworkStatusExtended != null)
{
- sb.append("\nSERVICES:\t" + SystemService.toString(
- mNetworkStatusExtended.getSystemServiceClass()));
- sb.append("\nPCCH:\tDNLINK " + mFrequencyFormatter.format(
- (double)mNetworkStatusExtended.getDownlinkFrequency() / 1E6d) +
- " [" + mNetworkStatusExtended.getTransmitIdentifier() + "-" +
- mNetworkStatusExtended.getTransmitChannel() + "]\n");
- sb.append("\tUPLINK " + mFrequencyFormatter.format(
- (double)mNetworkStatusExtended.getUplinkFrequency() / 1E6d) +
- " [" + mNetworkStatusExtended.getReceiveIdentifier() + "-" +
- mNetworkStatusExtended.getReceiveChannel() + "]");
+ sb.append("\nSERVICES:").append(SystemService.toString(mNetworkStatusExtended.getSystemServiceClass()))
+ .append("\n");
+ sb.append(DIVIDER2);
+ sb.append("PCCH DOWNLINK ")
+ .append(mFrequencyFormatter.format((double)mNetworkStatusExtended.getDownlinkFrequency() / 1E6d))
+ .append(" [").append(mNetworkStatusExtended.getTransmitIdentifier()).append("-")
+ .append(mNetworkStatusExtended.getTransmitChannel()).append("] UPLINK ")
+ .append(mFrequencyFormatter.format((double)mNetworkStatusExtended.getUplinkFrequency() / 1E6d))
+ .append(" [").append(mNetworkStatusExtended.getReceiveIdentifier()).append("-")
+ .append(mNetworkStatusExtended.getReceiveChannel()).append("]\n");
}
if(mSecondaryControlChannels.isEmpty())
{
- sb.append("\nSCCH:\tNONE");
+ sb.append("SCCH: NONE\n");
}
else
{
- for(module.decode.p25.message.tsbk.osp.control.SecondaryControlChannelBroadcast
- sec : mSecondaryControlChannels)
+ for(module.decode.p25.message.tsbk.osp.control.SecondaryControlChannelBroadcast sec : mSecondaryControlChannels)
{
- sb.append("\nSCCH:\tDNLINK " + mFrequencyFormatter.format(
- (double)sec.getDownlinkFrequency1() / 1E6d) +
- " [" + sec.getIdentifier1() + "-" + sec.getChannel1() + "]\n");
- sb.append("\tUPLINK " + mFrequencyFormatter.format(
- (double)sec.getUplinkFrequency1() / 1E6d) + " [" +
- sec.getIdentifier1() + "-" + sec.getChannel1() + "]\n");
+ sb.append("SCCH DOWNLINK ")
+ .append(mFrequencyFormatter.format((double)sec.getDownlinkFrequency1() / 1E6d))
+ .append(" [").append(sec.getIdentifier1()).append("-").append(sec.getChannel1()).append("] UPLINK ")
+ .append(mFrequencyFormatter.format((double)sec.getUplinkFrequency1() / 1E6d))
+ .append(" [").append(sec.getIdentifier1()).append("-").append(sec.getChannel1()).append("]");
if(sec.hasChannel2())
{
- sb.append("\nSCCH:\tDNLINK " + mFrequencyFormatter.format(
- (double)sec.getDownlinkFrequency2() / 1E6d) +
- " [" + sec.getIdentifier2() + "-" + sec.getChannel2() + "]\n");
- sb.append("\tUPLINK " + mFrequencyFormatter.format(
- (double)sec.getUplinkFrequency2() / 1E6d) + " [" +
- sec.getIdentifier2() + "-" + sec.getChannel2() + "]");
+ sb.append(" SCCH 2 DOWNLINK ")
+ .append(mFrequencyFormatter.format((double)sec.getDownlinkFrequency2() / 1E6d))
+ .append(" [").append(sec.getIdentifier2()).append("-").append(sec.getChannel2())
+ .append("] UPLINK ").append(mFrequencyFormatter.format((double)sec.getUplinkFrequency2() / 1E6d))
+ .append(" [").append(sec.getIdentifier2()).append("-").append(sec.getChannel2()).append("]");
}
+
+ sb.append("\n");
}
}
+
if(mSNDCPDataChannel != null)
{
- sb.append("\nSNDCP:");
- sb.append("\tDNLINK " + mFrequencyFormatter.format(
- (double)mSNDCPDataChannel.getDownlinkFrequency() / 1E6D) +
- " [" + mSNDCPDataChannel.getTransmitChannel() + "]");
- sb.append("\tUPLINK " + mFrequencyFormatter.format(
- (double)mSNDCPDataChannel.getUplinkFrequency() / 1E6D) +
- " [" + mSNDCPDataChannel.getReceiveChannel() + "]");
+ sb.append("SNDCP DOWNLINK ")
+ .append(mFrequencyFormatter.format((double)mSNDCPDataChannel.getDownlinkFrequency() / 1E6D))
+ .append(" [").append(mSNDCPDataChannel.getTransmitChannel()).append("]").append(" UPLINK ")
+ .append(mFrequencyFormatter.format((double)mSNDCPDataChannel.getUplinkFrequency() / 1E6D))
+ .append(" [").append(mSNDCPDataChannel.getReceiveChannel()).append("]\n");
}
if(mProtectionParameterBroadcast != null)
{
- sb.append("\nENCRYPTION:");
- sb.append("\nTYPE:\t" + mProtectionParameterBroadcast
- .getEncryptionType().name());
- sb.append("\nALGORITHM:\t" + mProtectionParameterBroadcast
- .getAlgorithmID());
- sb.append("\nKEY:\t" + mProtectionParameterBroadcast.getKeyID());
- sb.append("\nINBOUND IV:\t" + mProtectionParameterBroadcast
- .getInboundInitializationVector());
- sb.append("\nOUTBOUND IV:\t" + mProtectionParameterBroadcast
- .getOutboundInitializationVector());
+ sb.append(DIVIDER2);
+ sb.append("ENCRYPTION TYPE:").append(mProtectionParameterBroadcast.getEncryptionType().name());
+ sb.append(" ALGORITHM:").append(mProtectionParameterBroadcast.getAlgorithmID());
+ sb.append(" KEY:").append(mProtectionParameterBroadcast.getKeyID());
+ sb.append(" INBOUND IV:").append(mProtectionParameterBroadcast.getInboundInitializationVector());
+ sb.append(" OUTBOUND IV:").append(mProtectionParameterBroadcast.getOutboundInitializationVector());
+ sb.append("\n");
}
List identifiers = new ArrayList<>(mBands.keySet());
Collections.sort(identifiers);
- sb.append("\nFREQUENCY BANDS:");
+ sb.append(DIVIDER2).append("FREQUENCY BANDS:\n");
for(Integer id : identifiers)
{
IBandIdentifier band = mBands.get(id);
-
- sb.append("\n\t" + id);
- sb.append("- BASE: " + mFrequencyFormatter.format(
- (double)band.getBaseFrequency() / 1E6d));
- sb.append(" CHANNEL SIZE: " + mFrequencyFormatter.format(
- (double)band.getChannelSpacing() / 1E6d));
- sb.append(" UPLINK OFFSET: " + mFrequencyFormatter.format(
- (double)band.getTransmitOffset() / 1E6D));
+ sb.append(band.toString()).append("\n");
+// sb.append(" ").append(id);
+// sb.append(" - BASE: " + mFrequencyFormatter.format(
+// (double)band.getBaseFrequency() / 1E6d));
+// sb.append(" CHANNEL SIZE: " + mFrequencyFormatter.format(
+// (double)band.getChannelSpacing() / 1E6d));
+// sb.append(" UPLINK OFFSET: " + mFrequencyFormatter.format(
+// (double)band.getTransmitOffset() / 1E6D));
+// sb.append("\n");
}
- sb.append("\n\n=================== NEIGHBORS ======================");
+ sb.append(DIVIDER2).append("NEIGHBOR SITES: ");
if(mNeighborMap.isEmpty())
{
- sb.append("\n\tNONE\n");
- sb.append("\n----------------------------------------------------");
+ sb.append("NONE\n");
}
else
{
for(IAdjacentSite neighbor : mNeighborMap.values())
{
- sb.append("\nNAC:\t" + ((P25Message)neighbor).getNAC());
- sb.append("\nSYSTEM:\t" + neighbor.getSystemID());
- sb.append("\nLRA:\t" + neighbor.getLRA());
+ sb.append("\n");
+ sb.append("NAC:").append(((P25Message)neighbor).getNAC());
+ sb.append("h SYSTEM:" + neighbor.getSystemID());
+ sb.append("h LRA:" + neighbor.getLRA());
String neighborID = neighbor.getRFSS() + "-" + neighbor.getSiteID();
- sb.append("\nRFSS-SITE:\t" + neighborID);
+ sb.append("h RFSS-SITE:" + neighborID);
+
+ sb.append("h ");
if(hasAliasList())
{
@@ -3514,18 +3509,16 @@ public class P25DecoderState extends DecoderState
if(siteAlias != null)
{
- sb.append(" " + siteAlias.getName());
+ sb.append(siteAlias.getName());
}
}
- sb.append("\nPCCH:\tDNLINK " + mFrequencyFormatter.format(
- (double)neighbor.getDownlinkFrequency() / 1E6d) +
- " [" + neighbor.getDownlinkChannel() + "]");
- sb.append("\n\tUPLINK:" + mFrequencyFormatter.format(
- (double)neighbor.getUplinkFrequency() / 1E6d) +
- " [" + neighbor.getDownlinkChannel() + "]\n");
- sb.append("\nSERVICES:\t" + neighbor.getSystemServiceClass());
- sb.append("\n----------------------------------------------------");
+ sb.append("\n PCCH: DOWNLINK ")
+ .append(mFrequencyFormatter.format((double)neighbor.getDownlinkFrequency() / 1E6d))
+ .append(" [").append(neighbor.getDownlinkChannel()).append("] UPLINK:")
+ .append(mFrequencyFormatter.format((double)neighbor.getUplinkFrequency() / 1E6d))
+ .append(" [").append(neighbor.getDownlinkChannel()).append("] SERVICES: ")
+ .append(neighbor.getSystemServiceClass());
}
}
diff --git a/src/module/decode/p25/message/tsbk/osp/control/IdentifierUpdateNonVUHF.java b/src/module/decode/p25/message/tsbk/osp/control/IdentifierUpdateNonVUHF.java
index e4719edb..0022f082 100644
--- a/src/module/decode/p25/message/tsbk/osp/control/IdentifierUpdateNonVUHF.java
+++ b/src/module/decode/p25/message/tsbk/osp/control/IdentifierUpdateNonVUHF.java
@@ -31,17 +31,21 @@ public class IdentifierUpdateNonVUHF extends IdentifierUpdate
StringBuilder sb = new StringBuilder();
sb.append( getMessageStub() );
+ sb.append(toString());
- sb.append( " IDEN:" + getIdentifier() );
+ return sb.toString();
+ }
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append( " ID:" + getIdentifier() );
sb.append( " BASE:" + getBaseFrequency() );
-
- sb.append( " BW:" + getBandwidth() );
-
+ sb.append( " BANDWIDTH:" + getBandwidth() );
sb.append( " SPACING:" + getChannelSpacing() );
-
sb.append( " OFFSET:" + getTransmitOffset() );
-
+
return sb.toString();
}
diff --git a/src/module/decode/p25/message/tsbk/osp/control/IdentifierUpdateTDMA.java b/src/module/decode/p25/message/tsbk/osp/control/IdentifierUpdateTDMA.java
index 4fb02ca0..7524ce7d 100644
--- a/src/module/decode/p25/message/tsbk/osp/control/IdentifierUpdateTDMA.java
+++ b/src/module/decode/p25/message/tsbk/osp/control/IdentifierUpdateTDMA.java
@@ -30,18 +30,26 @@ public class IdentifierUpdateTDMA extends IdentifierUpdate
StringBuilder sb = new StringBuilder();
sb.append( getMessageStub() );
+ sb.append(toString());
- sb.append( " IDEN:" + getIdentifier() );
- sb.append( " BASE:" + getBaseFrequency() );
- sb.append( " BW:" + getBandwidth() );
- sb.append( " SPACING:" + getChannelSpacing() );
- sb.append( " OFFSET:" + getTransmitOffset() );
- sb.append( " TYPE:" + getChannelType().toString() );
-
return sb.toString();
}
-
- public ChannelType getChannelType()
+
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append( " ID:" + getIdentifier() );
+ sb.append( " BASE:" + getBaseFrequency() );
+ sb.append( " BW:" + getBandwidth() );
+ sb.append( " SPACING:" + getChannelSpacing() );
+ sb.append( " OFFSET:" + getTransmitOffset() );
+ sb.append( " TYPE:" + getChannelType().toString() );
+
+ return sb.toString();
+ }
+
+ public ChannelType getChannelType()
{
return ChannelType.fromValue( mMessage.getInt( CHANNEL_TYPE) );
}
@@ -109,7 +117,7 @@ public class IdentifierUpdateTDMA extends IdentifierUpdate
}
sb.append( mAccessType.name() );
- sb.append( " BW:" + mBandwidth );
+ sb.append( " BANDWIDTH:" + mBandwidth );
sb.append( " SLOT/CARRIER:" + mSlotsPerCarrier );
sb.append( " VOCODER:" + mVocoder.name() );
diff --git a/src/module/decode/p25/message/tsbk/osp/control/IdentifierUpdateVUHF.java b/src/module/decode/p25/message/tsbk/osp/control/IdentifierUpdateVUHF.java
index 3dffa8cd..fb7c7098 100644
--- a/src/module/decode/p25/message/tsbk/osp/control/IdentifierUpdateVUHF.java
+++ b/src/module/decode/p25/message/tsbk/osp/control/IdentifierUpdateVUHF.java
@@ -32,17 +32,21 @@ public class IdentifierUpdateVUHF extends IdentifierUpdate
StringBuilder sb = new StringBuilder();
sb.append( getMessageStub() );
+ sb.append(toString());
- sb.append( " IDEN:" + getIdentifier() );
+ return sb.toString();
+ }
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append( " ID:" + getIdentifier() );
sb.append( " BASE:" + getBaseFrequency() );
-
- sb.append( " BW:" + getBandwidth() );
-
+ sb.append( " BANDWIDTH:" + getBandwidth() );
sb.append( " SPACING:" + getChannelSpacing() );
-
sb.append( " OFFSET:" + getTransmitOffset() );
-
+
return sb.toString();
}
diff --git a/src/module/decode/p25/message/tsbk/osp/control/SecondaryControlChannelBroadcast.java b/src/module/decode/p25/message/tsbk/osp/control/SecondaryControlChannelBroadcast.java
index 48b61992..25cf1044 100644
--- a/src/module/decode/p25/message/tsbk/osp/control/SecondaryControlChannelBroadcast.java
+++ b/src/module/decode/p25/message/tsbk/osp/control/SecondaryControlChannelBroadcast.java
@@ -1,44 +1,49 @@
package module.decode.p25.message.tsbk.osp.control;
+import alias.AliasList;
+import bits.BinaryMessage;
import module.decode.p25.message.IBandIdentifier;
import module.decode.p25.message.IdentifierReceiver;
import module.decode.p25.message.tsbk.TSBKMessage;
import module.decode.p25.reference.DataUnitID;
import module.decode.p25.reference.Opcode;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import alias.AliasList;
-import bits.BinaryMessage;
-
-public class SecondaryControlChannelBroadcast extends TSBKMessage
- implements IdentifierReceiver, Comparable
+public class SecondaryControlChannelBroadcast extends TSBKMessage
+ implements IdentifierReceiver, Comparable
{
- private final static Logger mLog =
- LoggerFactory.getLogger( SecondaryControlChannelBroadcast.class );
+ private final static Logger mLog =
+ LoggerFactory.getLogger(SecondaryControlChannelBroadcast.class);
+
+ public static final int[] RFSS_ID = {80, 81, 82, 83, 84, 85, 86, 87};
+ public static final int[] SITE_ID = {88, 89, 90, 91, 92, 93, 94, 95};
+ public static final int[] IDENTIFIER_1 = {96, 97, 98, 99};
+ public static final int[] CHANNEL_1 = {100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111};
+ public static final int[] SYSTEM_SERVICE_CLASS_1 = {112, 113, 114, 115, 116,
+ 117, 118, 119};
+ public static final int[] IDENTIFIER_2 = {120, 121, 122, 123};
+ public static final int[] CHANNEL_2 = {124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135};
+ public static final int[] SYSTEM_SERVICE_CLASS_2 = {136, 137, 138, 139, 140,
+ 141, 142, 143};
- public static final int[] RFSS_ID = { 80,81,82,83,84,85,86,87 };
- public static final int[] SITE_ID = { 88,89,90,91,92,93,94,95 };
- public static final int[] IDENTIFIER_1 = { 96,97,98,99 };
- public static final int[] CHANNEL_1 = { 100,101,102,103,104,105,106,107,108,
- 109,110,111 };
- public static final int[] SYSTEM_SERVICE_CLASS_1 = { 112,113,114,115,116,
- 117,118,119 };
- public static final int[] IDENTIFIER_2 = { 120,121,122,123 };
- public static final int[] CHANNEL_2 = { 124,125,126,127,128,129,130,131,132,
- 133,134,135 };
- public static final int[] SYSTEM_SERVICE_CLASS_2 = { 136,137,138,139,140,
- 141,142,143 };
-
private IBandIdentifier mIdentifierUpdate1;
private IBandIdentifier mIdentifierUpdate2;
-
- public SecondaryControlChannelBroadcast( BinaryMessage message,
- DataUnitID duid,
- AliasList aliasList )
+
+ private int mRFSS;
+ private int mSite;
+ private int mIdent1;
+ private int mIdent2;
+ private int mChan1;
+ private int mChan2;
+
+ public SecondaryControlChannelBroadcast(BinaryMessage message,
+ DataUnitID duid,
+ AliasList aliasList)
{
- super( message, duid, aliasList );
+ super(message, duid, aliasList);
}
@Override
@@ -46,162 +51,197 @@ public class SecondaryControlChannelBroadcast extends TSBKMessage
{
return Opcode.SECONDARY_CONTROL_CHANNEL_BROADCAST.getDescription();
}
-
+
public String getMessage()
{
StringBuilder sb = new StringBuilder();
-
- sb.append( getMessageStub() );
-
- sb.append( " SITE:" + getRFSS() + "-" + getSiteID() );
-
- sb.append( " CHAN1:" + getIdentifier1() + "-" + getChannel1() );
-
- sb.append( " DN1:" + getDownlinkFrequency1() );
-
- sb.append( " UP1:" + getUplinkFrequency1() );
-
- sb.append( " SVC1:" +
- SystemService.toString( getSystemServiceClass1() ) );
- if( hasChannel2() )
+ sb.append(getMessageStub());
+
+ sb.append(" SITE:" + getRFSS() + "-" + getSiteID());
+
+ sb.append(" CHAN1:" + getIdentifier1() + "-" + getChannel1());
+
+ sb.append(" DN1:" + getDownlinkFrequency1());
+
+ sb.append(" UP1:" + getUplinkFrequency1());
+
+ sb.append(" SVC1:" +
+ SystemService.toString(getSystemServiceClass1()));
+
+ if(hasChannel2())
{
- sb.append( " CHAN2:" + getIdentifier2() + "-" + getChannel2() );
-
- sb.append( " DN2:" + getDownlinkFrequency2() );
-
- sb.append( " UP2:" + getUplinkFrequency2() );
-
- sb.append( " SVC2:" +
- SystemService.toString( getSystemServiceClass2() ) );
+ sb.append(" CHAN2:" + getIdentifier2() + "-" + getChannel2());
+
+ sb.append(" DN2:" + getDownlinkFrequency2());
+
+ sb.append(" UP2:" + getUplinkFrequency2());
+
+ sb.append(" SVC2:" +
+ SystemService.toString(getSystemServiceClass2()));
}
-
+
return sb.toString();
}
-
+
public String getRFSS()
{
- return mMessage.getHex( RFSS_ID, 2 );
+ return mMessage.getHex(RFSS_ID, 2);
}
-
+
public String getSiteID()
{
- return mMessage.getHex( SITE_ID, 2 );
+ return mMessage.getHex(SITE_ID, 2);
}
-
+
public int getIdentifier1()
{
- return mMessage.getInt( IDENTIFIER_1 );
+ return mMessage.getInt(IDENTIFIER_1);
}
-
+
public int getChannel1()
{
- return mMessage.getInt( CHANNEL_1 );
+ return mMessage.getInt(CHANNEL_1);
}
-
+
public int getSystemServiceClass1()
{
- return mMessage.getInt( SYSTEM_SERVICE_CLASS_1 );
+ return mMessage.getInt(SYSTEM_SERVICE_CLASS_1);
}
public int getIdentifier2()
{
- return mMessage.getInt( IDENTIFIER_2 );
+ return mMessage.getInt(IDENTIFIER_2);
}
-
+
public int getChannel2()
{
- return mMessage.getInt( CHANNEL_2 );
+ return mMessage.getInt(CHANNEL_2);
}
-
+
public int getSystemServiceClass2()
{
- return mMessage.getInt( SYSTEM_SERVICE_CLASS_2 );
+ return mMessage.getInt(SYSTEM_SERVICE_CLASS_2);
}
public boolean hasChannel2()
{
- return getSystemServiceClass2() != 0;
+ return getSystemServiceClass2() != 0;
}
-
-
+
+
public long getDownlinkFrequency1()
{
- return calculateDownlink( mIdentifierUpdate1, getChannel1() );
+ return calculateDownlink(mIdentifierUpdate1, getChannel1());
}
-
+
public long getUplinkFrequency1()
{
- return calculateUplink( mIdentifierUpdate1, getChannel1() );
+ return calculateUplink(mIdentifierUpdate1, getChannel1());
}
public long getDownlinkFrequency2()
{
- return calculateDownlink( mIdentifierUpdate2, getChannel2() );
+ return calculateDownlink(mIdentifierUpdate2, getChannel2());
}
-
+
public long getUplinkFrequency2()
{
- return calculateUplink( mIdentifierUpdate2, getChannel2() );
+ return calculateUplink(mIdentifierUpdate2, getChannel2());
}
- @Override
- public void setIdentifierMessage( int identifier, IBandIdentifier message )
+ @Override
+ public void setIdentifierMessage(int identifier, IBandIdentifier message)
{
- if( identifier == getIdentifier1() )
- {
- mIdentifierUpdate1 = message;
- }
-
- if( identifier == getIdentifier2() )
- {
- mIdentifierUpdate2 = message;
- }
- }
-
- public int[] getIdentifiers()
- {
- int[] idens;
-
- if( hasChannel2() )
- {
- idens = new int[ 2 ];
-
- idens[ 0 ] = getIdentifier1();
- idens[ 1 ] = getIdentifier2();
- }
- else
- {
- idens = new int[ 1 ];
-
- idens[ 0 ] = getIdentifier1();
- }
-
- return idens;
- }
+ if(identifier == getIdentifier1())
+ {
+ mIdentifierUpdate1 = message;
+ }
- @Override
- public int compareTo( SecondaryControlChannelBroadcast other )
+ if(identifier == getIdentifier2())
+ {
+ mIdentifierUpdate2 = message;
+ }
+ }
+
+ public int[] getIdentifiers()
{
- if( other.getSiteID().contentEquals( getSiteID() ) &&
- other.getIdentifier1() == getIdentifier1() &&
- other.getChannel1() == getChannel1() &&
- other.getChannel2() == getChannel2() &&
- other.getIdentifier2() == getIdentifier2() &&
- other.getDownlinkFrequency1() == getDownlinkFrequency1() &&
- other.getUplinkFrequency1() == getUplinkFrequency1() &&
- other.getDownlinkFrequency2() == getDownlinkFrequency2() &&
- other.getUplinkFrequency2() == getUplinkFrequency2() )
- {
- return 0;
- }
- else if( other.getIdentifier1() < getIdentifier1() )
- {
- return -1;
- }
- else
- {
- return 1;
- }
+ int[] idens;
+
+ if(hasChannel2())
+ {
+ idens = new int[2];
+
+ idens[0] = getIdentifier1();
+ idens[1] = getIdentifier2();
+ }
+ else
+ {
+ idens = new int[1];
+
+ idens[0] = getIdentifier1();
+ }
+
+ return idens;
+ }
+
+ @Override
+ public int compareTo(SecondaryControlChannelBroadcast other)
+ {
+ if(other.getRFSS().contentEquals(getRFSS()) &&
+ other.getSiteID().contentEquals(getSiteID()) &&
+ other.getIdentifier1() == getIdentifier1() &&
+ other.getChannel1() == getChannel1())
+ {
+ return 0;
+ }
+ else if(other.getIdentifier1() < getIdentifier1())
+ {
+ return -1;
+ }
+ else
+ {
+ return 1;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o)
+ {
+ if(this == o)
+ {
+ return true;
+ }
+ if(!(o instanceof SecondaryControlChannelBroadcast))
+ {
+ return false;
+ }
+
+ SecondaryControlChannelBroadcast that = (SecondaryControlChannelBroadcast)o;
+
+ if(getRFSS() != that.getRFSS())
+ {
+ return false;
+ }
+ if(getSiteID() != that.getSiteID())
+ {
+ return false;
+ }
+ if(getIdentifier1() != that.getIdentifier1())
+ {
+ return false;
+ }
+
+ return getChannel1() == that.getChannel1();
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = getRFSS() != null ? getRFSS().hashCode() : 0;
+ result = 31 * result + getSiteID() != null ? getSiteID().hashCode() : 0;
+ result = 31 * result + getIdentifier1();
+ result = 31 * result + getChannel1();
+ return result;
}
}
diff --git a/src/module/decode/p25/message/tsbk/osp/data/SNDCPDataChannelAnnouncementExplicit.java b/src/module/decode/p25/message/tsbk/osp/data/SNDCPDataChannelAnnouncementExplicit.java
index e7a9f5c1..1753e030 100644
--- a/src/module/decode/p25/message/tsbk/osp/data/SNDCPDataChannelAnnouncementExplicit.java
+++ b/src/module/decode/p25/message/tsbk/osp/data/SNDCPDataChannelAnnouncementExplicit.java
@@ -6,28 +6,21 @@ import module.decode.p25.reference.DataUnitID;
import alias.AliasList;
import bits.BinaryMessage;
-public class SNDCPDataChannelAnnouncementExplicit extends SNDCPData
- implements IdentifierReceiver
+public class SNDCPDataChannelAnnouncementExplicit extends SNDCPData implements IdentifierReceiver
{
public static final int AUTONOMOUS_ACCESS_AVAILABLE_INDICATOR = 88;
public static final int REQUESTED_ACCESS_AVAILABLE_INDICATOR = 89;
public static final int[] TRANSMIT_IDENTIFIER = { 96,97,98,99 };
- public static final int[] TRANSMIT_NUMBER = { 100,101,102,103,104,105,106,
- 107,108,109,110,111 };
+ public static final int[] TRANSMIT_NUMBER = { 100,101,102,103,104,105,106, 107,108,109,110,111 };
public static final int[] RECEIVE_IDENTIFIER = { 112,113,114,115 };
- public static final int[] RECEIVE_NUMBER = { 116,117,118,119,120,121,122,
- 123,124,125,126,127 };
-
- public static final int[] DATA_ACCESS_CONTROL = { 128,129,130,131,132,133,
- 134,135,136,137,138,139,140,141,142,143 };
+ public static final int[] RECEIVE_NUMBER = { 116,117,118,119,120,121,122, 123,124,125,126,127 };
+ public static final int[] DATA_ACCESS_CONTROL = { 128,129,130,131,132,133, 134,135,136,137,138,139,140,141,142,143 };
private IBandIdentifier mIdentifierUpdateTransmit;
private IBandIdentifier mIdentifierUpdateReceive;
- public SNDCPDataChannelAnnouncementExplicit( BinaryMessage message,
- DataUnitID duid,
- AliasList aliasList )
+ public SNDCPDataChannelAnnouncementExplicit( BinaryMessage message, DataUnitID duid, AliasList aliasList )
{
super( message, duid, aliasList );
}
@@ -148,11 +141,11 @@ public class SNDCPDataChannelAnnouncementExplicit extends SNDCPData
public long getDownlinkFrequency()
{
- return calculateDownlink( mIdentifierUpdateTransmit, getReceiveChannelNumber() );
+ return calculateDownlink( mIdentifierUpdateTransmit, getTransmitChannelNumber() );
}
public long getUplinkFrequency()
{
- return calculateUplink( mIdentifierUpdateReceive, getTransmitChannelNumber() );
+ return calculateUplink( mIdentifierUpdateReceive, getReceiveChannelNumber() );
}
}