From d09fad56dbd19ff93d0f8ca6be5019ba7f51cdb5 Mon Sep 17 00:00:00 2001 From: crsawyer <7572190+crsawyer@users.noreply.github.com> Date: Sat, 22 Nov 2025 04:18:41 -0600 Subject: [PATCH] P25 P1 MBE ESS order (#2273) * Modified P25P1 MBE ESS order. ESS will now be populated after LDU2, not at the beginning of LDU2 * Added a version field and incremented it to '2' to signify a breaking change in the order of P25P1 ESS placement. --- .../dsheirer/audio/codec/mbe/MBECallSequence.java | 11 ++++++++++- .../decode/p25/audio/P25P1CallSequenceRecorder.java | 8 ++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/dsheirer/audio/codec/mbe/MBECallSequence.java b/src/main/java/io/github/dsheirer/audio/codec/mbe/MBECallSequence.java index c693749b..e02c07e0 100644 --- a/src/main/java/io/github/dsheirer/audio/codec/mbe/MBECallSequence.java +++ b/src/main/java/io/github/dsheirer/audio/codec/mbe/MBECallSequence.java @@ -36,7 +36,7 @@ import java.util.List; * radio identifiers. */ @JsonRootName("mbe_call") -@JsonPropertyOrder({"protocol", "call_type", "from", "to", "encrypted", "frames"}) +@JsonPropertyOrder({"protocol", "version", "call_type", "from", "to", "encrypted", "system", "site", "frames"}) @JsonInclude(JsonInclude.Include.NON_NULL) public class MBECallSequence { @@ -77,6 +77,15 @@ public class MBECallSequence mProtocol = protocol; } + /** + * Gets the version number for the mbe file structure. + * Should be incremented only on breaking structural changes, not minor additions. + */ + @JsonProperty("version") + public Integer getVersion() + { + return 2; + } /** * Indicates if this sequences contains any audio frames diff --git a/src/main/java/io/github/dsheirer/module/decode/p25/audio/P25P1CallSequenceRecorder.java b/src/main/java/io/github/dsheirer/module/decode/p25/audio/P25P1CallSequenceRecorder.java index 0e4c029d..eaf16a49 100644 --- a/src/main/java/io/github/dsheirer/module/decode/p25/audio/P25P1CallSequenceRecorder.java +++ b/src/main/java/io/github/dsheirer/module/decode/p25/audio/P25P1CallSequenceRecorder.java @@ -152,10 +152,6 @@ public class P25P1CallSequenceRecorder extends MBECallSequenceRecorder { process((LDU1Message)lduMessage); } - else if(lduMessage instanceof LDU2Message) - { - process((LDU2Message)lduMessage); - } List voiceFrames = lduMessage.getIMBEFrames(); @@ -170,6 +166,10 @@ public class P25P1CallSequenceRecorder extends MBECallSequenceRecorder baseTimestamp += 20; } + if(lduMessage instanceof LDU2Message) + { + process((LDU2Message)lduMessage); + } } private void process(LinkControlWord lcw)