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

gsm48: Introduce a pragma for a min/max of values as pragmas

With all changes and cleanups we have 80 lines of code more
than before using the TLV description. Mostly new empty lines
and comments
This commit is contained in:
Holger Hans Peter Freyther 2012-08-24 15:23:02 +02:00
parent 2ad7b7a690
commit 7658a3ca59
1 changed files with 41 additions and 65 deletions

106
GSM48.st
View File

@ -104,6 +104,8 @@ GSM48IE subclass: GSM48VariableSizedIE [
<comment: 'I am a baseclass for variable sized IEs'>
GSM48VariableSizedIE class [
| gsmValueRange |
length: aStream [
<category: 'parsing'>
^ aStream peek + 1
@ -112,8 +114,20 @@ GSM48IE subclass: GSM48VariableSizedIE [
asTLVDescription [
<category: 'parsing'>
^ super asTLVDescription
minSize: self validSizes first maxSize: self validSizes last;
beTLV; yourself
]
gsmMinValueSize: aMin max: aMax [
<category: 'gsm-pragma'>
gsmValueRange := aMin to: aMax.
]
validSizes [
<category: 'parsing'>
"Default size"
^ gsmValueRange ifNil: [1 to: 180].
]
]
]
@ -164,14 +178,6 @@ GSM48VariableSizedIE subclass: GSM48DataHolder [
<category: 'OsmoGSM'>
<comment: 'A simple wrapper for the lazy ones'>
GSM48DataHolder class >> asTLVDescription [
<category: 'parsing'>
^ super asTLVDescription
beTLV;
minSize: self validSizes first maxSize: self validSizes last;
yourself
]
GSM48DataHolder class >> createDefault [
| size data |
size := self validSizes first.
@ -179,11 +185,6 @@ GSM48VariableSizedIE subclass: GSM48DataHolder [
^ self new data: data; yourself.
]
GSM48DataHolder class >> validSizes [
"Include only the actual payload, no additional size for T or L"
^ 1 to: 180
]
GSM48DataHolder class >> initWithData: aData [
^ self new
data: aData;
@ -324,8 +325,8 @@ GSM48DataHolder subclass: GSM48IARestOctets [
<comment: 'I represent a GSM 04.08 IA Rest Octets as of 10.5.2.16'>
<gsmName: 'rest_octets'>
<gsmMinValueSize: 0 max: 11>
GSM48IARestOctets class >> validSizes [ <category: 'parsing'> ^ 0 to: 11 ]
GSM48IARestOctets class >> length: aStream [
<category: 'parsing'>
self shouldNotImplement
@ -358,8 +359,7 @@ GSM48DataHolder subclass: GSM48MobileAllocation [
<comment: 'I represent a GSM 04.08 Mobile Allocation as of 10.5.2.21'>
<gsmName: 'mobileAllocation'>
GSM48MobileAllocation class >> validSizes [ ^ 0 to: 8 ]
<gsmMinValueSize: 0 max: 8>
]
GSM48SimpleData subclass: GSM48KeySeqLuType [
@ -461,6 +461,7 @@ GSM48DataHolder subclass: GSM48Classmark2 [
<comment: 'I am CM2 of 10.5.1.6'>
<gsmName: 'cm2'>
<gsmMinValueSize: 3 max: 3>
GSM48Classmark2 class >> createDefault [
^ self new
@ -471,8 +472,6 @@ GSM48DataHolder subclass: GSM48Classmark2 [
GSM48Classmark2 class >> defaultValue [
^ ByteArray with: 16r33 with: 16r19 with: 16rA2.
]
GSM48Classmark2 class >> validSizes [ ^ 3 to: 3 ]
]
GSM48VariableSizedIE subclass: GSM48MIdentity [
@ -922,9 +921,7 @@ GSM48DataHolder subclass: GSMBearerCap [
<gsmElementId: 16r04>
<gsmName: 'bearer'>
GSMBearerCap class >> validSizes [ ^ 1 to: 13 ]
<gsmMinValueSize: 1 max: 13>
"GSM 04.08 Table 10.5.102. Strings depend on other attributes"
]
@ -934,8 +931,7 @@ GSM48DataHolder subclass: GSMFacility [
<gsmElementId: 16r1C>
<gsmName: 'facility'>
GSMFacility class >> validSizes [ ^ 1 to: 254 ]
<gsmMinValueSize: 1 max: 254>
]
GSM48DataHolder subclass: GSMProgress [
@ -944,6 +940,7 @@ GSM48DataHolder subclass: GSMProgress [
<gsmElementId: 16r1E>
<gsmName: 'progress'>
<gsmMinValueSize: 2 max: 2>
GSMProgress class [
codingStandardMask [ <category: 'Coding standard'> ^ 2r11 ]
@ -972,8 +969,6 @@ GSM48DataHolder subclass: GSMProgress [
yourself
]
GSMProgress class >> validSizes [ ^ 2 to: 2 ]
isGSMToPLMNS [
<category: 'query'>
^ self coding = self class codingStandardGSMToPLMNS.
@ -1153,12 +1148,10 @@ GSM48DataHolder subclass: GSMCalledBCDNumber [
<gsmElementId: 16r5E>
<gsmName: 'called'>
"For PCS1900 it is 19 in total, in theory up to 43. It
depends on the direction as well"
<gsmMinValueSize: 1 max: 17>
GSMCalledBCDNumber class >> validSizes [
"For PCS1900 it is 19 in total, in theory up to 43. It
depends on the direction as well"
^ 1 to: 17
]
GSMCalledBCDNumber class >> spec [ ^ '10.5.4.7' ]
GSMCalledBCDNumber class [
@ -1211,8 +1204,7 @@ GSM48DataHolder subclass: GSMCalledSubBCDNumber [
<gsmElementId: 16r6D>
<gsmName: 'calledSub'>
GSMCalledSubBCDNumber class >> validSizes [ ^ 0 to: 21 ]
<gsmMinValueSize: 0 max: 21>
]
GSM48DataHolder subclass: GSMCallingBCDNumber [
@ -1221,8 +1213,7 @@ GSM48DataHolder subclass: GSMCallingBCDNumber [
<gsmElementId: 16r5C>
<gsmName: 'calling'>
GSMCallingBCDNumber class >> validSizes [ ^ 1 to: 12 ]
<gsmMinValueSize: 1 max: 12>
]
GSM48DataHolder subclass: GSMCallingSubBCDNumber [
@ -1231,8 +1222,7 @@ GSM48DataHolder subclass: GSMCallingSubBCDNumber [
<gsmElementId: 16r5D>
<gsmName: 'callingSub'>
GSMCallingSubBCDNumber class >> validSizes [ ^ 0 to: 21 ]
<gsmMinValueSize: 0 max: 21>
]
GSM48DataHolder subclass: GSMRedirectingBCDNumber [
@ -1241,8 +1231,7 @@ GSM48DataHolder subclass: GSMRedirectingBCDNumber [
<gsmElementId: 16r74>
<gsmName: 'redirect'>
GSMRedirectingBCDNumber class >> validSizes [ ^ 1 to: 17 ]
<gsmMinValueSize: 1 max: 17>
]
GSM48DataHolder subclass: GSMRedirectingSubBCDNumber [
@ -1251,8 +1240,7 @@ GSM48DataHolder subclass: GSMRedirectingSubBCDNumber [
<gsmElementId: 16r75>
<gsmName: 'redirectSub'>
GSMRedirectingSubBCDNumber class >> validSizes [ ^ 1 to: 21 ]
<gsmMinValueSize: 1 max: 21>
]
GSM48DataHolder subclass: GSMLLCompability [
@ -1260,8 +1248,7 @@ GSM48DataHolder subclass: GSMLLCompability [
<comment: '10.5.4.18'>
<gsmElementId: 16r7C>
GSMLLCompability class >> validSizes [ ^ 0 to: 13 ]
<gsmMinValueSize: 0 max: 13>
]
GSM48DataHolder subclass: GSMHLCompability [
@ -1269,7 +1256,7 @@ GSM48DataHolder subclass: GSMHLCompability [
<comment: '10.5.4.16'>
<gsmElementId: 16r7D>
GSMHLCompability class >> validSizes [ ^ 0 to: 3 ]
<gsmMinValueSize: 0 max: 3>
]
GSM48DataHolder subclass: GSMUserUser [
@ -1278,8 +1265,7 @@ GSM48DataHolder subclass: GSMUserUser [
<gsmElementId: 16r7E>
<gsmName: 'useruser'>
GSMUserUser class >> validSizes [ ^ 1 to: 33 ]
<gsmMinValueSize: 1 max: 33>
]
GSM48DataHolder subclass: GSMSSVersionInd [
@ -1288,8 +1274,7 @@ GSM48DataHolder subclass: GSMSSVersionInd [
<gsmElementId: 16r7F>
<gsmName: 'ssVersion'>
GSMSSVersionInd class >> validSizes [ ^ 0 to: 1 ]
<gsmMinValueSize: 0 max: 1>
]
GSM48SimpleTag subclass: GSMClirSuppression [
@ -1314,8 +1299,7 @@ GSM48DataHolder subclass: GSMCCCapabilities [
<gsmElementId: 16r15>
<gsmName: 'ccCapabil'>
GSMCCCapabilities class >> validSizes [ ^ 1 to: 2 ]
<gsmMinValueSize: 1 max: 2>
"TODO: How to handle things that are specified like this but different in
reality? The code should be able to be uses as both validation and real world
@ -1329,8 +1313,7 @@ GSM48DataHolder subclass: GSMConnectedNumber [
<gsmElementId: 16r4C>
<gsmName: 'connected'>
GSMConnectedNumber class >> validSizes [ ^ 1 to: 12 ]
<gsmMinValueSize: 1 max: 12>
]
GSM48DataHolder subclass: GSMConnectedSubNumber [
@ -1339,8 +1322,7 @@ GSM48DataHolder subclass: GSMConnectedSubNumber [
<gsmElementId: 16r4D>
<gsmName: 'connectedSub'>
GSMConnectedSubNumber class >> validSizes [ ^ 0 to: 21 ]
<gsmMinValueSize: 0 max: 21>
]
GSM48DataHolder subclass: GSMAllowedActions [
@ -1349,8 +1331,7 @@ GSM48DataHolder subclass: GSMAllowedActions [
<gsmElementId: 16r7B>
<gsmName: 'allowedActions'>
GSMAllowedActions class >> validSizes [ ^ 1 to: 1 ]
<gsmMinValueSize: 1 max: 1>
]
GSM48DataHolder subclass: GSM48Cause [
@ -1359,8 +1340,7 @@ GSM48DataHolder subclass: GSM48Cause [
<gsmElementId: 16r8>
<gsmName: 'cause'>
GSM48Cause class >> validSizes [ ^ 2 to: 30 ]
<gsmMinValueSize: 2 max: 30>
]
GSM48DataHolder subclass: GSMAlertingPattern [
@ -1369,8 +1349,7 @@ GSM48DataHolder subclass: GSMAlertingPattern [
<gsmElementId: 16r19>
<gsmName: 'alert'>
GSMAlertingPattern class >> validSizes [ ^ 1 to: 1 ]
<gsmMinValueSize: 1 max: 1>
]
GSM48SimpleData subclass: GSM48Callstate [
@ -1387,8 +1366,7 @@ GSM48DataHolder subclass: GSM48AuxillaryStates [
<gsmElementId: 16r24>
<gsmName: 'auxStates'>
GSM48AuxillaryStates class >> validSizes [ <category: 'id'> ^ 1 to: 1]
<gsmMinValueSize: 1 max: 1>
]
GSM48SimpleData subclass: GSMRRCause [
@ -1437,8 +1415,7 @@ GSM48DataHolder subclass: GSMSupportedCodecs [
<gsmElementId: 16r40>
<gsmName: 'supportedCodecs'>
GSMSupportedCodecs class >> validSizes [ ^ 3 to: 254 ]
<gsmMinValueSize: 3 max: 254>
]
GSM48SimpleTag subclass: GSMRedial [
@ -1474,8 +1451,7 @@ GSM48DataHolder subclass: GSMBackupBearerCapability [
<gsmElementId: 16r41>
<gsmName: 'backupBearerCap'>
GSMBackupBearerCapability class >> validSizes [ ^ 1 to: 13 ]
<gsmMinValueSize: 1 max: 13>
]
Osmo.TLVParserBase subclass: GSM48MSG [