aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/charging_ase/Tariffing-Data-Types.asn
blob: 86d6fbfb52abc1473261b9af222a0f51b5d7013a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
-- ETSI ES 201 296 V1.3.1 (2003-04)
Tariffing-Data-Types {itu-t(0) identified-organization(4) etsi (0) 1296 version3(4)}

DEFINITIONS IMPLICIT TAGS ::= BEGIN

-- This module contains the common data type definitions for the charging information used in the
-- new ISUP APM application "Charging ASE" and in the INAP charging operations.
--
--

EXPORTS

-- Charging Common Data Types
	ChargingAcknowledgementInformation ,
	AddOnChargingInformation ,
	ChargingTariffInformation ,
	StartCharging ,
	StopCharging ,
	ChargingMessageType

;

-- ChargingMessageType Type

ChargingMessageType ::= CHOICE {
	crgt [0] ChargingTariffInformation,
	aocrg [1] AddOnChargingInformation ,
	crga [2] ChargingAcknowledgementInformation ,
	start [3] StartCharging ,
	stop [4] StopCharging }

-- ChargeUnitTimeInterval Type

ChargeUnitTimeInterval ::= OCTET STRING (SIZE(2))

-- The ChargeUnitTimeInterval is binary coded and has the value range from 0 to 35997. It begins with 200 milliseconds and
-- then in steps of 50 milliseconds.
-- the LSBit is the least significant bit of the first octet
-- the MSBit is the most significant bit of the last octet
-- the coding of the ChargeUnitTimeInterval is the following:
-- 0 : no periodic metering
-- 1 : 200 msec
-- 2 : 250 msec
-- ..
-- 35997 : 30 minutes
-- All other values are spare.

-- ChargingAcknowledgementInformation Type

ChargingAcknowledgementInformation ::= SEQUENCE {
	acknowledgementIndicators [0] BIT STRING {
		accepted (0) }
	(SIZE(minAcknowledgementIndicatorsLen..maxAcknowledgementIndicatorsLen)), extensions [1]
SEQUENCE SIZE(1..numOfExtensions) OF ExtensionField OPTIONAL,
	originationIdentification [2] ChargingReferenceIdentification,
	destinationIdentification [3] ChargingReferenceIdentification
}

-- Coding of "accepted":
-- 0: not accepted.
-- 1: accepted.
-- The "extensions" is a SEQUENCE for possible extensions.

-- ChargingControlIndicators Type

ChargingControlIndicators ::= BIT STRING {
	subscriberCharge (0),
	immediateChangeOfActuallyAppliedTariff (1),
	delayUntilStart (2) }
	(SIZE(minChargingControlIndicatorsLen..maxChargingControlIndicatorsLen))

-- Coding of "subscriberCharge":
-- 0 - advice-of-charge: charging information only to be used by the advice of charge service.
-- 1 - subscriber-charge: charging information to be used by the subscriber charging program.
-- Coding of "immediateChangeOfActuallyAppliedTariff":
-- 0 - immediate tariff change without restart
-- 1 - immediate tariff change with restart
-- It is only used to change the actually applied tariff.
-- Coding of 'delayUntilStart':
-- 0 - start tariffing, if it is not already started, without waiting for the 'start' signal
-- 1 - delay start of tariffing up to the receipt of the 'start' signal

-- AddOnChargingInformation Type

AddOnChargingInformation ::= SEQUENCE {
	chargingControlIndicators	[0] ChargingControlIndicators ,
	addOncharge					[1] CHOICE {
		addOnChargeCurrency		[0] CurrencyFactorScale ,
		addOnChargePulse		[1] PulseUnits
	},
	extensions [2] SEQUENCE SIZE(1..numOfExtensions) OF ExtensionField OPTIONAL,
	originationIdentification	[3] ChargingReferenceIdentification,
	destinationIdentification	[4] ChargingReferenceIdentification OPTIONAL,
	currency					[5] Currency
}

-- This message is used to add an amount of charge for the call and does not alter the current tariff.
-- The destinationIdentification is not available in an initial AddOnChargingInformation, in all subsequent ones it is included, see
-- "Handling of Identifiers".
-- In the message the
-- add-on charge has either the pulse or currency format.
-- ChargingTariffInformation Type

ChargingTariffInformation ::= SEQUENCE {
	chargingControlIndicators [0] ChargingControlIndicators,
	chargingTariff [1] CHOICE {
		tariffCurrency [0] TariffCurrency,
		tariffPulse [1] TariffPulse
	},
	extensions [2] SEQUENCE SIZE(1..numOfExtensions) OF ExtensionField OPTIONAL,
	originationIdentification [3] ChargingReferenceIdentification,
	destinationIdentification [4] ChargingReferenceIdentification OPTIONAL,
	currency [5] Currency
}

--This message is used
-- to transfer explicit tariff data to the originating subscriber exchange and the charge registration exchange during call
-- set-up and also in the active phase of a call.
-- The destinationIdentification is not available in an initial ChargingTariffInformation, in all subsequent ones it is included, see
-- "Handling of Identifiers".
Code ::= CHOICE
{
	local INTEGER,
	global OBJECT IDENTIFIER
}

-- CommunicationChargeCurrency Type

CommunicationChargeCurrency ::= SEQUENCE {
	currencyFactorScale		[0] CurrencyFactorScale ,
	tariffDuration			[1] TariffDuration ,
	subTariffControl		[2] SubTariffControl }

-- CommunicationChargePulse Type

CommunicationChargePulse ::= SEQUENCE {
	pulseUnits				[0] PulseUnits ,
	chargeUnitTimeInterval	[1] ChargeUnitTimeInterval ,
	tariffDuration			[2] TariffDuration }

-- Criticality Type
CriticalityType ::= ENUMERATED {
	ignore(0),
	abort(1) }

-- Currency Type
Currency ::= ENUMERATED {
	noIndication (0),
	australianDollar (1),
	austrianSchilling (2),
	belgianFranc (3),
	britishPound (4),
	czechKoruna (5),
	danishKrone (6),
	dutchGuilder (7),
	euro (8),
	finnishMarkka (9),
	frenchFranc (10),
	germanMark (11),
	greekDrachma (12),
	hungarianForint (13),
	irishPunt (14),
	italianLira (15),
	japaneseYen (16),
	luxembourgian-Franc (17),
	norwegianKrone (18),
	polishZloty (19),
	portugeseEscudo (20),
	russianRouble (21),
	slovakKoruna (22),
	spanishPeseta (23),
	swedishKrone (24),
	swissFranc (25),
	turkishLira (26),
	uSDollar (27),
	...}

-- CurrencyFactor Type

CurrencyFactor ::= INTEGER (0..999999)

-- Value 0 indicates "no charge".
-- CurrencyFactorScale Type

CurrencyFactorScale ::= SEQUENCE {
	currencyFactor	[0] CurrencyFactor DEFAULT noCharge ,
	currencyScale	[1] CurrencyScale DEFAULT noScale }

-- The charge amount is indicated by the currency factor multiplied with the currency scale.
-- "no charge" indicates CurrencyFactorScale has the value 0.
-- CurrencyScale Type

CurrencyScale ::= INTEGER (-7..3)

-- The actual value for currency scale is given by 10x, where x is the value of the CurrencyScale.
--
-- the coding of CurrencyScale is as follows, all other values are spare:
-- -7 (249): 0,0000001
-- -6 (250): 0,000001
-- -5 (251): 0,00001
-- -4 (252): 0,0001
-- -3 (253): 0,001
-- -2 (254): 0,01
-- -1 (255): 0,1
-- 0 : 1
-- 1 : 10
-- 2 : 100
-- 3 : 1000

-- Definition of the extension class

EXTENSION ::= CLASS {
	&ExtensionType,
	&criticality CriticalityType DEFAULT ignore,
	&id Code
}
WITH SYNTAX {
	EXTENSION-SYNTAX &ExtensionType
	CRITICALITY &criticality
	IDENTIFIED BY &id
}
-- Example of addition of an extension named 'Some Network Specific Indicator' of type
-- BOOLEAN, with criticality 'abort' and to be identified as extension number 1
-- Example of definition using the above information object class:
--
-- SomeNetworkSpecificIndicator EXTENSION ::= {
-- EXTENSION-SYNTAX BOOLEAN
-- CRITICALITY abort
-- IDENTIFIED BY local : 1
-- }
-- Example of transfer syntax, using the ExtensionField datatype as specified in section 4.1.
-- Assuming the value of the extension is set to TRUE, the extensions parameter
-- becomes a Sequence of type INTEGER ::= 1, criticality ENUMERATED ::= 1 and value [1]
-- EXPLICIT BOOLEAN ::= TRUE.
--
-- Use of Q.1400 defined Extension is ffs
-- In addition the extension mechanism marker is used to identify the future minor additions to INAP.
firstExtension EXTENSION ::= {
	EXTENSION-SYNTAX NULL
	CRITICALITY ignore
	IDENTIFIED BY local:1
	}

-- firstExtension is just an example.

SupportedExtensions EXTENSION ::= {firstExtension , ...
-- full set of network operator extensions --}
-- SupportedExtension is the full set of the network operator extensions.
-- ExtensionField Type

ExtensionField ::= SEQUENCE {
	type EXTENSION.&id ({SupportedExtensions}),
	-- shall identify the value of an EXTENSION type
	criticality CriticalityType DEFAULT ignore,
	value [1] EXTENSION.&ExtensionType
	({SupportedExtensions}{@type})
}
-- This parameter indicates an extension of an argument data type. Its contents is network operator specific.
-- PulseUnits Type

PulseUnits ::= OCTET STRING (SIZE(1))
-- the PulseUnits is binary coded and has the value range from 0 to 255
-- StartCharging Type
StartCharging ::= SEQUENCE {
	networkOperators			[0] SEQUENCE SIZE (1..maxNetworkOperators) OF NetworkIdentification OPTIONAL,
	extensions					[1] SEQUENCE SIZE(1..numOfExtensions) OF ExtensionField OPTIONAL,
	originationIdentification	[2] ChargingReferenceIdentification
}

--This message is used
-- to start charge generation/registration for one that belongs to one network operator or
-- to start charge generation/registration for more tariffs that belong to several network
-- operators.
-- The corresponding network operator(s) are listed within sub-parameter 'networkOperators'.
-- The sub-parameter 'networkOperators' is mandatory in configurations of multiple charge
-- determination points.
-- If sub-parameter 'networkOperators' is not present in a configuration with only one charge
-- determination point, the corresponding tariff is started.
-- The 'extensions' is a SEQUENCE for possible extensions.
-- StopCharging Type

StopCharging ::= SEQUENCE {
	stopIndicators [0] BIT STRING {
		callAttemptChargesApplicable (0) }
	(SIZE(minStopIndicatorsLen.. maxStopIndicatorsLen)),
	networkOperators [1] SEQUENCE SIZE (1..maxNetworkOperators) OF NetworkIdentification OPTIONAL,
	extensions [2] SEQUENCE SIZE(1..numOfExtensions) OF ExtensionField OPTIONAL,
	originationIdentification [3] ChargingReferenceIdentification
}

--This message is used to stop charge generation/registration
-- for one that belongs to one network operator or
-- to stop charge generation/registration for more tariffs that belong to several network operators.
-- The corresponding network operator(s) are listed within sub-parameter 'networkOperators'.
-- The sub-parameter 'networkOperators' is mandatory in configurations of multiple charge
-- determination points.
-- If sub-parameter 'networkOperators' is not present in a configuration with only one charge
-- determination point, the corresponding tariff is stopped.
-- Coding of 'callAttemptChargesApplicable':
-- 0 - stop tariffing, call attempt charges are not applicable
-- 1 - stop tariffing, call attempt charges are applicable
-- The 'extensions' is a SEQUENCE for possible extensions.

-- SubTariffControl Type

SubTariffControl ::= BIT STRING {oneTimeCharge (0)}
(SIZE(minSubTariffControlLen..maxSubTariffControlLen))
-- The coding of the oneTimeCharge is as follows:
-- 0 - Periodic charge
-- 1 - One time charge
minSubTariffControlLen INTEGER ::= 1
maxSubTariffControlLen INTEGER ::= 8

-- TariffCurrency Type

TariffCurrency ::= SEQUENCE {
	currentTariffCurrency	[0] TariffCurrencyFormat OPTIONAL ,
	tariffSwitchCurrency	[1] TariffSwitchCurrency OPTIONAL
}
-- TariffSwitchCurrency Type

TariffSwitchCurrency ::= SEQUENCE {
	nextTariffCurrency		[0] TariffCurrencyFormat ,
	tariffSwitchoverTime	[1] TariffSwitchoverTime
}

-- TariffCurrencyFormat Type

TariffCurrencyFormat ::= SEQUENCE {
	communicationChargeSequenceCurrency 	[0] SEQUENCE
		SIZE(minCommunicationTariffNum..maxCommunicationTariffNum)
		OF CommunicationChargeCurrency OPTIONAL ,
	tariffControlIndicators [1] BIT STRING {
	non-cyclicTariff (0) }
	(SIZE(minTariffIndicatorsLen..maxTariffIndicatorsLen)) ,
	callAttemptChargeCurrency	[2] CurrencyFactorScale OPTIONAL ,
	callSetupChargeCurrency		[3] CurrencyFactorScale OPTIONAL }

-- The communication charge sequence currency is a direct charge in currency per time unit. Only one fixed time unit is used.
-- This time unit has
-- to be agreed between all cooperating networks, e.g. one second. Being fixed, the time unit is not transferred over
-- ISUP/INAP.
-- The call attempt charge is a direct charge, to be charged only for unsuccessful calls.
-- The call set-up charge is a direct charge, to be charged once at start of charging.
--
-- The coding of the non-cyclicTariff is as follows:
-- 0 - Cyclic tariff ( at expiration of the tariff duration of the last communication tariff of the communication charge sequence,
-- the communication charge sequence is re-applied.
-- 1 - Non-cyclic tariff ( at expiration of the tariff duration of the last communication tariff of the communication charge
-- sequence, do not re-apply the communication charge sequence)

-- TariffDuration Type

TariffDuration ::= INTEGER (0..36000)

-- TariffDuration identifies with 0 unlimited duration and else in seconds unit.
-- 0 = unlimited
-- 1 = 1 second
-- 2 = 2 seconds
-- ...
-- 36000 = 10 hours
--
-- The duration indicates for how long time the communication charge component is valid. Expiration of the tariff duration
-- timer leads to the activation of the next communication charge (if present).
-- In the case where there is no next communication charge in the communication charge sequence, the action to be performed
-- is indicated by the tariffControlIndicators.
-- TariffPulse Type

TariffPulse ::= SEQUENCE {
	currentTariffPulse [0] TariffPulseFormat OPTIONAL ,
	tariffSwitchPulse [1] TariffSwitchPulse OPTIONAL }

-- TariffSwitchPulse Type

TariffSwitchPulse ::= SEQUENCE {
	nextTariffPulse [0] TariffPulseFormat ,
	tariffSwitchoverTime [1] TariffSwitchoverTime }

-- TariffPulseFormat Type

TariffPulseFormat ::= SEQUENCE {
	communicationChargeSequencePulse [0] SEQUENCE
		SIZE(minCommunicationTariffNum.. maxCommunicationTariffNum)
		OF CommunicationChargePulse OPTIONAL ,
	tariffControlIndicators [1] BIT STRING {
		non-cyclicTariff (0) }
		(SIZE(minTariffIndicatorsLen..maxTariffIndicatorsLen)) ,
	callAttemptChargePulse [2] PulseUnits OPTIONAL ,
	callSetupChargePulse [3] PulseUnits OPTIONAL }

-- The communication charges are meter-pulse units, which are to be applied per charge unit time interval.
-- The call attempt pulse units are to be charged only for unsuccessful calls.
-- The call set-up pulse units are to be charged once at start of charging.

-- TariffSwitchoverTime Type

TariffSwitchoverTime ::= OCTET STRING (SIZE(1))

-- This time is the absolute time at which the next tariff has to become active. It is represented in steps of 15 minutes.
-- The coding is the following:
-- 0 : spare
-- 1 : 0 hour 15 minutes
-- 2 : 0 hour 30 minutes
-- 3 : 0 hour 45 minutes
-- 4 : 1 hour 0 minutes
-- ..
-- 96 : 24 hours 0 minutes
-- 97-255 : spare

minAcknowledgementIndicatorsLen INTEGER ::= 1
maxAcknowledgementIndicatorsLen INTEGER ::= 8
minChargingControlIndicatorsLen INTEGER ::= 1
maxChargingControlIndicatorsLen INTEGER ::= 8
maxNetworkOperators INTEGER ::= 6
minStopIndicatorsLen INTEGER ::= 1
maxStopIndicatorsLen INTEGER ::= 8
minTariffIndicatorsLen INTEGER ::= 1
maxTariffIndicatorsLen INTEGER ::= 8
minCommunicationTariffNum INTEGER ::= 1
maxCommunicationTariffNum INTEGER ::= 4
noCharge INTEGER ::= 0
noScale INTEGER ::= 0
numOfExtensions INTEGER ::= 1 --network specific

-- ChargingReferenceIdentification Type

ChargingReferenceIdentification ::= SEQUENCE {
	networkIdentification [0] NetworkIdentification,
	referenceID [1] ReferenceID}

-- NetworkIdentification Type

NetworkIdentification ::= OBJECT IDENTIFIER

-- Following structure of the networkIdentification value shall be used:
-- {itu-t (0) administration (2) <national regulation authority> (x) network (y) node identification (z)}
-- The value for x is the value of the national regulation authority, the value for y is under the control of the national
-- regulation authority concerned, the value for z is under the control of the network concerned.

-- ReferenceID Type

ReferenceID ::= INTEGER (0..4294967295)
-- maximum value 232 - 1

END
-- of Tariffing-Data Types