-- $Id: MAP-ER-DataTypes.asn 34814 2010-11-08 23:15:16Z etxrab $
-- 3GPP TS 29.002 V9.3.0 (2010-09) 
-- 17.7.7	Error data types

MAP-ER-DataTypes {
   itu-t identified-organization (4) etsi (0) mobileDomain (0)
   gsm-Network (1) modules (3) map-ER-DataTypes (17) version12 (12)}

DEFINITIONS

IMPLICIT TAGS

::=

BEGIN

EXPORTS
	RoamingNotAllowedParam,
	CallBarredParam,
	CUG-RejectParam,
	SS-IncompatibilityCause,
	PW-RegistrationFailureCause,
	SM-DeliveryFailureCause,
	SystemFailureParam,
	DataMissingParam,
	UnexpectedDataParam,
	FacilityNotSupParam,
	OR-NotAllowedParam,
	UnknownSubscriberParam,
	NumberChangedParam,
	UnidentifiedSubParam,
	IllegalSubscriberParam,
	IllegalEquipmentParam,
	BearerServNotProvParam,
	TeleservNotProvParam,
	TracingBufferFullParam,
	NoRoamingNbParam,
	AbsentSubscriberParam,
	BusySubscriberParam,
	NoSubscriberReplyParam,
	ForwardingViolationParam,
	ForwardingFailedParam, 
	ATI-NotAllowedParam,
	SubBusyForMT-SMS-Param,
	MessageWaitListFullParam,
	AbsentSubscriberSM-Param,
	AbsentSubscriberDiagnosticSM,
	ResourceLimitationParam,
	NoGroupCallNbParam,
	IncompatibleTerminalParam,
	ShortTermDenialParam,
	LongTermDenialParam,
	UnauthorizedRequestingNetwork-Param,
	UnauthorizedLCSClient-Param,
	PositionMethodFailure-Param,
	UnknownOrUnreachableLCSClient-Param,
	MM-EventNotSupported-Param,
	ATSI-NotAllowedParam,
	ATM-NotAllowedParam,
	IllegalSS-OperationParam,
	SS-NotAvailableParam,
	SS-SubscriptionViolationParam,
	InformationNotAvailableParam,
TargetCellOutsideGCA-Param,
OngoingGroupCallParam

;

IMPORTS
	SS-Status
FROM MAP-SS-DataTypes {
   itu-t identified-organization (4) etsi (0) mobileDomain (0)
   gsm-Network (1) modules (3) map-SS-DataTypes (14) version12 (12)}

	SignalInfo,
	BasicServiceCode,
	NetworkResource,
	AdditionalNetworkResource
FROM MAP-CommonDataTypes {
   itu-t identified-organization (4) etsi (0) mobileDomain (0)
   gsm-Network (1) modules (3) map-CommonDataTypes (18) version12 (12)}


	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)}

	ExtensionContainer
FROM MAP-ExtensionDataTypes {
   itu-t identified-organization (4) etsi (0) mobileDomain (0)
   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version12 (12)}
;

RoamingNotAllowedParam ::= SEQUENCE {
	roamingNotAllowedCause	RoamingNotAllowedCause,
	extensionContainer	ExtensionContainer	OPTIONAL,
	...,
	additionalRoamingNotAllowedCause	[0] AdditionalRoamingNotAllowedCause OPTIONAL }

--	if the additionalRoamingNotallowedCause is received by the MSC/VLR or SGSN then the 
--	roamingNotAllowedCause shall be discarded.

AdditionalRoamingNotAllowedCause ::= ENUMERATED {
	supportedRAT-TypesNotAllowed (0),
	...}

RoamingNotAllowedCause ::= ENUMERATED {
	plmnRoamingNotAllowed  (0),
	operatorDeterminedBarring  (3)}

CallBarredParam ::= CHOICE {
	callBarringCause	CallBarringCause,
	-- call BarringCause must not be used in version 3 and higher
	extensibleCallBarredParam	ExtensibleCallBarredParam
	-- extensibleCallBarredParam must not be used in version <3
	}

CallBarringCause ::= ENUMERATED {
	barringServiceActive  (0),
	operatorBarring  (1)}

ExtensibleCallBarredParam ::= SEQUENCE {
	callBarringCause	CallBarringCause	OPTIONAL,
	extensionContainer	ExtensionContainer	OPTIONAL,
	... ,
	unauthorisedMessageOriginator	[1] NULL		OPTIONAL }

CUG-RejectParam ::= SEQUENCE {
	cug-RejectCause	CUG-RejectCause	OPTIONAL,
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

CUG-RejectCause ::= ENUMERATED {
	incomingCallsBarredWithinCUG  (0),
	subscriberNotMemberOfCUG  (1),
	requestedBasicServiceViolatesCUG-Constraints  (5),
	calledPartySS-InteractionViolation  (7)}

SS-IncompatibilityCause ::= SEQUENCE {
	ss-Code		[1] SS-Code	OPTIONAL,
	basicService	BasicServiceCode	OPTIONAL,
	ss-Status		[4] SS-Status	OPTIONAL,
	...}

PW-RegistrationFailureCause ::= ENUMERATED {
	undetermined  (0),
	invalidFormat  (1),
	newPasswordsMismatch  (2)}

SM-EnumeratedDeliveryFailureCause ::= ENUMERATED {
	memoryCapacityExceeded  (0),
	equipmentProtocolError  (1),
	equipmentNotSM-Equipped  (2),
	unknownServiceCentre  (3),
	sc-Congestion  (4),
	invalidSME-Address  (5),
	subscriberNotSC-Subscriber  (6)}

SM-DeliveryFailureCause ::= SEQUENCE {
	sm-EnumeratedDeliveryFailureCause	SM-EnumeratedDeliveryFailureCause,
	diagnosticInfo	SignalInfo	OPTIONAL,
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

AbsentSubscriberSM-Param ::= SEQUENCE {
	absentSubscriberDiagnosticSM	AbsentSubscriberDiagnosticSM	OPTIONAL,
	-- AbsentSubscriberDiagnosticSM can be either for non-GPRS 
	-- or for GPRS
	extensionContainer	ExtensionContainer	OPTIONAL,
	...,
	additionalAbsentSubscriberDiagnosticSM  	[0] 	AbsentSubscriberDiagnosticSM	OPTIONAL }
	-- if received, additionalAbsentSubscriberDiagnosticSM 
	-- is for GPRS and absentSubscriberDiagnosticSM is 
	-- for non-GPRS

AbsentSubscriberDiagnosticSM ::= INTEGER (0..255)
	-- AbsentSubscriberDiagnosticSM values are defined in 3GPP TS 23.040

SystemFailureParam ::= CHOICE {
	networkResource	NetworkResource,
	-- networkResource must not be used in version 3
	extensibleSystemFailureParam	ExtensibleSystemFailureParam
	-- extensibleSystemFailureParam must not be used in version <3
	}

ExtensibleSystemFailureParam ::= SEQUENCE {
	networkResource	NetworkResource	OPTIONAL,
	extensionContainer	ExtensionContainer	OPTIONAL,
	...,
	additionalNetworkResource	[0] AdditionalNetworkResource	OPTIONAL,
	failureCauseParam	[1] FailureCauseParam	OPTIONAL }

FailureCauseParam ::= ENUMERATED {
	limitReachedOnNumberOfConcurrentLocationRequests (0),
	... }
	-- if unknown value is received in FailureCauseParam it shall be ignored


DataMissingParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

UnexpectedDataParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

FacilityNotSupParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...,
	shapeOfLocationEstimateNotSupported [0]	NULL		OPTIONAL,
	neededLcsCapabilityNotSupportedInServingNode [1] NULL	OPTIONAL }

OR-NotAllowedParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

UnknownSubscriberParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...,
	unknownSubscriberDiagnostic	UnknownSubscriberDiagnostic	OPTIONAL}

UnknownSubscriberDiagnostic ::= ENUMERATED {
	imsiUnknown  (0),
	gprs-eps-SubscriptionUnknown  (1),
	...,
	npdbMismatch  (2)}
	-- if unknown values are received in 	
	-- UnknownSubscriberDiagnostic they shall be discarded

NumberChangedParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

UnidentifiedSubParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

IllegalSubscriberParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

IllegalEquipmentParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

BearerServNotProvParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

TeleservNotProvParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

TracingBufferFullParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

NoRoamingNbParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

AbsentSubscriberParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...,
	absentSubscriberReason	[0] AbsentSubscriberReason	OPTIONAL}

AbsentSubscriberReason ::= ENUMERATED {
	imsiDetach (0),
	restrictedArea (1),
	noPageResponse (2),
	... ,
	purgedMS (3),
	mtRoamingRetry (4)}
-- exception handling: at reception of other values than the ones listed the 
-- AbsentSubscriberReason shall be ignored. 
-- The AbsentSubscriberReason: purgedMS is defined for the Super-Charger feature 
-- (see TS 23.116). If this value is received in a Provide Roaming Number response
-- it shall be mapped to the AbsentSubscriberReason: imsiDetach in the Send Routeing
-- Information response
-- The AbsentSubscriberReason: mtRoamingRetry is used during MT Roaming Retry, 
-- see 3GPP TS 23.018[97].

BusySubscriberParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...,
	ccbs-Possible	[0] NULL		OPTIONAL,
	ccbs-Busy		[1] NULL		OPTIONAL}

NoSubscriberReplyParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

ForwardingViolationParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

ForwardingFailedParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

ATI-NotAllowedParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

ATSI-NotAllowedParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

ATM-NotAllowedParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

IllegalSS-OperationParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

SS-NotAvailableParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

SS-SubscriptionViolationParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

InformationNotAvailableParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

SubBusyForMT-SMS-Param ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	... ,
	gprsConnectionSuspended	NULL			OPTIONAL }
	-- If GprsConnectionSuspended is not understood it shall 
	-- be discarded

MessageWaitListFullParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

ResourceLimitationParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

NoGroupCallNbParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

IncompatibleTerminalParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

ShortTermDenialParam ::= SEQUENCE {
	...}

LongTermDenialParam ::= SEQUENCE {
	...}

UnauthorizedRequestingNetwork-Param ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

UnauthorizedLCSClient-Param ::= SEQUENCE {
	unauthorizedLCSClient-Diagnostic	[0] UnauthorizedLCSClient-Diagnostic	OPTIONAL,
	extensionContainer	[1] ExtensionContainer			OPTIONAL,
	... }

UnauthorizedLCSClient-Diagnostic ::= ENUMERATED {
	noAdditionalInformation (0),
	clientNotInMSPrivacyExceptionList (1),
	callToClientNotSetup (2),
	privacyOverrideNotApplicable (3),
	disallowedByLocalRegulatoryRequirements (4),
	...,
	unauthorizedPrivacyClass (5),
	unauthorizedCallSessionUnrelatedExternalClient (6),
	unauthorizedCallSessionRelatedExternalClient (7) }
--	exception handling:
--	any unrecognized value shall be ignored

PositionMethodFailure-Param ::= SEQUENCE {
	positionMethodFailure-Diagnostic	[0] PositionMethodFailure-Diagnostic	OPTIONAL,
	extensionContainer	[1] ExtensionContainer			OPTIONAL,
	... }

PositionMethodFailure-Diagnostic ::= ENUMERATED {
	congestion  (0),
	insufficientResources  (1),
	insufficientMeasurementData  (2),
	inconsistentMeasurementData  (3),
	locationProcedureNotCompleted  (4),
	locationProcedureNotSupportedByTargetMS  (5),
	qoSNotAttainable  (6),
	positionMethodNotAvailableInNetwork	(7),
	positionMethodNotAvailableInLocationArea	(8),
	... }
--	exception handling:
--	any unrecognized value shall be ignored

UnknownOrUnreachableLCSClient-Param ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

MM-EventNotSupported-Param ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

TargetCellOutsideGCA-Param ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

OngoingGroupCallParam ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}


END
