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.