--/////////////////////////////////////////////////////////////////////////////
--
-- Copyright (c) 2000-2023 Ericsson Telecom AB
--
-- All rights reserved. This program and the accompanying materials
-- are made available under the terms of the Eclipse Public License v2.0
-- which accompanies this distribution, and is available at
-- https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
--/////////////////////////////////////////////////////////////////////////////
--
--  File:               SS_DataTypes.asn
--  Rev:                R2A
--  Prodnr:             CNL 113 832
--  Contact:            http://ttcn.ericsson.se
--  Reference:          3GPP TS 24.080 v13.0.0

SS-DataTypes {
   itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3)
   ss-DataTypes (2) version12 (12)}

DEFINITIONS

IMPLICIT TAGS ::=

BEGIN

-- exports all data types defined in this module

IMPORTS

SS-Code
FROM MAP-SS-Code {
   itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3)
   map-SS-Code (15) version12 (12)}

-- imports MAP-SS-DataTypes
SS-Status, USSD-DataCodingScheme, USSD-String, CCBS-Feature
-- USSD-DataCodingScheme, USSD-String were introduced because of CNAP.
FROM MAP-SS-DataTypes {
   itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3)
   map-SS-DataTypes (14) version12 (12)}

GSN-Address,
CUG-Index,
NotificationToMSUser
FROM MAP-MS-DataTypes {
   itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3)
   map-MS-DataTypes (11) version12 (12)}

maxSignalInfoLength,
ISDN-AddressString,
ISDN-SubaddressString,
AlertingPattern,
LCSClientExternalID,
AddressString,
LCSServiceTypeID,
AgeOfLocationInformation
FROM MAP-CommonDataTypes {
   itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3)
   map-CommonDataTypes (18) version12 (12)}

LocationType,
DeferredLocationEventType,
LCSClientName,
LCS-QoS,
Horizontal-Accuracy,
ResponseTime,
Ext-GeographicalInformation, 
VelocityEstimate,
SupportedGADShapes,
Add-GeographicalInformation,
LCSRequestorID,
LCS-ReferenceNumber,
LCSCodeword,
AreaEventInfo,
ReportingPLMNList,
PeriodicLDRInfo,
SequenceNumber

FROM MAP-LCS-DataTypes {
   itu-t identified-organization (4) etsi (0) mobileDomain (0)
   gsm-Network (1) modules (3) map-LCS-DataTypes (25) version12 (12)}

;

-- data types definition

SS-UserData ::= IA5String (SIZE (1.. maxSignalInfoLength))

NotifySS-Arg ::= SEQUENCE{
	ss-Code						[1]		SS-Code OPTIONAL,
	ss-Status					[4]		SS-Status OPTIONAL,
	ss-Notification				[5]		SS-Notification OPTIONAL,
	callIsWaiting-Indicator		[14]	NULL OPTIONAL,
	callOnHold-Indicator		[15]	CallOnHold-Indicator OPTIONAL,
	mpty-Indicator				[16]	NULL OPTIONAL,
	cug-Index					[17]	CUG-Index OPTIONAL,
	clirSuppressionRejected		[18]	NULL OPTIONAL,
	... ,
	ect-Indicator				[19]	ECT-Indicator OPTIONAL,
	nameIndicator				[20]	NameIndicator OPTIONAL,
	ccbs-Feature				[21]	CCBS-Feature OPTIONAL,
	alertingPattern				[22]	AlertingPattern OPTIONAL,
	multicall-Indicator			[23]	Multicall-Indicator OPTIONAL}

--  The nameIndicator is defined because of CNAP.

Multicall-Indicator	::= ENUMERATED {
		nbr-SNexceeded (0),
		nbr-Userexceeded (1)}

ForwardChargeAdviceArg ::= SEQUENCE{
	ss-Code						[0]		SS-Code,
	chargingInformation			[1]		ChargingInformation,
	...}

SS-Notification ::= OCTET STRING (SIZE (1))

--	  Bit 8 7 6 5 4	00000 (Unused)

--	Bit 3	Call is forwarded indication to A-subscriber
--		(calling subscriber)
--	0	No information content
--	1	Outgoing call has been forwarded to C

--	Bit 2	Call is forwarded indication to B-subscriber
--		(forwarding subscriber)
--	0	No information content
--	1	Incoming call has been forwarded to C

--	Bit 1	Call is forwarded indication to C-subscriber
--		(forwarded-to subscriber)
--	0	No information content
--	1	Incoming call is a forwarded call

ChargingInformation ::= SEQUENCE{
	e1	[1] E1 OPTIONAL,
	e2	[2] E2 OPTIONAL,
	e3	[3] E3 OPTIONAL,
	e4	[4] E4 OPTIONAL,
	e5	[5] E5 OPTIONAL,
	e6	[6] E6 OPTIONAL,
	e7	[7] E7 OPTIONAL,
	...}

E1 ::= INTEGER (0..max10TimesUnitsPerTime)
max10TimesUnitsPerTime INTEGER ::= 8191

E2 ::= INTEGER (0..max10TimesTimeInterval)
max10TimesTimeInterval INTEGER ::= 8191

E3 ::= INTEGER (0..max100TimesScalingFactor)
max100TimesScalingFactor INTEGER ::= 8191

E4 ::= INTEGER (0..max10TimesIncrement)
max10TimesIncrement INTEGER ::= 8191

E5 ::= INTEGER (0..max10TimesIncrementPerDataInterval)
max10TimesIncrementPerDataInterval INTEGER ::= 8191

E6 ::= INTEGER (0..maxNumberOfSegmentsPerDataInterval)
maxNumberOfSegmentsPerDataInterval INTEGER ::= 8191

E7 ::= INTEGER (0..max10TimesInitialTime)
max10TimesInitialTime INTEGER ::= 8191

CallOnHold-Indicator	::= ENUMERATED {
			callRetrieved (0),
			callOnHold (1)}

ForwardCUG-InfoArg ::= SEQUENCE {
	cug-Index			[0]	CUG-Index OPTIONAL,
	suppressPrefCUG		[1]	NULL OPTIONAL,
	suppressOA			[2]	NULL OPTIONAL,
	...}

ECT-Indicator	::= SEQUENCE {
	ect-CallState		[0]	ECT-CallState,
	rdn	[1]	RDN OPTIONAL,
	...}

ECT-CallState	::= ENUMERATED {
		alerting (0),
		active (1)}

	NameIndicator ::= SEQUENCE {
		callingName		[0] Name OPTIONAL,
		...}

	Name ::= CHOICE {
		namePresentationAllowed		[0] NameSet,
		presentationRestricted		[1] NULL,
		nameUnavailable				[2] NULL,
		namePresentationRestricted	[3] NameSet}

	NameSet ::= SEQUENCE {
		dataCodingScheme 		[0] USSD-DataCodingScheme,
		lengthInCharacters 		[1] INTEGER,
		nameString				[2] USSD-String,
		...}

-- NameIndicator, Name and NameSet are defined because of CNAP.
-- The USSD-DataCodingScheme shall indicate use of the default alphabet through the
-- following encoding:
--    bit  7   6   5   4   3   2   1   0
--       | 0   0   0   0 | 1   1   1   1|

RDN	::= CHOICE {
	presentationAllowedAddress				[0]	RemotePartyNumber,
	presentationRestricted					[1]	NULL,
	numberNotAvailableDueToInterworking		[2]	NULL,
	presentationRestrictedAddress			[3]	RemotePartyNumber}

RemotePartyNumber	::= SEQUENCE {
	partyNumber				[0]	ISDN-AddressString,
	partyNumberSubaddress	[1]	ISDN-SubaddressString OPTIONAL,
	...}

AccessRegisterCCEntryArg	::= SEQUENCE {
	...}

CallDeflectionArg	::= SEQUENCE {
	deflectedToNumber		[0]	AddressString,
	deflectedToSubaddress	[1]	ISDN-SubaddressString OPTIONAL,
	...}

UserUserServiceArg ::= SEQUENCE {
	uUS-Service		[0]	UUS-Service,
	uUS-Required	[1]	BOOLEAN,
	... }

UUS-Service ::= ENUMERATED {
	uUS1 (1),
	uUS2 (2),
	uUS3 (3),
	... }

-- exception handling:
-- In case of UUS-Service with any other value, indicated as "UUS required",
-- but not understood by the MS, the call will be cleared.

LocationNotificationArg	::= SEQUENCE {
	notificationType	[0]	NotificationToMSUser,
	locationType		[1]	LocationType,
	lcsClientExternalID	[2] LCSClientExternalID		OPTIONAL,
	lcsClientName		[3]	LCSClientName			OPTIONAL,
	... ,
	lcsRequestorID		[4] LCSRequestorID			OPTIONAL,
	lcsCodeword			[5]	LCSCodeword				OPTIONAL,
	lcsServiceTypeID	[6]	LCSServiceTypeID		OPTIONAL }
	
-- The notificationType may only be set to notifyLocationAllowed, 
-- notifyAndVerify-LocationAllowedIfNoResponse, 
-- or notifyAndVerify-LocationNotAllowedIfNoResponse.
-- The locationEstimateType field of the locationType may only be set to 
-- currentLocation, currentOrLastKnownLocation, 
-- notificationVerificationOnly, or activateDeferredLocation.
-- The deferredLocationEventType field of the locationType may only be set to 
-- enteringIntoArea, and/or leavingFromArea, and/or beingInsideArea, 
-- and/or periodicLDR.
-- For LCS location notification of MT-LR for current location, the 
-- locationEstimateType field of the locationType shall be set to currentLocation.
-- For LCS location notification of MT-LR for current or last known location, the 
-- locationEstimateType field of the locationType shall be set to currentOrLastKnownLocation.
-- For the LCS location notification for the LDR of MS available event, 
-- the locationEstimateType field of the locationType shall be set to currentLocation.
-- For LCS location notification for the LDR of change of area event, 
-- the locationEstimateType field of the locationType shall be set to
-- activateDeferredLocation, and the deferredLocationEventType shall be 
-- set to enteringIntoArea, and/or leavingFromArea, and/or beingInsideArea.
-- For the post positioning LCS location notification, the locationEstimateType 
-- field of the locationType shall be set to notificationVerificationOnly.
-- For LCS location notification for the LDR of periodic location event, 
-- the locationEstimateType field of the locationType shall be set to
-- activateDeferredLocation, and the 
-- deferredLocationEventType shall be set to periodicLDR.

-- exception handling:
-- At reception of an unrecognised notificationType value the receiver shall reject the 
-- operation with a return error cause of unexpected data value.
-- At reception of an unrecognised locationType value the receiver shall reject the
-- operation with a return error cause of unexpected data value.
-- At reception of an unallowed notificationType value the receiver shall either ignore the
-- received operation or reject the operation with a return error cause of unexpected 
-- data value.
-- At reception of an unallowed locationType value the receiver shall either ignore the
-- received operation or reject the operation with a return error cause of unexpected 
-- data value.



LocationNotificationRes	::= SEQUENCE {
	verificationResponse		[0]	VerificationResponse OPTIONAL,
	...}

VerificationResponse::= ENUMERATED {
	permissionDenied	(0),
	permissionGranted	(1),
	... }

-- exception handling:
-- an unrecognized value shall be treated the same as value 0 (permissionDenied)

LCS-MOLRArg	::= SEQUENCE {
	molr-Type			[0]	MOLR-Type,
	locationMethod		[1]	LocationMethod			OPTIONAL,
	lcs-QoS				[2]	LCS-QoS					OPTIONAL,
	lcsClientExternalID	[3] LCSClientExternalID		OPTIONAL,
	mlc-Number			[4]	ISDN-AddressString		OPTIONAL,
	gpsAssistanceData	[5]	GPSAssistanceData		OPTIONAL,
	...,
	supportedGADShapes	[6]	SupportedGADShapes		OPTIONAL,
	lcsServiceTypeID	[7]	LCSServiceTypeID		OPTIONAL,
	ageOfLocationInfo	[8]	AgeOfLocationInformation	OPTIONAL,
	locationType		[9]	LocationType			OPTIONAL,
	pseudonymIndicator	[10]	NULL					OPTIONAL,
	h-gmlc-address 		[11] GSN-Address			OPTIONAL,
	locationEstimate	[12] Ext-GeographicalInformation		OPTIONAL,
	velocityEstimate	[13] VelocityEstimate		OPTIONAL,
	referenceNumber 	[14] LCS-ReferenceNumber 	OPTIONAL,
	periodicLDRInfo		[15] PeriodicLDRInfo		OPTIONAL,
	locationUpdateRequest	[16]	NULL				OPTIONAL,
	sequenceNumber 		[17] SequenceNumber 		OPTIONAL,
	terminationCause 	[18] TerminationCause 		OPTIONAL,
	mo-lrShortCircuit	[19]	NULL				OPTIONAL,
	ganssAssistanceData	[20] GANSSAssistanceData	OPTIONAL,
	multiplePositioningProtocolPDUs	[21] MultiplePositioningProtocolPDUs	OPTIONAL }
-- The parameter locationMethod shall be included if and only if the molr-Type is set to value 
-- deCipheringKeys or assistanceData.
-- The parameter gpsAssistanceData shall be included if and only if the molr-Type is set to value 
-- assistanceData and locationMethod is set to value assistedGPS or assistedGPSandGANSS.
-- The parameter ganssAssistanceData shall be included if and only if the molr-Type is set to value 
-- assistanceData and locationMethod is set to value assistedGANSS or assistedGPSandGANSS.
-- supportedGADShapes shall not be included for deferred MO-LR initiation or deferred MO-LR or MT-LR
-- responses 
-- multiplePositioningProtocolPDUs may only be included for E-UTRAN access.
-- locationMethod shall not be included for E-UTRAN access.
-- gpsAssistanceData shall not be included for E-UTRAN access.
-- h-gmlc-address shall not be included for E-UTRAN access.
-- locationEstimate shall not be included for E-UTRAN access.
-- velocityEstimate shall not be included for E-UTRAN access.
-- referenceNumber shall not be included for E-UTRAN access.
-- periodicLDRInfo shall not be included for E-UTRAN access.
-- locationUpdateRequest shall not be included for E-UTRAN access.
-- sequenceNumber shall not be included for E-UTRAN access.
-- terminationCause shall not be included for E-UTRAN access.
-- mo-lrShortCircuit shall not be included for E-UTRAN access.
-- ganssAssistanceData shall not be included for E-UTRAN access.



MOLR-Type::= ENUMERATED {
	locationEstimate			(0),
	assistanceData				(1),
	deCipheringKeys				(2),
	... ,
	deferredMo-lrTTTPInitiation	(3),
	deferredMo-lrSelfLocationInitiation (4),
	deferredMt-lrOrmo-lrTTTPLocationEstimate (5),
	deferredMt-lrOrmo-lrCancellation (6)}
-- exception handling:
-- an unrecognized value shall be rejected by the receiver with a return error cause of
-- unexpected data value.
-- For E-UTRAN access, only locationEstimate or assistanceData shall be included

LocationMethod::= ENUMERATED {
	msBasedEOTD			(0),
	msAssistedEOTD		(1),
	assistedGPS			(2),
	...,
	msBasedOTDOA		(3),
	assistedGANSS		(4),
	assistedGPSandGANSS (5)
	}
-- exception handling:
-- When this parameter is received with value msBasedEOTD or msAssistedEOTD and the MS 
-- is camped on an UMTS Service Area then the receiver shall reject it 
-- with a return error cause of unexpected data value.
-- When this parameter is received with value msBasedOTDOA and the MS 
-- is camped on a GSM Cell then the receiver shall reject it with a return error cause of
-- unexpected data value.
-- an unrecognized value shall be rejected by the receiver with a return error cause of
-- unexpected data value.

GPSAssistanceData::= OCTET STRING (SIZE (1..38))
-- Octets 1 to 38 are coded in the same way as the octets 3 to 7+2n of Requested GPS Data IE
-- in 3GPP TS 49.031 [14].

GANSSAssistanceData::= OCTET STRING (SIZE (1..40))
-- Octets 1 to 40 are coded in the same way as the octets 3 to 9+2n of Requested GANSS Data IE
-- in 3GPP TS 49.031 [14] .

TerminationCause ::= ENUMERATED {
	subscriberTermination  (0),
	uETermination     (1),
	...} 
	
MultiplePositioningProtocolPDUs ::= SEQUENCE (SIZE (1..maxNumLPPMsg)) OF PositioningProtocolPDU

PositioningProtocolPDU ::= OCTET STRING
-- PositioningProtocolPDU contains a LPP message defined in 3GPP TS 36.355 [17].

maxNumLPPMsg INTEGER ::= 3



LCS-MOLRRes::= SEQUENCE {
	locationEstimate		[0]	Ext-GeographicalInformation		OPTIONAL,
	decipheringKeys			[1] DecipheringKeys					OPTIONAL,
	...,
	add-LocationEstimate	[2]	Add-GeographicalInformation 		OPTIONAL,
	velocityEstimate		[3] VelocityEstimate		OPTIONAL,
	referenceNumber 		[4] LCS-ReferenceNumber 	OPTIONAL,
	h-gmlc-address			[5]	GSN-Address				OPTIONAL,
	mo-lrShortCircuit		[6]	NULL					OPTIONAL,
	reportingPLMNList		[7]	ReportingPLMNList		OPTIONAL
	 }
-- Parameters locationEstimate or add-LocationEstimate (one but not both) 
-- shall be included if and only if the 
-- molr-Type in LocationRequestArg was set to value locationEstimate.
-- Parameter add-LocationEstimate shall not be included if the supportedGADShapes 
-- parameter was not received in the LCS-MOLRArg.
-- The locationEstimate and the add-locationEstimate parameters shall not be sent if
-- the supportedGADShapes parameter has been received in LCS-MOLRArg
-- and the shape encoded in locationEstimate or add-LocationEstimate is not marked
-- as supported in supportedGADShapes. In such a case LCS-MOLRArg
-- shall be rejected with error FacilityNotSupported with additional indication
-- shapeOfLocationEstimateNotSupported.
-- Parameter decipheringKeys shall be included if and only if the molr-Type
-- in LocationRequestArg was set to value deCipheringKeys.
-- Parameter velocityEstimate may only be included if the lcs-QoS in LCS-MOLRarg includes
-- velocityRequest
-- decipheringKeys shall not be included for E-UTRAN access.
-- referenceNumber shall not be included for E-UTRAN access.
-- h-gmlc-address shall not be included for E-UTRAN access.
-- mo-lrShortCircuit shall not be included for E-UTRAN access.
-- reportingPLMNList shall not be included for E-UTRAN access.



DecipheringKeys::= OCTET STRING (SIZE (15))
-- Octets in DecipheringKeys are coded in the same way as the octets 3 to 17 of Deciphering Key IE
-- in 3GPP TS 49.031 [14]. I.e. these octets contain Current Deciphering Key, Next Deciphering Key and 
-- Ciphering Key Flag.
LCS-AreaEventRequestArg	::= SEQUENCE {
	referenceNumber				[0]	LCS-ReferenceNumber,
	h-gmlc-address				[1]	GSN-Address,
	deferredLocationEventType	[3] DeferredLocationEventType,
	areaEventInfo				[4]	AreaEventInfo,
	... }

-- the msAvailableValue in the DeferredLocationEventType is not applicable for this procedure 

LCS-AreaEventReportArg	::= SEQUENCE {
	referenceNumber				[0]	LCS-ReferenceNumber,
	h-gmlc-address				[1]	GSN-Address,
	... }

LCS-AreaEventCancellationArg	::= SEQUENCE {
	referenceNumber				[0]	LCS-ReferenceNumber,
	h-gmlc-address				[1]	GSN-Address,
	... }


LCS-PeriodicLocationRequestArg	::= SEQUENCE {
	referenceNumber		[0] LCS-ReferenceNumber,
	periodicLDRInfo		[1]	PeriodicLDRInfo,
	lcsClientExternalID	[2] LCSClientExternalID,
	qoS					[3] LCS-QoS					OPTIONAL,
	h-gmlc-address		[4]	GSN-Address				OPTIONAL,
	mo-lrShortCircuit	[5]	NULL					OPTIONAL,
	reportingPLMNList	[6]	ReportingPLMNList		OPTIONAL,
	... }


LCS-PeriodicLocationRequestRes	::= SEQUENCE {
	mo-lrShortCircuit	[0]	NULL					OPTIONAL,
	... }


LCS-LocationUpdateArg	::= SEQUENCE {
	referenceNumber		[0] LCS-ReferenceNumber		OPTIONAL,
	add-LocationEstimate[1] Add-GeographicalInformation 		OPTIONAL,
	velocityEstimate	[2] VelocityEstimate		OPTIONAL,
	sequenceNumber		[3]	SequenceNumber			OPTIONAL,
	... }
-- add-LocationEstimate shall be included if and only if a location estimate was successfully
-- transferred towards an External LCS Client or was successfully obtained for UE self location
-- velocityEstimate may only be included if add-LocationEstimate is included

LCS-LocationUpdateRes	::= SEQUENCE {
	terminationCause 	[0] TerminationCause 		OPTIONAL,
	... }

LCS-PeriodicLocationCancellationArg	::= SEQUENCE {
	referenceNumber		[0] LCS-ReferenceNumber,
	h-gmlc-address		[1]	GSN-Address				OPTIONAL,
	... }


END
