From 00ee3d0ea0cda615ba58705d08380a116193743d Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Thu, 5 Jun 2014 10:53:52 +0200 Subject: [PATCH] gsm0808: Be able to parse a ciphering mode complete with layer3 contents --- BSSMAP.st | 28 ++++++++++++++++++++++++++++ Tests.st | 6 ++++++ 2 files changed, 34 insertions(+) diff --git a/BSSMAP.st b/BSSMAP.st index 0e9a8b3..00d9c86 100644 --- a/BSSMAP.st +++ b/BSSMAP.st @@ -797,3 +797,31 @@ GSM0808IE subclass: GSM0808Classmark3IE [ aMsg putByteArray: cm. ] ] + +GSM0808IE subclass: GSM0808Layer3MessageContents [ + | layer3Message | + + + GSM0808Layer3MessageContents class >> elementId [^32] + GSM0808Layer3MessageContents class >> initWith: aByteArray [ + ^self new + layer3Message: aByteArray; + yourself + ] + + GSM0808Layer3MessageContents class >> parseFrom: aStream [ + | size | + size := aStream next. + ^self initWith: (aStream next: size) + ] + + layer3Message: aByteArray [ + layer3Message := aByteArray + ] + + writeOnDirect: aMsg [ + aMsg + putByte: layer3Message size; + putByteArray: layer3Message. + ] +] diff --git a/Tests.st b/Tests.st index 8df7f43..56e67ec 100644 --- a/Tests.st +++ b/Tests.st @@ -595,6 +595,12 @@ TestCase subclass: TestMessages [ msg := MSGParser parse: inp. self assert: msg toMessage asByteArray = inp. + "Ciphering mode complete..." + inp := #[16r06 16r01 16r01 16r5B 16r00 16r01 16r14 16r00 16r12 16r55 16r20 16r0D 16r06 16r32 16r17 16r09 16r33 16r15 16r49 16r00 16r93 16r89 16r31 16r62 16rF4 16r2C 16r02]. + msg := MSGParser parse: inp. + self assert: msg toMessage asByteArray = inp. + + "Assignment Command" inp := #(6 0 0 72 0 1 11 0 9 1 11 3 1 10 17 1 0 20 ) asByteArray. msg := MSGParser parse: inp.