gsm: Add the handover command with the usual stubs for the IEs
This commit is contained in:
parent
83b0dd0e74
commit
6cdfbc77fb
168
GSM48.st
168
GSM48.st
|
@ -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.
|
||||
|
|
7
Tests.st
7
Tests.st
|
@ -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 [
|
||||
|
|
Reference in New Issue