diff --git a/src/main/java/io/github/dsheirer/module/decode/p25/P25DecoderState.java b/src/main/java/io/github/dsheirer/module/decode/p25/P25DecoderState.java index 952e1a48..74b21473 100644 --- a/src/main/java/io/github/dsheirer/module/decode/p25/P25DecoderState.java +++ b/src/main/java/io/github/dsheirer/module/decode/p25/P25DecoderState.java @@ -1010,6 +1010,8 @@ public class P25DecoderState extends DecoderState implements IChannelEventListen else if(message instanceof PacketMessage) { PacketMessage packetMessage = (PacketMessage)message; + getIdentifierCollection().remove(IdentifierClass.USER); + getIdentifierCollection().update(packetMessage.getIdentifiers()); IPacket packet = packetMessage.getPacket(); @@ -1025,22 +1027,11 @@ public class P25DecoderState extends DecoderState implements IChannelEventListen IPacket udpPayload = udpPacket.getPayload(); - Identifier from = packetMessage.getHeader().isOutbound() ? - ipv4.getHeader().getFromAddress() : packetMessage.getHeader().getLLID(); - Identifier to = packetMessage.getHeader().isOutbound() ? - packetMessage.getHeader().getLLID() : ipv4.getHeader().getToAddress(); - - getIdentifierCollection().update(from); - getIdentifierCollection().update(to); - if(udpPayload instanceof ARSPacket) { ARSPacket arsPacket = (ARSPacket)udpPayload; MutableIdentifierCollection ic = new MutableIdentifierCollection(getIdentifierCollection().getIdentifiers()); - ic.remove(IdentifierClass.USER); - ic.update(from); - ic.update(to); DecodeEvent packetEvent = P25DecodeEvent.builder(message.getTimestamp()) .channel(getCurrentChannel()) @@ -1054,9 +1045,6 @@ public class P25DecoderState extends DecoderState implements IChannelEventListen else { MutableIdentifierCollection ic = new MutableIdentifierCollection(getIdentifierCollection().getIdentifiers()); - ic.remove(IdentifierClass.USER); - ic.update(from); - ic.update(to); DecodeEvent packetEvent = P25DecodeEvent.builder(message.getTimestamp()) .channel(getCurrentChannel()) diff --git a/src/main/java/io/github/dsheirer/module/decode/p25/message/pdu/packet/PacketMessage.java b/src/main/java/io/github/dsheirer/module/decode/p25/message/pdu/packet/PacketMessage.java index 1252f355..71b5ba55 100644 --- a/src/main/java/io/github/dsheirer/module/decode/p25/message/pdu/packet/PacketMessage.java +++ b/src/main/java/io/github/dsheirer/module/decode/p25/message/pdu/packet/PacketMessage.java @@ -37,7 +37,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; -import java.util.Collections; import java.util.List; /** @@ -52,6 +51,7 @@ public class PacketMessage extends P25Message private BinaryMessage mPacketMessage; private SNDCPPacketHeader mSNDCPPacketHeader; private IPacket mPacket; + private List mIdentifiers; public PacketMessage(PDUSequence PDUSequence, int nac, long timestamp) { @@ -262,6 +262,19 @@ public class PacketMessage extends P25Message @Override public List getIdentifiers() { - return Collections.EMPTY_LIST; + if(mIdentifiers == null) + { + mIdentifiers = new ArrayList<>(); + mIdentifiers.add(getPDUSequence().getHeader().getLLID()); + + if(getPacket() instanceof IPV4Packet) + { + IPV4Packet ipv4 = (IPV4Packet)getPacket(); + mIdentifiers.add(ipv4.getHeader().getFromAddress()); + mIdentifiers.add(ipv4.getHeader().getToAddress()); + } + } + + return mIdentifiers; } } diff --git a/src/main/java/io/github/dsheirer/source/tuner/usb/USBTransferProcessor.java b/src/main/java/io/github/dsheirer/source/tuner/usb/USBTransferProcessor.java index 11c90384..d48e4cac 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/usb/USBTransferProcessor.java +++ b/src/main/java/io/github/dsheirer/source/tuner/usb/USBTransferProcessor.java @@ -145,7 +145,6 @@ public class USBTransferProcessor implements TransferCallback */ private void stop() { - mLog.debug("stop() was invoked"); if(mRunning.compareAndSet(true, false)) { mBufferDispatcherFuture.cancel(true);