From 97e0ffa6a86eda433faf79e9e29705ac54f27d0f Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 25 Dec 2012 10:51:34 +0100 Subject: [PATCH] gsm: Provide decoding for Handover Reference and ARFCN... --- GSM48.st | 30 ++++++++++++++++++++++++++++++ Tests.st | 4 ++++ 2 files changed, 34 insertions(+) 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 [ + + channelType [ + + ^ 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 [ + + value [ + + ^ 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. ] ]