aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-06-05 10:53:52 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-06-05 10:53:52 +0200
commit00ee3d0ea0cda615ba58705d08380a116193743d (patch)
tree6148fc3e64aa5a59fce5c90dce4f012be26ba5e1
parent15be4f4af2f935412305f9e2af0d6a142b2a2093 (diff)
gsm0808: Be able to parse a ciphering mode complete with layer3 contents
-rw-r--r--BSSMAP.st28
-rw-r--r--Tests.st6
2 files changed, 34 insertions, 0 deletions
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 |
+ <category: 'OsmoGSM'>
+
+ 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.