-- module(Mvrasn-18-6).
-- vsn('%CCaseRev: %').
-- date('%CCaseDate: %').
-- author('etord').    
-- =============================================================================

-- =============================================================================
--
-- Title       : "Common data types".
--
-- ASN.1 module: "MAP-CommonDataTypes".
--
-- =============================================================================

-- ==============================================================
-- #1.    REVISION LOG
-- ==============================================================
-- Rev   Date    Name     What
-- .... ....... .......  ........................................
-- PA1  010813  etord    First draft, based on GSM 29.002 v. 3.8.0.
-- ..............................................................

Mvrasn-18-6

DEFINITIONS

IMPLICIT TAGS

::=

BEGIN

EXPORTS

	-- general data types and values
	AddressString,
	ISDN-AddressString,
	maxISDN-AddressLength,
	FTN-AddressString,
	ISDN-SubaddressString,
	ExternalSignalInfo, 
	Ext-ExternalSignalInfo, 
	AccessNetworkSignalInfo,
	SignalInfo,
	maxSignalInfoLength,
	AlertingPattern,

	-- data types for numbering and identification
	IMSI,
	TMSI, 
	Identity,
	SubscriberId,
	IMEI,
	HLR-List,
	LMSI,
	GlobalCellId,
	NetworkResource,
	NAEA-PreferredCI, 
	NAEA-CIC, 
	ASCI-CallReference,
	SubscriberIdentity,

	-- data types for CAMEL
	CellGlobalIdOrServiceAreaIdOrLAI,

	-- data types for subscriber management
	BasicServiceCode,
	Ext-BasicServiceCode,
	EMLPP-Info,
	EMLPP-Priority, 
	MC-SS-Info,
	MaxMC-Bearers,
	MC-Bearers,
	Ext-SS-Status,

	-- data types for geographic location
	AgeOfLocationInformation,
	LCSClientExternalID,
	LCSClientInternalID
;

IMPORTS
	TeleserviceCode,
	Ext-TeleserviceCode
FROM Mvrasn-19-6

	BearerServiceCode,
	Ext-BearerServiceCode
FROM Mvrasn-20-6

	SS-Code
FROM Mvrasn-15-6

	ExtensionContainer
FROM Mvrasn-21-4
;


-- general data types

TBCD-STRING ::= OCTET STRING
	-- This type (Telephony Binary Coded Decimal String) is used to
	-- represent several digits from 0 through 9, *, #, a, b, c, two
	-- digits per octet, each digit encoded 0000 to 1001 (0 to 9),
	-- 1010 (*), 1011 (#), 1100 (a), 1101 (b) or 1110 (c); 1111 used
	-- as filler when there is an odd number of digits.

	-- bits 8765 of octet n encoding digit 2n
	-- bits 4321 of octet n encoding digit 2(n-1) +1

AddressString ::= OCTET STRING (SIZE (1..maxAddressLength))
	-- This type is used to represent a number for addressing
	-- purposes. It is composed of
	--	a)	one octet for nature of address, and numbering plan
	--		indicator.
	--	b)	digits of an address encoded as TBCD-String.

	-- a)	The first octet includes a one bit extension indicator, a
	--		3 bits nature of address indicator and a 4 bits numbering
	--		plan indicator, encoded as follows:

	-- bit 8: 1  (no extension)

	-- bits 765: nature of address indicator
	--	000  unknown
	--	001  international number
	--	010  national significant number
	--	011  network specific number
	--	100  subscriber number
	--	101  reserved
	--	110  abbreviated number
	--	111  reserved for extension

	-- bits 4321: numbering plan indicator
	--	0000  unknown
	--	0001  ISDN/Telephony Numbering Plan (Rec CCITT E.164)
	--	0010  spare
	--	0011  data numbering plan (CCITT Rec X.121)
	--	0100  telex numbering plan (CCITT Rec F.69)
	--	0101  spare
	--	0110  land mobile numbering plan (CCITT Rec E.212)
	--	0111  spare
	--	1000  national numbering plan
	--	1001  private numbering plan
	--	1111  reserved for extension

	--	all other values are reserved.

	-- b)	The following octets representing digits of an address
	--		encoded as a TBCD-STRING.

maxAddressLength  INTEGER ::= 20

ISDN-AddressString ::= 
			AddressString (SIZE (1..maxISDN-AddressLength))
	-- This type is used to represent ISDN numbers.

maxISDN-AddressLength  INTEGER ::= 9

FTN-AddressString ::= 
			AddressString (SIZE (1..maxFTN-AddressLength))
	-- This type is used to represent forwarded-to numbers.

maxFTN-AddressLength  INTEGER ::= 15

ISDN-SubaddressString ::= 
			OCTET STRING (SIZE (1..maxISDN-SubaddressLength))
	-- This type is used to represent ISDN subaddresses.
	-- It is composed of
	--	a)	one octet for type of subaddress and odd/even indicator.
	--	b)	20 octets for subaddress information.

	--	a)	The first octet includes a one bit extension indicator, a
	--		3 bits type of subaddress and a one bit odd/even indicator,
	--		encoded as follows:

	--	bit 8: 1  (no extension)

	--	bits 765: type of subaddress
	--		000  NSAP (X.213/ISO 8348 AD2)
	--		010  User Specified
	--		All other values are reserved

	--	bit 4: odd/even indicator
	--		0  even number of address signals
	--		1  odd number of address signals
	--		The odd/even indicator is used when the type of subaddress
	--		is "user specified" and the coding is BCD.

	--	bits 321: 000 (unused)

	--	b) Subaddress information.
	--	The NSAP X.213/ISO8348AD2 address shall be formatted as specified
	--	by octet 4 which contains the Authority and Format Identifier
	--	(AFI). The encoding is made according to the "preferred binary
	--	encoding" as defined in X.213/ISO834AD2. For the definition
	--	of this type of subaddress, see CCITT Rec I.334.

	--	For User-specific subaddress, this field is encoded according
	--	to the user specification, subject to a maximum length of 20
	--	octets. When interworking with X.25 networks BCD coding should
	--	be applied.

maxISDN-SubaddressLength  INTEGER ::= 21

ExternalSignalInfo ::= SEQUENCE {
	protocolId	ProtocolId,
	signalInfo	SignalInfo,
	-- Information about the internal structure is given in
	-- subclause 7.6.9.
	extensionContainer	ExtensionContainer	OPTIONAL,
	-- extensionContainer must not be used in version 2
	...}

SignalInfo ::= OCTET STRING (SIZE (1..maxSignalInfoLength))

maxSignalInfoLength  INTEGER ::= 200
	-- This NamedValue represents the theoretical maximum number of octets which is
	-- available to carry a single instance of the SignalInfo data type,
	-- without requiring segmentation to cope with the network layer service.
	-- However, the actual maximum size available for an instance of the data
	-- type may be lower, especially when other information elements
	-- have to be included in the same component.

ProtocolId ::= ENUMERATED {
	gsm-0408  (1),
	gsm-0806  (2),
	gsm-BSSMAP  (3),
	-- Value 3 is reserved and must not be used
	ets-300102-1  (4)}

Ext-ExternalSignalInfo ::= SEQUENCE {
	ext-ProtocolId	Ext-ProtocolId,
	signalInfo	SignalInfo,
	-- Information about the internal structure is given in
	-- subclause 7.6.9.10
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

Ext-ProtocolId ::= ENUMERATED {
	ets-300356  (1),
	... 
	 }
-- exception handling:
-- For Ext-ExternalSignalInfo sequences containing this parameter with any
-- other value than the ones listed the receiver shall ignore the whole 
-- Ext-ExternalSignalInfo sequence.

AccessNetworkSignalInfo ::= SEQUENCE {
	accessNetworkProtocolId	AccessNetworkProtocolId,
	signalInfo	LongSignalInfo,
	-- Information about the internal structure is given in
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

LongSignalInfo ::= OCTET STRING (SIZE (1..maxLongSignalInfoLength))

maxLongSignalInfoLength  INTEGER ::= 2560
	-- This Named Value represents the maximum number of octets which is available
	-- to carry a single instance of the LongSignalInfo data type using
	-- White Book SCCP with the maximum number of segments.
	-- It takes account of the octets used by the lower layers of the protocol, and
	-- other information elements which may be included in the same component.


AccessNetworkProtocolId ::= ENUMERATED {
	gsm-0806   (1),
	ts3G-25413 (2),
	...}
	-- exception handling:
	-- For AccessNetworkSignalInfo sequences containing this parameter with any
	-- other value than the ones listed the receiver shall ignore the whole 
	-- AccessNetworkSignalInfo sequence.

AlertingPattern ::= OCTET STRING (SIZE (1) )
	-- This type is used to represent Alerting Pattern

	--	bits 8765 : 0000 (unused)

	--	bits 43 : type of Pattern
	--		00 level
	--		01 category
	--		10 category
	--		all other values are reserved.

	--	bits 21 : type of alerting

alertingLevel-0   AlertingPattern ::= '00000000'B
alertingLevel-1   AlertingPattern ::= '00000001'B
alertingLevel-2   AlertingPattern ::= '00000010'B
	-- all other values of Alerting level are reserved
	-- Alerting Levels are defined in GSM 02.07
	
alertingCategory-1   AlertingPattern ::= '00000100'B
alertingCategory-2   AlertingPattern ::= '00000101'B
alertingCategory-3   AlertingPattern ::= '00000110'B
alertingCategory-4   AlertingPattern ::= '00000111'B
alertingCategory-5   AlertingPattern ::= '00001000'B
	-- all other values of Alerting Category are reserved
	-- Alerting categories are defined in GSM 02.07


-- data types for numbering and identification

IMSI ::= TBCD-STRING (SIZE (3..8))
	-- digits of MCC, MNC, MSIN are concatenated in this order.

Identity ::= CHOICE {
	imsi			IMSI,
	imsi-WithLMSI	IMSI-WithLMSI}

IMSI-WithLMSI ::= SEQUENCE {
	imsi			IMSI,
	lmsi			LMSI,
	-- a special value 00000000 indicates that the LMSI is not in use
	...}

ASCI-CallReference ::= TBCD-STRING (SIZE (1..8))
	-- digits of VGCS/VBC-area,Group-ID are concatenated in this order.


TMSI ::= OCTET STRING (SIZE (1..4))

SubscriberId ::= CHOICE {
	imsi			[0] IMSI,
	tmsi			[1] TMSI}

IMEI ::= TBCD-STRING (SIZE (8))
	--	Refers to International Mobile Station Equipment Identity
	--	and Software Version Number (SVN) defined in TS GSM 03.03.
	--	If the SVN is not present the last octet shall contain the
	--	digit 0 and a filler.
	--	If present the SVN shall be included in the last octet.

HLR-Id ::= IMSI
	-- leading digits of IMSI, i.e. (MCC, MNC, leading digits of
	-- MSIN) forming HLR Id defined in TS GSM 03.03.

HLR-List ::= SEQUENCE SIZE (1..maxNumOfHLR-Id) OF
				HLR-Id

maxNumOfHLR-Id  INTEGER ::= 50

LMSI ::= OCTET STRING (SIZE (4))

GlobalCellId ::= OCTET STRING (SIZE (5..7))
	-- Refers to Cell Global Identification defined in TS GSM 03.03.
	-- The internal structure is defined as follows:
	-- octet 1 bits 4321	Mobile Country Code 1st digit
	--         bits 8765	Mobile Country Code 2nd digit
	-- octet 2 bits 4321	Mobile Country Code 3rd digit
	--         bits 8765	Mobile Network Code 3rd digit
	--			or filler (1111) for 2 digit MNCs
	-- octet 3 bits 4321	Mobile Network Code 1st digit
	--         bits 8765	Mobile Network Code 2nd digit
	-- octets 4 and 5	Location Area Code according to TS GSM 04.08
	-- octets 6 and 7	Cell Identity (CI) according to TS GSM 04.08

NetworkResource ::= ENUMERATED {
	plmn  (0),
	hlr  (1),
	vlr  (2),
	pvlr  (3),
	controllingMSC  (4),
	vmsc  (5),
	eir  (6),
	rss  (7)}

NAEA-PreferredCI ::= SEQUENCE {
	naea-PreferredCIC	[0] NAEA-CIC,
	extensionContainer	[1] ExtensionContainer	OPTIONAL,
	...}

NAEA-CIC ::= OCTET STRING (SIZE (3))
	-- The internal structure is defined by the Carrier Identification
	-- parameter in ANSI T1.113.3. Carrier codes between �000� and �999� may
	-- be encoded as 3 digits using �000� to �999� or as 4 digits using 
	-- �0000� to �0999�. Carrier codes between �1000� and �9999� are encoded
	-- using 4 digits.

SubscriberIdentity ::= CHOICE {
	imsi			[0] IMSI,
	msisdn		[1] ISDN-AddressString
	}

LCSClientExternalID ::= SEQUENCE {
	externalAddress	[0] AddressString	OPTIONAL,
	extensionContainer	[1] ExtensionContainer	OPTIONAL,
	... }

LCSClientInternalID ::= ENUMERATED {
	broadcastService	(0),
	o-andM-HPLMN	(1),
	o-andM-VPLMN	(2),
	anonymousLocation	(3),
	targetMSsubscribedService	(4),
	... }
-- for a CAMEL phase 3 PLMN operator client, the value targetMSsubscribedService shall be used


-- data types for CAMEL

CellGlobalIdOrServiceAreaIdOrLAI ::= CHOICE {
	cellGlobalIdOrServiceAreaIdFixedLength	[0] CellGlobalIdOrServiceAreaIdFixedLength,
	laiFixedLength	[1] LAIFixedLength}

CellGlobalIdOrServiceAreaIdFixedLength ::= OCTET STRING (SIZE (7))
	-- Refers to Cell Global Identification or Service Are Identification
	-- defined in 3G TS 23.003.
	-- The internal structure is defined as follows:
	-- octet 1 bits 4321	Mobile Country Code 1st digit
	--         bits 8765	Mobile Country Code 2nd digit
	-- octet 2 bits 4321	Mobile Country Code 3rd digit
	--         bits 8765	Mobile Network Code 3rd digit
	--			or filler (1111) for 2 digit MNCs
	-- octet 3 bits 4321	Mobile Network Code 1st digit
	--         bits 8765	Mobile Network Code 2nd digit
	-- octets 4 and 5	Location Area Code according to 3G TS 24.008
	-- octets 6 and 7	Cell Identity (CI) value or 
	-- 			Service Area Code (SAC) value 
	--			according to 3G TS 23.003

LAIFixedLength ::= OCTET STRING (SIZE (5))
	-- Refers to Location Area Identification defined in TS GSM 03.03.
	-- The internal structure is defined as follows:
	-- octet 1 bits 4321	Mobile Country Code 1st digit
	--         bits 8765	Mobile Country Code 2nd digit
	-- octet 2 bits 4321	Mobile Country Code 3rd digit
	--         bits 8765	Mobile Network Code 3rd digit
	--			or filler (1111) for 2 digit MNCs
	-- octet 3 bits 4321	Mobile Network Code 1st digit
	--         bits 8765	Mobile Network Code 2nd digit
	-- octets 4 and 5	Location Area Code according to TS GSM 04.08


-- data types for subscriber management

BasicServiceCode ::= CHOICE {
	bearerService	[2] BearerServiceCode,
	teleservice	[3] TeleserviceCode}

Ext-BasicServiceCode ::= CHOICE {
	ext-BearerService	[2] Ext-BearerServiceCode,
	ext-Teleservice	[3] Ext-TeleserviceCode}

EMLPP-Info ::= SEQUENCE {
	maximumentitledPriority	EMLPP-Priority,
	defaultPriority	EMLPP-Priority,
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

EMLPP-Priority ::= INTEGER (0..15)
	-- The mapping from the values A,B,0,1,2,3,4 to the integer-value is
	-- specified as follows where A is the highest and 4 is the lowest
	-- priority level
	-- the integer values 7-15 are spare and shall be mapped to value 4

priorityLevelA		EMLPP-Priority ::= 6
priorityLevelB		EMLPP-Priority ::= 5
priorityLevel0		EMLPP-Priority ::= 0
priorityLevel1		EMLPP-Priority ::= 1
priorityLevel2		EMLPP-Priority ::= 2
priorityLevel3		EMLPP-Priority ::= 3
priorityLevel4		EMLPP-Priority ::= 4


MC-SS-Info ::= SEQUENCE {
	ss-Code		[0] SS-Code,
	ss-Status		[1] Ext-SS-Status,
	nbrSB		[2] MaxMC-Bearers,
	nbrUser		[3] MC-Bearers,
	extensionContainer	[4] ExtensionContainer	OPTIONAL,
	...}

MaxMC-Bearers ::= INTEGER (2..maxNumOfMC-Bearers)

MC-Bearers ::= INTEGER (1..maxNumOfMC-Bearers)

maxNumOfMC-Bearers  INTEGER ::= 7


Ext-SS-Status ::= OCTET STRING (SIZE (1..5))

	-- OCTET 1:
	--
	-- bits 8765: 0000 (unused)
	-- bits 4321: Used to convey the "P bit","R bit","A bit" and "Q bit",
	--		    representing supplementary service state information
	--		    as defined in TS GSM 03.11

	-- bit 4: "Q bit"

	-- bit 3: "P bit"

	-- bit 2: "R bit"

	-- bit 1: "A bit"

	-- OCTETS 2-5: reserved for future use. They shall be discarded if
	-- received and not understood.



	-- data types for geographic location

AgeOfLocationInformation ::= INTEGER (0..32767)
-- the value represents the elapsed time in minutes since the last
-- network contact of the mobile station (i.e. the actuality of the
-- location information).
-- value �0� indicates that the MS is currently in contact with the
--           network
-- value �32767� indicates that the location information is at least
--               32767 minutes old

END