From fdf0842be754785b1308058ad9f9c5529d54bb0b Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Mon, 15 Nov 2010 19:07:37 +0100 Subject: [PATCH] Test creating SCCP CR messages --- SCCP.st | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Tests.st | 12 +++++++++ 2 files changed, 91 insertions(+) diff --git a/SCCP.st b/SCCP.st index 081c786..7e41400 100644 --- a/SCCP.st +++ b/SCCP.st @@ -21,8 +21,14 @@ Object subclass: SCCPHelper [ SCCPHelper class >> msgLudt [ ^ 16r13 ] SCCPHelper class >> msgLudts[ ^ 16r14 ] + SCCPHelper class >> pncData [ ^ 16r0F ] SCCPHelper class >> pncEoO [ ^ 16r00 ] + SCCPHelper class >> createCR: src dest: dest data: aData [ + ^ (SCCPConnectionRequest initWith: src dest: dest data: aData) + toMessage. + ] + SCCPHelper class >> createRLSD: src dest: dest cause: cause [ ^ (SCCPConnectionReleased initWith: src dest: dest cause: cause) toMessage. @@ -34,6 +40,35 @@ Object subclass: SCCPHelper [ ] ] +Object subclass: SCCPAddress [ + | ssn | + + SCCPAddress class >> createWith: ssn [ + ^ (SCCPAddress new) + ssn: ssn; + yourself + ] + + ssn: assn [ + ssn := assn + ] + + asByteArray [ + "Most simple address storing routine" + | ai data | + + data := OrderedCollection new. + ai := 0. + ai := ai bitOr: 2. + ai := ai bitOr: 64. + data add: ai. + data add: ssn. + data addFirst: data size. + + ^ data asByteArray + ] +] + Object subclass: SCCPAddrReference [ SCCPAddrReference class >> store: anAddress on: aMsg [ @@ -56,6 +91,50 @@ Object subclass: SCCPAddrReference [ ] ] +Object subclass: SCCPConnectionRequest [ + + | src dst data | + + SCCPConnectionRequest class >> initWith: src dest: dest data: data [ + + + ^ self new + src: src dest: dest data: data; + yourself + ] + + src: aSrc dest: aDest data: aData [ + src := aSrc. + dst := aDest. + data := aData. + ] + + toMessage [ + + | msg len addr | + + addr := dst asByteArray. + + msg := MessageBuffer new. + msg putByte: SCCPHelper msgCr. + SCCPAddrReference store: src on: msg. + "store proto_class, variable_called, optional_start" + msg putByte: 2. + msg putByte: 2. + msg putByte: 1 + addr size. + + msg putByteArray: addr. + + " place the data now " + msg putByte: SCCPHelper pncData. + msg putByte: data size. + msg putByteArray: data. + msg putByte: SCCPHelper pncEoO. + + ^ msg. + ] +] + Object subclass: SCCPConnectionReleased [ | src dst cause | diff --git a/Tests.st b/Tests.st index cb3923c..ccc142a 100644 --- a/Tests.st +++ b/Tests.st @@ -21,6 +21,18 @@ TestCase subclass: SCCPTests [ self assert: msg = #(6 1 4 0 0 1 4 49 50 51 52) asByteArray. ] + + testCR [ + | cr msg | + cr := SCCPConnectionRequest + initWith: 16r0300BF + dest: (SCCPAddress createWith: 254) + data: '1234' asByteArray. + msg := cr toMessage toByteArray. + msg printNl. + + self assert: msg = #(1 191 0 3 2 2 4 2 66 254 15 4 49 50 51 52 0) asByteArray + ] ] TestCase subclass: IPATests [