TS 102 657, RDMessage, ver2.asn 37.4 KB
Newer Older
RDMessage {itu-t(0) identified-organization(4) etsi(0) securityDomain(2) retainedData(3) rdHeader(0) version2(2)}

DEFINITIONS IMPLICIT TAGS ::=

BEGIN

-- =============================
-- Object Identifier definitions
-- =============================

retainedDataDomainId OBJECT IDENTIFIER ::= {itu-t(0) identified-organization(4) etsi(0) securityDomain(2) retainedData(3)}

-- rdHeader
rdHeaderId OBJECT IDENTIFIER ::= {retainedDataDomainId rdHeader(0) version2(2)}

-- ======================================
-- Top level definitions for RDHI wrapper
-- ======================================

RetainedDataMessage ::= SEQUENCE
{
	rdHeaderId				[0] OBJECT IDENTIFIER,
	retainedDataHeader		[1] RetainedDataHeader,
	retainedDataPayload		[2] RetainedDataPayload,
	retainedDataDigest		[3] OCTET STRING OPTIONAL,
		-- The digitally signed hash of the combined fields above (retainedDataHeader and
		-- retainedDataPayload)
	...
}
-- ==========================================================================
-- Definitions for Retained Data header information, present in every message
-- ==========================================================================

RetainedDataHeader ::= SEQUENCE
{
	requestID		[1] RequestID,
	cSPID			[2] CSPID,
	timeStamp		[3] GeneralizedTime,
	thirdPartyCSPID	[4] CSPID OPTIONAL,
	...
}

CSPID ::= UTF8String
	-- Unique identifier for the CSP that issued the request

RequestID ::= SEQUENCE
{
	countryCode					[1] CountryCode,
	authorisedOrganisationID	[2] AuthorisedOrganisationID,
	requestNumber				[3] RequestNumber OPTIONAL,
		-- all messages except GetStatusMessage and StatusMessage have a request number
		-- (see clause 6.1.2)
	...
}

CountryCode ::= UTF8String (SIZE(2))
-- A country code as per ISO 3166-1 [4]

AuthorisedOrganisationID::= UTF8String
-- A unique identifier for an Authorized Organization issuing a Retained Data request

RequestNumber ::= UTF8String
-- Unique within a given country and Authorized Organization

-- =================================================
-- Definitions for Retained Data payload information
-- =================================================

RetainedDataPayload ::= CHOICE
	-- Payload can be a request, response, error or acknowledgement
{
	requestMessage			[1] RequestMessage,
	requestAcknowledgement	[2] RequestAcknowledgement,
	responseMessage			[3] ResponseMessage,
	responseAcknowledgement	[4] ResponseAcknowledgement,
	errorMessage			[5] FurtherInformation,
	cancelMessage			[6] CancelMessage,
	cancelAcknowledgement	[7] CancelAcknowledgement,
	getstatusMessage		[8] GetStatusMessage,
	statusMessage			[9] StatusMessage,
	getResultsMessage		[10] GetResultsMessage,
	...
}

-- ==================================================
-- Definitions of Request message and acknowledgement
-- ==================================================

RequestMessage ::= SEQUENCE
{
	requestPriority				[1] RequestPriority,
	requestParameters			[2] RequestConstraints,
	deliveryPointHIB			[3] DeliveryPointHIB OPTIONAL,
		-- pre-arranged set of delivery address(es) of that specific Authorized Organization
	maxHits						[4] INTEGER OPTIONAL,
		-- Maximum number of records to be returned.
		-- On a national basis maximum numbers could be considered
		-- In case of maxHit a responseFailed message is sent and no data is sent 
		-- (see clause 6.3.3.2)
	nationalRequestParameters	[5] NationalRequestParameters OPTIONAL,
		-- To be defined on a national basis 
		-- Only to be used in case the present document cannot fulfil the national requirements
	...
}

DeliveryPointHIB ::= UTF8String

RequestConstraints ::= SEQUENCE
{
	equals					[1] RetainedDataRecord OPTIONAL,
	notEqualTo				[2] RetainedDataRecord OPTIONAL,
	lessThan				[3] RetainedDataRecord OPTIONAL,
		-- For numerical values
	lessThanOrEqualTo		[4] RetainedDataRecord OPTIONAL,
		-- For numerical values
	greaterThan				[5] RetainedDataRecord OPTIONAL,
		-- For numerical values
	greaterThanOrEqualTo	[6] RetainedDataRecord OPTIONAL,
		-- For numerical values
	startsWith				[7] RetainedDataRecord OPTIONAL,
		-- For strings
	endsWith				[8] RetainedDataRecord OPTIONAL,
		-- For strings
	isAMemberOf				[9] SEQUENCE OF RetainedDataRecord OPTIONAL,
	...
}

RequestPriority ::= OCTET STRING
	-- Priority considerations are a matter for national implementation
	-- This standard makes no statement regarding how such priorities are represented or used

RequestAcknowledgement ::= SEQUENCE
{
	suggestedCompletionTime		[1] GeneralizedTime OPTIONAL,
		-- Indicative time that results will be ready
		-- Purely informational, not binding for either party
	...
}

-- ===================================================
-- Definitions of Response message and acknowledgement
-- ===================================================

ResponseMessage ::= SEQUENCE 
{
	responseStatus				[1] ResponseStatus,
	responsePayload				[2] SEQUENCE OF ResponseRecord OPTIONAL,
		-- Clause 6 explains use of this field
		-- A responseUnavailable message shall not have a responsePayload (see clause 5.3.3)
		-- The responseComplete and responseIncomplete message shall have a responsePayload
		-- If there are no responses, the responsePayload is present but has zero entries
	nationalResponsePayload		[3] NationalResponsePayload OPTIONAL,
		-- to be defined on a national basis
		-- only to be used in case the present document cannot fulfil the national requirements
	...
}

ResponseStatus	::= CHOICE
{
	responseComplete	[1] NULL,
		-- No further results to come
	responseIncomplete	[2] NULL,
		-- There may be further results to come
	responseUnavailable	[3] NULL,
		-- See clause 6.3.3
	responseFailed		[4] FurtherInformation,
		-- See clauses 6.2.2.2 and 6.3.3.2
	...
}

ResponseRecord	::= SEQUENCE
{
	recordNumber				[1] INTEGER,
	recordPayload				[2] RetainedDataRecord,
	additionalInformation		[3] AdditionalInformation OPTIONAL,
		 -- see clause 6.2.4
	nationalRecordPayload		[4] NationalRecordPayload OPTIONAL,
	...
}

AdditionalInformation ::= SEQUENCE
{
	contactInformation		[1] UTF8String OPTIONAL,
		-- Name or address of operator or person who may have further information
	otherInformation		[2] UTF8String OPTIONAL,
	...
}

RetainedDataRecord ::= CHOICE
{
	telephonyRecord		[1] TelephonyRecord,
	messageRecord		[2] MessageRecord,
	networkAccess		[3] NetworkAccessRecord,
		-- Other services will be included (like multimedia) as they are implemented
	-- Acknowledges a response has been sent
	acknowledgeCompleteResults		[1] NULL,
	acknowledgePartialResults		[2] NULL,
	...
}

-- ==================================================
-- Definitions of an error message and acknowledgment
-- ==================================================

FurtherInformation ::= SEQUENCE
{
	information			[1] UTF8String,
	contactInformation	[2] UTF8String OPTIONAL,
	...
}

-- ===================================================
-- Definitions of a cancel message and acknowledgement
-- ===================================================

CancelMessage ::= NULL
	-- Cancels an active request

CancelAcknowledgement ::= NULL
	-- Acknowledges the receipt of a cancel message (no other information required)

-- ===================================================
-- Definitions of status request and response messages
-- ===================================================

GetStatusMessage ::= SEQUENCE
{
	requestNumbers		[1] SEQUENCE OF RequestNumber,
	...
}

StatusMessage ::= SEQUENCE
{
	statusResponse		[1] SEQUENCE OF StatusResponse,
	...
}

StatusResponse ::= SEQUENCE
{
	requestNumber	[1] RequestNumber,
	requestStatus	[2] RequestStatus,
	...
}

RequestStatus ::= CHOICE
{
	ready						[1] NULL,
	incompleteResultsReady		[2] NULL,
	failureResponseReady		[3] NULL,
	notReady					[4] NULL,
	error						[5] FurtherInformation,
	inDelivery					[6] NULL,
	invalidRequestID			[7] NULL,
	...
}

-- ==========================================
-- Definitions of status get results messages
-- ==========================================

GetResultsMessage ::= NULL
	-- No further information required (the RequestID is given in the header)

-- ===================
-- National parameters
-- ===================

NationalRequestParameters ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- Country Code according to ISO 3166-1 [4],
		-- the country to which the parameters inserted after the extension marker apply.
	...
		-- In case a given country wants to use additional national parameters according to its law,
		-- these national parameters should be defined using the ASN.1 syntax and added after the
		-- extension marker (...).
		-- It is recommended that an version indicator is included in the national parameters 
		-- definition.
}

NationalResponsePayload ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

NationalRecordPayload ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

TimeSpan ::= SEQUENCE
{
	startTime		[1] GeneralizedTime OPTIONAL,
	endTime			[2] GeneralizedTime OPTIONAL,
	...
}

-- ==============================================
-- Definitions for Generic Subscriber Information
-- ==============================================

GenericSubscriberInfo ::= SEQUENCE
{
	organizationInfo	[1] OrganizationInfo OPTIONAL,
	individualInfo		[2] IndividualInfo OPTIONAL,
	...
}

OrganizationInfo ::= SEQUENCE
{
	name					[1] UTF8String OPTIONAL,
		-- name of the organization
	contactDetails			[2] ContactDetails OPTIONAL,
		-- address, and name/phone number of a point of contact
	nationalRegistrationID	[3] UTF8String OPTIONAL,
		-- e.g. social security number
	...
}

IndividualInfo ::= SEQUENCE
{
	name					[1] PersonName OPTIONAL,
	contactAddress			[2] ContactDetails OPTIONAL,
	dateOfBirth				[3] GeneralizedTime OPTIONAL,
	gender					[4] ENUMERATED
	{
		male(0),
		female(1),
		...
	} OPTIONAL,
	identificationNumber	[5] UTF8String OPTIONAL,
	authenticationInfo		[6] AuthenticationInfo OPTIONAL,
	...
}

	salutation				[1] UTF8String OPTIONAL,
	surname					[2] UTF8String OPTIONAL,
		-- the non-chosen or inherited name of an individual, e.g. "Arend"
	surnamePrefix			[3] UTF8String OPTIONAL,
		-- any prefix before the surname, e.g. "von", "van der"
	surnameSuffix			[4] UTF8String OPTIONAL,
		-- any suffix after the surname, e.g. "Jr", "III"
	middleNames				[5] UTF8String OPTIONAL,
		-- that part of the name excluding forename, separable and preceding the surname
	firstname				[6] UTF8String OPTIONAL,
		-- the first name or initials, e.g. "Peter"
	...,
	secondsurname			[7] UTF8String OPTIONAL,
		-- a second surname is used in several countries
	secondsurnamePrefix		[8] UTF8String OPTIONAL,
	secondsurnameSuffix		[9] UTF8String OPTIONAL
{
	address			[1] AddressInformation OPTIONAL,
	emailAddress	[2] UTF8String OPTIONAL,
	contactNumber	[3] SEQUENCE OF PartyNumber OPTIONAL,
		-- several numbers (work, home, mobile) may be given for a single subscriber
	...
}

AddressInformation ::= SEQUENCE
{
	flatNumber		[1] UTF8String OPTIONAL,
	buildingName	[2] UTF8String OPTIONAL,
	buildingNumber	[3] UTF8String OPTIONAL,
	streetName		[4] UTF8String OPTIONAL,
	poBox			[5] UTF8String OPTIONAL,
		-- PO box or Response number
	postalCode		[6] UTF8String OPTIONAL,
		-- Postal code. Example: 2289AC
	region			[7] UTF8String OPTIONAL,
	province		[8] UTF8String OPTIONAL,
	language		[9] UTF8String OPTIONAL,
	city			[10] UTF8String OPTIONAL,
	country			[11] CountryCode OPTIONAL,
		-- Country code as defined in ISO 3166-1 [4]
	validity		[12] TimeSpan OPTIONAL,
		-- time from which the address was registered
	...
}

AuthenticationInfo ::= SEQUENCE
{
	authenticationType		[1] UTF8String OPTIONAL,
		-- the type of document used to authenticate, e.g. passport, driver's license
	authenticationNumber	[2] UTF8String OPTIONAL,
		-- the number of the document used to authenticate
	...
}

TelephonyRecord ::= CHOICE
{
	telephonySubscriber			[1] TelephonySubscriber,
	telephonyBillingDetails		[2] TelephonyBillingDetails,
	telephonyServiceUsage		[3] TelephonyServiceUsage,
	telephonyDevice				[4] TelephonyDevice,
	telephonyNetworkElement		[5] TelephonyNetworkElement,
	...
}

-- ==============================
-- Definitions of Subscriber Data
-- ==============================

TelephonySubscriber ::= SEQUENCE
{
	subscriberID					[1] TelephonySubscriberId OPTIONAL,
		-- unique identifier for this subscriber, e.g. account number
	genericSubscriberInfo			[2] GenericSubscriberInfo OPTIONAL,
		-- generic personal information about this subscriber
	telephonySubscriberInfo			[3] TelephonySubscriberInfo OPTIONAL,
		-- service-specific information about this subscriber
	subscribedTelephonyServices		[4] SEQUENCE OF SubscribedTelephonyServices OPTIONAL,
		-- a subscriber (or account) may have more than one service listed against them
	...
}

TelephonySubscriberId ::= UTF8String
	-- unique identifier for this subscriber, e.g. account number

TelephonySubscriberInfo ::= NULL
	-- Reserved

SubscribedTelephonyServices ::= SEQUENCE
{
	serviceID				[1] UTF8String OPTIONAL,
		-- Unique identifier for this service within the operator
	providerID				[2] UTF8String OPTIONAL,
		-- Unique identifier for the service provider
	timeSpan				[3] TimeSpan OPTIONAL,
		-- Start and end data, if applicable, of the subscription
	registeredNumbers		[4] SEQUENCE OF PartyNumber OPTIONAL,
		-- The set of telephone numbers registered for this service
	registeredICCID			[5] UTF8String OPTIONAL,
	serviceType				[6] TelephonyServiceType OPTIONAL,
	installationAddress		[7] AddressInformation OPTIONAL,
		-- installation address, if different from the registered address
	connectionDate			[8] GeneralizedTime OPTIONAL,
		-- Date the subscriber was actually connected 
		-- (May differ from the start of subscription)
	iMSI					[9] IMSI OPTIONAL,
	carrierPreselect		[10] BOOLEAN OPTIONAL,
	lineStatus				[11] UTF8String OPTIONAL,
		-- CSP-specific description of current line status, e.g. "Active", "Ceased", etc.
	...
}

TelephonyBillingDetails ::= SEQUENCE
{
	subscriberID		[1] TelephonySubscriberId OPTIONAL,
	serviceID			[2] UTF8String OPTIONAL,
	billingAddress		[3] ContactDetails OPTIONAL,
	billingIdentifier	[4] BillingIdentifier OPTIONAL,
	billingRecords		[5] SEQUENCE OF BillingRecords OPTIONAL,
	...
}

BillingIdentifier ::= OCTET STRING
	-- Used to correlate billing information
	-- useful if the bill-payer is not the subscriber, e.g. company mobiles

BillingRecords ::= SEQUENCE
{
	time				[1] GeneralizedTime OPTIONAL,
	place				[2] UTF8String OPTIONAL,
	amount				[3] REAL OPTIONAL,
	currency			[4] UTF8String (SIZE(3)) OPTIONAL,
		-- as per ISO 4217 [5]
	method				[5] UTF8String OPTIONAL,
		-- i.e. credit card etc. 
	...
}

TelephonyServiceType ::= ENUMERATED
{
	private(0),
	privatePABX(1),
	publicPayphone(2),
	...
}

-- =================================
-- Definitions of Service Usage Data
-- =================================

TelephonyServiceUsage ::= SEQUENCE
{
	partyInformation		[1] SEQUENCE OF TelephonyPartyInformation OPTIONAL,
		-- This parameter provides the concerned party (Originating, Terminating or 
		-- forwarded party), the identity(ies) of the party and all the information
		-- provided by the party
	communicationTime		[2] TimeSpan OPTIONAL,
		-- Time and duration of the communication
	eventInformation		[3] SEQUENCE OF TelephonyEventInformation OPTIONAL,
		-- A list of events that occurred during this service usage
	endReason				[4] INTEGER OPTIONAL,
		-- Q.850 cause code for call termination
	communicationType		[5] TelephonyCommunicationType OPTIONAL,
	bearerService			[6] TelephonyBearerService OPTIONAL,
	smsInformation			[7] SmsInformation OPTIONAL,
	ringDuration			[8] INTEGER OPTIONAL,
	...
}

TelephonyPartyInformation ::= SEQUENCE
{
	partyRole 						[1] TelephonyPartyRole OPTIONAL,
	partyNumber						[2] PartyNumber OPTIONAL,
	subscriberID					[3] TelephonySubscriberId OPTIONAL,
	deviceID						[4] TelephonyDeviceID OPTIONAL,
	locations						[5] SEQUENCE OF TelephonyLocation OPTIONAL,
		-- List of cell locations used by this party during the service usage
	communicationTime				[6] TimeSpan OPTIONAL,
		-- Time and duration of the communication
	iCCID							[7] UTF8String OPTIONAL,
		-- Integrated Circuit Card ID (ICCID) number of the party, in ASCII format
	iMSI							[8] IMSI OPTIONAL,
	natureOfAddress					[9] UTF8String OPTIONAL,
		-- Nature of address indicator, e.g. "National", "International"
	forwardedTransferredNumber		[10] PartyNumber OPTIONAL,
	terminatingTransferredNumber	[11] PartyNumber OPTIONAL,
	...
}

TelephonyCommunicationType	::=	ENUMERATED
{
	telephonyFixedCS(0),
	telephonyWirelessCS(1),
	sMS(2),
	...
}

TelephonyBearerService	::=	ENUMERATED
{
	speech(0),
	data(1),
	fax(2),
	...
}

SmsInformation ::= SEQUENCE
{
	smsEvent		[1] ENUMERATED
	{
		shortMessage(1),
		shortPartMessage(2),
		compositeMessage(3),
		notificationMessage(4),
		...
	} OPTIONAL,
	smsType			[2] ENUMERATED
	{
		deliverSCtoMS(1),
		deliverReportMStoSC(2),
		statusReportSCtoMS(3),
		commandMStoSC(4),
		submitMStoSC(5),
		submitReportSCtoMS(6),
		reservedMTIValue(7),
		...
	} OPTIONAL,
	smsStatus		[3] ENUMERATED
	{
		delivered(0),
		expired(1),
		deleted(2),
		replaced(3),
		submitted(4),
		incomplete-submission(5),
		incomplete-delivery(6),
		undeliverable(7),
		passed-on(8),
		...
	} OPTIONAL,
	smsCmRefNr		[4] OCTET STRING (SIZE(1..2)) OPTIONAL,
		-- format as per 3GPP TS 23.040 [16]
	smsNumOfSM		[5] INTEGER (0..65535) OPTIONAL,
	smsNotifyInd	[6] BOOLEAN OPTIONAL,
	smsProtocolId	[7] OCTET STRING (SIZE(1)) OPTIONAL,
		-- format as per 3GPP TS 23.040 [16]
	...
}

TelephonyEventInformation ::= SEQUENCE
{
	time 		[1] GeneralizedTime OPTIONAL,
		-- time when the event occurred
	type 		[2] TelephonyEventType OPTIONAL,
		-- type of event
	party 		[3] TelephonyPartyRole OPTIONAL,
		-- party to which the event is related
	location	[4] TelephonyLocation OPTIONAL,
	...
}

TelephonyEventType ::= CHOICE
{
	basicEventType				[1] BasicEventType,
	callConferenceEventType		[2] CallConferenceEventType,
	callForwardingEventType		[3] CallForwardingEventType,
	messagingEventType			[4] MessagingEventType,
	prepayServiceEventType		[5] PrepayServiceEventType,
	...
}

BasicEventType ::= ENUMERATED
{
	handover(1),
	hold(2),
	retrieve(3),
	suspend(4),
	resume(5), 
	ect(6),
	mpty(7),
	mptyHold(8),
	mptyRetrieve(9),
	mptySplit(10),
	uus1(11),
	uus2(12),
	uus3(13),
	serviceSpeech(14),
	serviceFax(15),
	tpyInvoke(16),
	tpyPrivateComm(17),
	serviceActivation(18),
     transit(19),
	mSOriginating(20),
	callForwarding(21), 
	mSTerminating(22),
	...
}

CallForwardingEventType ::= ENUMERATED
{
	cfuActivation(1),
	cfuModification(2),
	cfuDe-activation(3),
	cfcNoReplyActivation(4),
	cfcNoReplyModification(5),
	cfcNoReplyDe-activation(6),
	cfcBusyActivation(7),
	cfcBusyModification(8),
	cfcBusyDe-activation(9),
	cfcOutOfRangeActivation(10),
	cfcOutOfRangeModification(11),
	cfcOutOfRangeDe-activation(12),
	cfcUnavailableActivation(13),
	cfcUnavailableModification(14),
	cfcUnavailableDe-activation(15),
	cfuFaxActivation(16),
	cfuFaxModification(17),
	cfuFaxDe-activation(18),
	...
}

CallConferenceEventType ::= ENUMERATED
{
	confBeginSeizure(1),
	confAdd(2),
	confSplit(3),
	confIsolate(4),
	confReattach(5),
	confDrop(6),
	confBeginActive(7),
	...
}

MessagingEventType ::= ENUMERATED
{
	mSOriginatingSMSinMSC(1),
	mSTerminatingSMSinMSC(2),
	shortMessageDelivery(3),
	mMMessage(4),
	mMNotification(5),
	mMDeliveryReport(6),
	mMReadReply(7),
	...
}

PrepayServiceEventType ::= ENUMERATED
{
	serviceActivation(1),
	...
}

TelephonyLocation ::= SEQUENCE
{
	telephonyNetworkID	[1] TelephonyNetworkID OPTIONAL,
		-- ID of the network element location (e.g. Cell ID)
	timeSpan			[2] TimeSpan OPTIONAL,
		-- Time span that this location was valid for
	...
}

TelephonyPartyRole ::= ENUMERATED
{
	originating-Party(0),
	terminating-Party(1),
	forwarded-to-Party(2),
	originalCalled (3),
	redirecting(4),
	connected(5),
	userProvidedCalling(6),
	roaming(7),
	translated(8),
	singlePersonalNumber(9),
	smsOriginator(10),
	smsRecipient(11),
	smsOriginatorTrn(12),
	smsRecipientTrn(13),
	...
}

-- =======================
-- Device Data definitions
-- =======================

TelephonyDevice ::= SEQUENCE
{
	deviceIDType		[1] ENUMERATED
		-- Type of identifier for telephony device
	{
		unknown(0),
		imei(1),
		macAddress(2),
		...
	} OPTIONAL,
	telephonyDeviceID	[2] TelephonyDeviceID OPTIONAL,
		-- Unique identifier for this telephony device according to type of identifier
	...,
	subscriberID		[3] TelephonySubscriberId OPTIONAL
		-- Identifier for a known user of this equipment. 
		-- Usage of this parameter is subject to national legislation.
}

TelephonyDeviceID ::= OCTET STRING
	-- A unique identifier for the telephony device. For example, the IMEI number 
	-- of a mobile handset

-- ========================
-- Network Data definitions
-- ========================

TelephonyNetworkElement ::= SEQUENCE
{
	telephonyNetworkID	[1] TelephonyNetworkID OPTIONAL,
	cellInformation		[2] Location OPTIONAL,
		-- The Location information id 
	validity			[3] TimeSpan OPTIONAL, 
	...
}

TelephonyNetworkID ::= OCTET STRING
	-- Unique identifier for this network element: e.g. a Cell ID

-- ====================
-- Location information
-- ====================

Location ::= SEQUENCE
{
	e164-Number			[1] OCTET STRING (SIZE (1..25)) OPTIONAL,
		-- Coded in the same format as the ISUP location number (parameter
		-- field) of the ISUP (see EN 300 356 [7])
	globalCellID		[2] OCTET STRING (SIZE (5..7)) OPTIONAL,
		-- See MAP format (see TS GSM 09.02 [8])
	
	rAI					[3] OCTET STRING (SIZE (6)) OPTIONAL,
		-- The Routeing Area Identifier (RAI) in the current SGSN is coded in accordance with
		-- 3GPP TS 24.008 [9] without the Routing Area Identification IEI (only the
		-- last 6 octets are used)
	gsmLocation			[4] GSMLocation OPTIONAL,
	umtsLocation		[5] UMTSLocation OPTIONAL,
	sAI					[6] OCTET STRING (SIZE (7)) OPTIONAL,
		-- format:	PLMN-ID	3 octets (no. 1-3)
		-- 			LAC		2 octets (no. 4-5)
		-- 			SAC		2 octets (no. 6-7)
		-- 			(according to 3GPP TS 25.431 [10])
	oldRAI				[7] OCTET STRING (SIZE (6)) OPTIONAL,
		-- the "Routeing Area Identifier" in the old SGSN is coded in accordance with
		-- 3GPP TS 24.008 [9] without the Routing Area Identification IEI
		-- (only the last 6 octets are used)
		-- This parameter is duplicated from 3GPP TS 33.108 [11]
	...,
	postalLocation		[8] AddressInformation OPTIONAL
}

GSMLocation ::= CHOICE
{
	geoCoordinates 		[1] SEQUENCE
	{
		latitude	[1] UTF8String (SIZE(7..10)) OPTIONAL,
			-- format: XDDMMSS.SS
		longitude	[2] UTF8String (SIZE(8..11)) OPTIONAL,
			-- format: XDDDMMSS.SS
		mapDatum	[3] MapDatum OPTIONAL,
		azimuth		[4] INTEGER (0..359) OPTIONAL,
			-- The azimuth is the bearing, relative to true north
		...
	},
		-- format: XDDMMSS.SS (on latitudes) or XDDDMMSS.SS (on longitudes)
		-- 		X			: N(orth), S(outh), E(ast), W(est)
		-- 		DD or DDD 	: degrees (numeric characters)
		-- 		MM			: minutes (numeric characters)
		-- 		SS.SS 		: seconds, the second part (.SS) is optional
		-- Example:
		-- 		latitude (short form)		N502312
		-- 		longitude (long form)		E1122312.18
	utmCoordinates		[2] SEQUENCE
	{
		utm-Zone	[1] UTF8String (SIZE(3)) OPTIONAL,
		utm-East 	[2] UTF8String (SIZE(6)) OPTIONAL,
		utm-North 	[3] UTF8String (SIZE(7)) OPTIONAL,
			-- Universal Transverse Mercator
			-- example	utm-Zone	32U
			-- 			utm-North	5540736
		mapDatum	[4] MapDatum OPTIONAL,
		azimuth		[5] INTEGER (0..359) OPTIONAL,
			-- The azimuth is the bearing, relative to true north
		...
	},
	utmRefCoordinates	[3] SEQUENCE
	{
		utm-GridZone				[1] UTF8String (SIZE(2)) OPTIONAL,
			-- numerals from 1 to 60
		utm-GridBand				[2] UTF8String (SIZE(1)) OPTIONAL,
			-- character between C and X
		squareID					[3] UTF8String (SIZE(2)) OPTIONAL,
			-- characters from A to Z
		numericalLocationEasting	[4] UTF8String (SIZE(5)) OPTIONAL,
		numericalLocationNorthing	[5] UTF8String (SIZE(5)) OPTIONAL,
			-- Universal Transverse Mercator Reference = Military Grid Reference System (MGRS)
			-- example	utm-GridZone				32
			--			utm-GridBand				U
			--			squareID					PU
			--			numericalLocationEasting	9129
			--			mumericalLocationNorthing	4045
			-- In both panels, utm-GridBand and squareID the 'I' and 'O' characters are not used 
			-- because of their similarity to the digits one and zero.
		mapDatum				[6] MapDatum OPTIONAL,
		azimuth					[7] INTEGER (0..359) OPTIONAL,
			-- The azimuth is the bearing, relative to true north
		...
	},
	wGS84Coordinates 	[4] OCTET STRING,
		-- format is as defined in 3GPP TS 03.32 [12]
	...,
	geoCoordinatesDec 	[5] SEQUENCE
	{
		latitudeDec		[1] UTF8String (SIZE(3..12)) OPTIONAL,
			-- format: XDD.nnnnnnnn
		longitudeDec	[2] UTF8String (SIZE(4..13)) OPTIONAL,
			-- format: XDDD.nnnnnnnn
		mapDatum		[3] MapDatum OPTIONAL,
		azimuth			[4] INTEGER (0..359) OPTIONAL,
			-- The azimuth is the bearing, relative to true north
		...
	}
		-- format: XDD.nnnnnnnn (on latitudes) or XDDD.nnnnnnnn (on longitudes)
		-- 		X			: N(orth), S(outh), E(ast), W(est)
		-- 		DD or DDD 	: degrees (numeric characters)
		-- 		nnnnnnnn	: post decimal positions (numeric characters)
		-- Example:
		-- 		latitude		N50.38666667
		-- 		longitude		E112.38671670
}

MapDatum ::= ENUMERATED
{
	wGS84(1),
		-- World Geodetic System 1984
	wGS72(2),
	eD50(3),
		-- European Datum 50
	rD(4),
		-- Rijks Driehoek (Netherlands)
	potsdamDatum(5),
	datumAustria(6),
	eTRS89(7),
		-- European Terrestrial Reference System 1989
	nAD27(8),
		-- North American Datum 1927
	oSGB36(9),
		-- Ordnance Survey of Great Britain
	oSNI52(10),
		-- Ordnance Survey of Northern Ireland
	tM65(11),
	iTM(12),
		-- Irish Transverse Mercator
	...
}

UMTSLocation ::= CHOICE
{
	point					[1] GA-Point,
	pointWithUnCertainty	[2] GA-PointWithUnCertainty,
	polygon					[3] GA-Polygon,
	...
}

GeographicalCoordinates ::= SEQUENCE
{
	latitudeSign	[1] ENUMERATED
	{
		north,
		south
	} OPTIONAL,
	latitude		[2] INTEGER (0..8388607) OPTIONAL,
	longitude		[3] INTEGER (-8388608..8388607) OPTIONAL,
	...
}

GA-Point ::= SEQUENCE
{
	geographicalCoordinates		[1] GeographicalCoordinates,
	...
}

GA-PointWithUnCertainty ::=SEQUENCE
{
	geographicalCoordinates		[1] GeographicalCoordinates,
	uncertaintyCode				[2] INTEGER (0..127)
}

maxNrOfPoints					INTEGER ::= 15

GA-Polygon ::= SEQUENCE (SIZE (1..maxNrOfPoints)) OF GA-Polygon-Elements

GA-Polygon-Elements ::= SEQUENCE
{
	geographicalCoordinates		[1] GeographicalCoordinates,
	...
}

-- ===================
-- General definitions
-- ===================

PartyNumber ::= UTF8String
	-- E164 address of the node in international format

MessageRecord ::= CHOICE
{
	msgSubscriber			[1] MsgSubscriber,
	msgServiceUsage			[2] MsgServiceUsage,
	...
}

-- ======================================
-- Definitions of Message Subscriber Data
-- ======================================

MsgSubscriber ::= SEQUENCE
	-- Generic information on a service subscriber, supplemented with information specific to
	-- asynchronous message services
{
	validity		[1] TimeSpan OPTIONAL,
	subscriberID	[2] MsgSubscriberID OPTIONAL,
	msgStores		[3] SEQUENCE OF MsgStore OPTIONAL,
		-- message stores allocated to this subscriber
	subscriber		[4] GenericSubscriberInfo OPTIONAL,
	...
}

MsgSubscriberID ::= OCTET STRING
	-- Unique identifier for this subscriber, e.g. account number

MsgStore ::= SEQUENCE
	-- Location into which messages are temporarily stored. All asynchronous message services by
	-- definition require some message store. E.g. in the case of e-mail this will be a mailbox
{
	validity		[1] TimeSpan OPTIONAL,
	msgStoreID		[2] MsgStoreID OPTIONAL,
	aliases			[3] SEQUENCE OF MsgAddress OPTIONAL,
		-- The complete list of all addresses that get delivered into this message store.
	providerID		[4] MsgProviderID OPTIONAL,
    -- Unique identifier of the message store. Since not all IDs will necessarily be human
    -- readable, a generic byte string is used

    -- Messaging address, an address to which messages can be sent. In the case of Internet e-mail