--  Reference:          3GPP TS 29.002 10.6.0

MAP-DialogueInformation {
   itu-t identified-organization (4) etsi (0) mobileDomain (0)
   gsm-Network (1) modules (3) map-DialogueInformation (3) version13 (13)}

DEFINITIONS

IMPLICIT TAGS

::=

BEGIN

EXPORTS
	map-DialogueAS,
	MAP-DialoguePDU

;

IMPORTS
	gsm-NetworkId,
	as-Id
FROM MobileDomainDefinitions {
   itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
   mobileDomainDefinitions (0) version1 (1)}

	AddressString
FROM MAP-CommonDataTypes {
   itu-t identified-organization (4) etsi (0) mobileDomain (0)
   gsm-Network(1) modules (3) map-CommonDataTypes (18) version13 (13)}

	ExtensionContainer
FROM MAP-ExtensionDataTypes {
   itu-t identified-organization (4) etsi (0) mobileDomain (0)
   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)}


;

-- Following types needed for coding of user information of TCAP ASPs for MAP

TCAP-MAP-user-information ::=
  SEQUENCE OF TCAP-MAP-user-information-element


TCAP-MAP-user-information-element ::= SEQUENCE {
  syntax OBJECT IDENTIFIER,
  mAP-DialoguePDU MAP-DialoguePDU
}

/*
  This is used in TCAP ASP as EXTERNAL when
  MAP-DialoguePDU is embedded in EXTERNAL (because the
  'single-ASN1-type' alternative of 'encoding' must be used)
*/


MAP-DialoguePDU-inEXTERNAL ::= [UNIVERSAL 8] IMPLICIT SEQUENCE {
  direct-reference OBJECT IDENTIFIER,
  encoding CHOICE {
    single-ASN1-type [0] EXPLICIT MAP-DialoguePDU
  }
}

/*
  This is a helper type used during coding/decoding...
*/

Seq-of-ANY-MAP ::= SEQUENCE OF ANY


-- abstract syntax name for MAP-DialoguePDU

map-DialogueAS  OBJECT IDENTIFIER ::=
	{gsm-NetworkId as-Id map-DialoguePDU (1) version1 (1)}

MAP-DialoguePDU ::= CHOICE {
	map-open		[0] MAP-OpenInfo,
	map-accept	[1] MAP-AcceptInfo,
	map-close		[2] MAP-CloseInfo,
	map-refuse	[3] MAP-RefuseInfo,
	map-userAbort	[4] MAP-UserAbortInfo,
	map-providerAbort	[5] MAP-ProviderAbortInfo}

MAP-OpenInfo ::= SEQUENCE {
	destinationReference	[0] AddressString	OPTIONAL,
	originationReference	[1] AddressString	OPTIONAL,
	...,
	extensionContainer	ExtensionContainer	OPTIONAL
	-- extensionContainer must not be used in version 2
	}

MAP-AcceptInfo ::= SEQUENCE {
	...,
	extensionContainer	ExtensionContainer	OPTIONAL
	-- extensionContainer must not be used in version 2
	}

MAP-CloseInfo ::= SEQUENCE {
	...,
	extensionContainer	ExtensionContainer	OPTIONAL
	-- extensionContainer must not be used in version 2
	}

MAP-RefuseInfo ::= SEQUENCE {
	reason	Reason,
	...,
	extensionContainer	ExtensionContainer	OPTIONAL,
	-- extensionContainer must not be used in version 2
	alternativeApplicationContext	OBJECT IDENTIFIER	OPTIONAL
	-- alternativeApplicationContext must not be used in version 2
	}

Reason ::= ENUMERATED {
	noReasonGiven	(0),
	invalidDestinationReference	(1),
	invalidOriginatingReference	(2)}

MAP-UserAbortInfo ::= SEQUENCE {
	map-UserAbortChoice	MAP-UserAbortChoice,
	...,
	extensionContainer	ExtensionContainer	OPTIONAL
	-- extensionContainer must not be used in version 2
	}

MAP-UserAbortChoice ::= CHOICE {
	userSpecificReason	[0] NULL,
	userResourceLimitation	[1] NULL,
	resourceUnavailable	[2] ResourceUnavailableReason,
	applicationProcedureCancellation	[3] ProcedureCancellationReason}

ResourceUnavailableReason ::= ENUMERATED {
	shortTermResourceLimitation  (0),
	longTermResourceLimitation  (1)}

ProcedureCancellationReason ::= ENUMERATED {
	handoverCancellation  (0),
	radioChannelRelease  (1),
	networkPathRelease  (2),
	callRelease  (3),
	associatedProcedureFailure  (4),
	tandemDialogueRelease  (5),
	remoteOperationsFailure  (6)}

MAP-ProviderAbortInfo ::= SEQUENCE {
	map-ProviderAbortReason	MAP-ProviderAbortReason,
	...,
	extensionContainer	ExtensionContainer	OPTIONAL
	-- extensionContainer must not be used in version 2
	}

MAP-ProviderAbortReason ::= ENUMERATED {
	abnormalDialogue  (0),
	invalidPDU  (1)}

END
