aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2012-12-25 10:51:34 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2012-12-25 10:51:34 +0100
commit97e0ffa6a86eda433faf79e9e29705ac54f27d0f (patch)
tree791437c5d40933ef34943a068266cd2e1ce7cee2
parentf653a23da50f2a2a7a7f7c89cc9dcdc5aac9cee8 (diff)
gsm: Provide decoding for Handover Reference and ARFCN...
-rw-r--r--GSM48.st30
-rw-r--r--Tests.st4
2 files changed, 34 insertions, 0 deletions
diff --git a/GSM48.st b/GSM48.st
index 6c20156..db9dd9e 100644
--- a/GSM48.st
+++ b/GSM48.st
@@ -334,6 +334,31 @@ GSM48SimpleData subclass: GSM48ChannelDescription2 [
<gsmName: 'channelDescription2'>
<gsmValueLength: 3>
+
+ channelType [
+ <category: 'accessing'>
+ ^ data first bitShift: -3.
+ ]
+
+ timeSlot [
+ ^ data first bitAnd: 2r111
+ ]
+
+ isH1 [
+ ^ (data second bitAt: 5) = 1
+ ]
+
+ isH0 [
+ ^ (data second bitAt: 5) = 0
+ ]
+
+ arfcn [
+ | low |
+ self isH0 ifFalse: [^self error: 'ARFCN requires H=0'].
+
+ low := data second bitAnd: 2r11.
+ ^ (low bitShift: 8) bitOr: data third.
+ ]
]
GSM48SimpleData subclass: GSM48ChannelMode [
@@ -426,6 +451,11 @@ GSM48SimpleData subclass: GSM48HandoverReference [
<comment: 'I represent a 10.5.2.15 handover reference'>
<gsmName: 'handoverReference'>
<gsmValueLength: 1>
+
+ value [
+ <category: 'accessing'>
+ ^ data first
+ ]
]
GSM48DataHolder subclass: GSM48MultislotAllocation [
diff --git a/Tests.st b/Tests.st
index 4866593..2b3c4fa 100644
--- a/Tests.st
+++ b/Tests.st
@@ -440,6 +440,10 @@ TestCase subclass: GSM48Test [
self assert: dec cellDescription bcc = 7.
self assert: dec cellDescription ncc = 7.
self assert: dec cellDescription bcch = 809.
+ self assert: dec handoverReference value = 0.
+ self assert: dec channelDescription2 channelType = 1.
+ self assert: dec channelDescription2 timeSlot = 3.
+ self assert: dec channelDescription2 arfcn = 809.
]
]