From 12ff5513b7e3767955730fbf48aade7a507d417f Mon Sep 17 00:00:00 2001 From: denny Date: Wed, 27 Jan 2016 19:18:31 -0500 Subject: [PATCH] Adds preliminary support for legacy P25 CAI VSELP voice frames. VSELP 1 and 2 messages simply capture the message at this point -- don't yet know the format for the voice frames and embedded signalling. --- src/module/decode/p25/P25MessageFramer.java | 10 +++++ .../p25/message/vselp/VSELP1Message.java | 43 +++++++++++++++++++ .../p25/message/vselp/VSELP2Message.java | 42 ++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 src/module/decode/p25/message/vselp/VSELP1Message.java create mode 100644 src/module/decode/p25/message/vselp/VSELP2Message.java diff --git a/src/module/decode/p25/P25MessageFramer.java b/src/module/decode/p25/P25MessageFramer.java index 227eba43..84ed4154 100644 --- a/src/module/decode/p25/P25MessageFramer.java +++ b/src/module/decode/p25/P25MessageFramer.java @@ -17,6 +17,8 @@ import module.decode.p25.message.tdu.lc.TDULCMessageFactory; import module.decode.p25.message.tdu.lc.TDULinkControlMessage; import module.decode.p25.message.tsbk.TSBKMessage; import module.decode.p25.message.tsbk.TSBKMessageFactory; +import module.decode.p25.message.vselp.VSELP1Message; +import module.decode.p25.message.vselp.VSELP2Message; import module.decode.p25.reference.DataUnitID; import org.slf4j.Logger; @@ -630,6 +632,14 @@ public class P25MessageFramer implements Listener mComplete = true; break; + case VSELP1: + mComplete = true; + dispatch( new VSELP1Message( mMessage.copy(), mDUID, mAliasList ) ); + break; + case VSELP2: + mComplete = true; + dispatch( new VSELP2Message( mMessage.copy(), mDUID, mAliasList ) ); + break; case UNKN: mComplete = true; dispatch( new P25Message( mMessage.copy(), mDUID, mAliasList ) ); diff --git a/src/module/decode/p25/message/vselp/VSELP1Message.java b/src/module/decode/p25/message/vselp/VSELP1Message.java new file mode 100644 index 00000000..f2ad1113 --- /dev/null +++ b/src/module/decode/p25/message/vselp/VSELP1Message.java @@ -0,0 +1,43 @@ +package module.decode.p25.message.vselp; + +import alias.AliasList; +import bits.BinaryMessage; +import module.decode.p25.message.P25Message; +import module.decode.p25.reference.DataUnitID; +import module.decode.p25.reference.Vendor; + +public class VSELP1Message extends P25Message +{ + /** + * Motorola VSELP audio message 1. + * + * @param message + * @param duid + * @param aliasList + */ + public VSELP1Message( BinaryMessage message, DataUnitID duid, AliasList aliasList ) + { + super( message, duid, aliasList ); + } + + @Override + public String getMessage() + { + StringBuilder sb = new StringBuilder(); + + sb.append( getMessageStub() ); + sb.append( " " ); + sb.append( mMessage.toString() ); + + return sb.toString(); + } + + public String getMessageStub() + { + StringBuilder sb = new StringBuilder(); + + sb.append( "VSELP 1 VOICE FRAME" ); + + return sb.toString(); + } +} diff --git a/src/module/decode/p25/message/vselp/VSELP2Message.java b/src/module/decode/p25/message/vselp/VSELP2Message.java new file mode 100644 index 00000000..e6e1b1c6 --- /dev/null +++ b/src/module/decode/p25/message/vselp/VSELP2Message.java @@ -0,0 +1,42 @@ +package module.decode.p25.message.vselp; + +import alias.AliasList; +import bits.BinaryMessage; +import module.decode.p25.message.P25Message; +import module.decode.p25.reference.DataUnitID; + +public class VSELP2Message extends P25Message +{ + /** + * Motorola VSELP audio message 1. + * + * @param message + * @param duid + * @param aliasList + */ + public VSELP2Message( BinaryMessage message, DataUnitID duid, AliasList aliasList ) + { + super( message, duid, aliasList ); + } + + @Override + public String getMessage() + { + StringBuilder sb = new StringBuilder(); + + sb.append( getMessageStub() ); + sb.append( " " ); + sb.append( mMessage.toString() ); + + return sb.toString(); + } + + public String getMessageStub() + { + StringBuilder sb = new StringBuilder(); + + sb.append( "VSELP 2 VOICE FRAME" ); + + return sb.toString(); + } +}