smalltalk
/
osmo-st-gsm
Archived
1
0
Fork 0

gsm: Add the handover command with the usual stubs for the IEs

This commit is contained in:
Holger Hans Peter Freyther 2012-12-25 10:11:56 +01:00
parent 83b0dd0e74
commit 6cdfbc77fb
2 changed files with 175 additions and 0 deletions

168
GSM48.st
View File

@ -286,6 +286,13 @@ GSM48SimpleData subclass: GSM48PageAndDedicatedMode [
<gsmValueLength: 1>
]
GSM48SimpleData subclass: GSM48CellDescription [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.2 Cell Description'>
<gsmName: 'cellDescription'>
<gsmValueLength: 2>
]
GSM48SimpleData subclass: GSM48ChannelDescription [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.5 channel description'>
@ -304,6 +311,14 @@ GSM48SimpleData subclass: GSM48ChannelDescription [
]
]
GSM48SimpleData subclass: GSM48ChannelDescription2 [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.5a channel description 2'>
<gsmName: 'channelDescription2'>
<gsmValueLength: 3>
]
GSM48SimpleData subclass: GSM48ChannelMode [
| mode |
<category: 'OsmoGSM'>
@ -337,6 +352,16 @@ GSM48SimpleData subclass: GSM48ChannelMode [
]
]
GSM48SimpleData subclass: GSM48ChannelMode2 [
| mode |
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.7 channel mode2'>
<gsmName: 'channelMode2'>
<gsmValueLength: 1>
<gsmElementId: 16r66>
]
GSM48ChannelDescription subclass: GSM48ChannelOrPacketDescription [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.5 or 10.5.2.25a. Conditionals
@ -347,6 +372,60 @@ GSM48ChannelDescription subclass: GSM48ChannelOrPacketDescription [
checking here..."
]
GSM48SimpleTag subclass: GSM48CipherModeSetting [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.9 cipher mode setting'>
<gsmName: 'cipherModeSetting'>
<gsmIeMask: 16rF0>
<gsmElementId: 16r90>
]
GSM48SimpleData subclass: GSM48FrequencyChannelSequence [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.12 Frequency channel sequence'>
<gsmName: 'frequencySequence'>
<gsmElementId: 16r1E>
<gsmValueLength: 9>
]
GSM48DataHolder subclass: GSM48FrequencyList [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.13 frequency list'>
<gsmName: 'frequencyList'>
<gsmElementId: 16r19>
<gsmMinValueSize: 2 max: 129>
]
GSM48SimpleData subclass: GSM48FrequencyShortList [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.14 frequency short list'>
<gsmName: 'frequencyShortList'>
<gsmElementId: 16r12>
<gsmValueLength: 8>
]
GSM48SimpleData subclass: GSM48HandoverReference [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.15 handover reference'>
<gsmName: 'handoverReference'>
<gsmValueLength: 1>
]
GSM48DataHolder subclass: GSM48MultislotAllocation [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.21b multi slot allocation'>
<gsmName: 'multiSlotAllocation'>
<gsmMinValueSize: 1 max: 10>
<gsmElementId: 16r10>
]
GSM48SimpleData subclass: GSM48PowerCommandAndAccess [
<category: 'OsmoGSM'>
<comment: 'I represnt a 10.5.2.28a power command and access'>
<gsmName: 'powerCommandAndAccess'>
<gsmValueLength: 1>
]
GSM48SimpleData subclass: GSM48TimingAdvance [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.40'>
@ -355,6 +434,13 @@ GSM48SimpleData subclass: GSM48TimingAdvance [
<gsmValueLength: 1>
]
GSM48SimpleData subclass: GSM48TimingDifference [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.41 real time difference'>
<gsmName: 'timingDifference'>
<gsmValueLength: 1>
]
GSM48DataHolder subclass: GSM48VGCSTargetModeIndication [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.42a'>
@ -372,6 +458,14 @@ GSM48SimpleData subclass: GSM48StartingTime [
<gsmElementId: 16r7C>
]
GSM48SimpleTag subclass: GSM48SynchronizationInd [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.39'>
<gsmName: 'syncInd'>
<gsmElementId: 16rD0>
<gsmIeMask: 16rF0>
]
GSM48SimpleData subclass: GSM48RequestReference [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.30 Request Reference'>
@ -1714,6 +1808,14 @@ GSM48DataHolder subclass: GSM48GroupChannelDescription [
<gsmMinValueSize: 2 max: 11>
]
GSM48SimpleData subclass: GSM48CellChanelDescription [
<category: 'OsmoGSM'>
<comment: 'I represent a 10.5.2.1b cell channel description'>
<gsmName: 'cellChannelDescription'>
<gsmElementId: 16r62>
<gsmValueLength: 16>
]
GSM48DataHolder subclass: GSM48BAListPref [
<category: 'OsmoGSM'>
<comment: '10.5.2.1c'>
@ -2592,6 +2694,71 @@ GSM48RRMessage subclass: GSM48RRAssignmentComplete [
]
]
GSM48RRMessage subclass: GSM48RRHandoverCommand [
<category: 'OsmoGSM'>
<comment: 'See Table 9.15 for details'>
GSM48RRHandoverCommand class >> messageType [
<category: 'factory'>
^ self msgHandoverCommand
]
GSM48RRHandoverCommand class >> tlvDescription [
<category: 'parsing'>
^ OrderedCollection new
add: GSM48CellDescription asTLVDescription;
add: GSM48ChannelDescription2 asTLVDescription;
add: GSM48HandoverReference asTLVDescription;
add: GSM48PowerCommandAndAccess asTLVDescription;
add: (GSM48SynchronizationInd asTLVDescription beOptional; yourself);
add: (GSM48FrequencyShortList asTLVDescription beConditional; yourself);
add: (GSM48FrequencyList asTLVDescription beConditional; yourself);
add: (GSM48CellChanelDescription asTLVDescription beConditional; yourself);
add: (GSM48MultislotAllocation asTLVDescription beConditional; yourself);
add: (GSM48ChannelMode asTLVDescription
instVarName: #channelSet1; beOptional; yourself);
add: (GSM48ChannelMode asTLVDescription
instVarName: #channelSet2; beOptional; yourself);
add: (GSM48ChannelMode asTLVDescription
instVarName: #channelSet3; beOptional; yourself);
add: (GSM48ChannelMode asTLVDescription
instVarName: #channelSet4; beOptional; yourself);
add: (GSM48ChannelMode asTLVDescription
instVarName: #channelSet5; beOptional; yourself);
add: (GSM48ChannelMode asTLVDescription
instVarName: #channelSet6; beOptional; yourself);
add: (GSM48ChannelMode asTLVDescription
instVarName: #channelSet7; beOptional; yourself);
add: (GSM48ChannelMode asTLVDescription
instVarName: #channelSet8; beOptional; yourself);
add: (GSM48ChannelDescription asTLVDescription
instVarName: #secondDescription; beOptional; yourself);
add: (GSM48ChannelMode2 asTLVDescription
instVarName: #secondMode; beOptional; yourself);
add: (GSM48FrequencyChannelSequence asTLVDescription beConditional; yourself);
add: (GSM48MobileAllocation asTLVDescription beConditional; yourself);
add: (GSM48StartingTime asTLVDescription beOptional; yourself);
add: (GSM48TimingDifference asTLVDescription beConditional; yourself);
add: (GSM48TimingAdvance asTLVDescription beConditional; yourself);
add: (GSM48FrequencyShortList asTLVDescription
instVarName: #beforeTimeShort; beConditional; yourself);
add: (GSM48FrequencyList asTLVDescription
instVarName: #beforeTimeList; beConditional; yourself);
add: (GSM48ChannelDescription2 asTLVDescription
instVarName: #beforeTimeChannel; beOptional; yourself);
add: (GSM48ChannelDescription asTLVDescription
instVarName: #beforeTimeSecondChannel; beOptional; yourself);
add: (GSM48FrequencyChannelSequence asTLVDescription
instVarName: #beforeTimeFrequencySeq; beConditional; yourself);
add: (GSM48MobileAllocation asTLVDescription
instVarName: #beforeTimeTime; beConditional; yourself);
add: (GSM48CipherModeSetting asTLVDescription beOptional; yourself);
add: (GSM48VGCSTargetModeIndication asTLVDescription beOptional; yourself);
add: (GSM48MultiRateConfiguration asTLVDescription beOptional; yourself);
yourself
]
]
GSM48RRMessage subclass: GSM48RRImmediateAssignCommand [
<category: 'OsmoGSM'>
<comment: 'I represent a GSM 04.08 9.1.18 Immediate assignment'>
@ -2776,6 +2943,7 @@ Eval [
GSM48CCEmergencySetup initialize.
GSM48RRAssignmentComplete initialize.
GSM48RRHandoverCommand initialize.
GSM48RRImmediateAssignCommand initialize.
GSM48RRChannelRelease initialize.
GSM48RRClassmarkChange initialize.

View File

@ -429,6 +429,13 @@ TestCase subclass: GSM48Test [
dec := GSM48MSG decode: inp readStream.
self assert: dec toMessage asByteArray = inp.
]
testHandoverCommand [
| dec inp |
inp := #(16r06 16r2B 16rFF 16r29 16r0B 16rE3 16r29 16r00 16r00) asByteArray.
dec := GSM48MSG decode: inp readStream.
self assert: dec toMessage asByteArray = inp.
]
]
SCCPHandler subclass: TestSCCPHandler [