--  Reference:          3GPP TS 29.002 10.6.0

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

DEFINITIONS

IMPLICIT TAGS

::=

BEGIN

EXPORTS
	RoutingInfoForSM-Arg,
	RoutingInfoForSM-Res,
	MO-ForwardSM-Arg,
	MO-ForwardSM-Res,
	MT-ForwardSM-Arg,
	MT-ForwardSM-Res,
	ReportSM-DeliveryStatusArg,
	ReportSM-DeliveryStatusRes,
	AlertServiceCentreArg,
	InformServiceCentreArg,
	ReadyForSM-Arg, 
	ReadyForSM-Res,
	SM-DeliveryOutcome,
	AlertReason,
	Additional-Number,
	MT-ForwardSM-VGCS-Arg,
	MT-ForwardSM-VGCS-Res
;

IMPORTS
	AddressString,
	ISDN-AddressString,
	SignalInfo,
	IMSI,
	LMSI,
	ASCI-CallReference,
	Time

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

	AbsentSubscriberDiagnosticSM
FROM MAP-ER-DataTypes {
   itu-t identified-organization (4) etsi (0) mobileDomain (0)
   gsm-Network (1) modules (3) map-ER-DataTypes (17) 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)}
;


RoutingInfoForSM-Arg ::= SEQUENCE {
	msisdn		[0] ISDN-AddressString,
	sm-RP-PRI		[1] BOOLEAN,
	serviceCentreAddress	[2] AddressString,
	extensionContainer	[6] ExtensionContainer	OPTIONAL,
	... ,
	gprsSupportIndicator	[7]	NULL		OPTIONAL,
	-- gprsSupportIndicator is set only if the SMS-GMSC supports
	-- receiving of two numbers from the HLR
	sm-RP-MTI		[8] SM-RP-MTI	OPTIONAL,
	sm-RP-SMEA	[9] SM-RP-SMEA	OPTIONAL,
	sm-deliveryNotIntended	[10] SM-DeliveryNotIntended	OPTIONAL,
	ip-sm-gwGuidanceIndicator	[11] NULL		OPTIONAL }

SM-DeliveryNotIntended ::= ENUMERATED {
	onlyIMSI-requested  (0),
	onlyMCC-MNC-requested  (1),
	...}

SM-RP-MTI ::= INTEGER (0..10)
	-- 0 SMS Deliver 
	-- 1 SMS Status Report
	-- other values are reserved for future use and shall be discarded if
	-- received

SM-RP-SMEA ::= OCTET STRING (SIZE (1..12))
	-- this parameter contains an address field which is encoded 
	-- as defined in 3GPP TS 23.040. An address field contains 3 elements :
	-- 		address-length
	-- 		type-of-address
	-- 		address-value

RoutingInfoForSM-Res ::= SEQUENCE {
	imsi			IMSI,
	locationInfoWithLMSI	[0] LocationInfoWithLMSI,
	extensionContainer	[4] ExtensionContainer	OPTIONAL,
	...,
	ip-sm-gwGuidance	[5] IP-SM-GW-Guidance	OPTIONAL }

IP-SM-GW-Guidance ::= SEQUENCE {
	minimumDeliveryTimeValue	SM-DeliveryTimerValue,
	recommendedDeliveryTimeValue	SM-DeliveryTimerValue,
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

LocationInfoWithLMSI ::= SEQUENCE {
	networkNode-Number	[1] ISDN-AddressString,
	lmsi			LMSI			OPTIONAL,
	extensionContainer	ExtensionContainer	OPTIONAL,
	...,
	gprsNodeIndicator	[5]	NULL		OPTIONAL,
	-- gprsNodeIndicator is set only if the SGSN number is sent as the 
	-- Network Node Number
	additional-Number	[6] Additional-Number	OPTIONAL 
	-- NetworkNode-number can be either msc-number or sgsn-number or IP-SM-GW
	-- number or SMS Router number
	}

Additional-Number ::= CHOICE {
	msc-Number	[0] ISDN-AddressString,
	sgsn-Number	[1] ISDN-AddressString}
	-- additional-number can be either msc-number or sgsn-number
	-- if received networkNode-number is msc-number then the 	
	-- additional number is sgsn-number 
	-- if received networkNode-number is sgsn-number then the 
	-- additional number is msc-number 

MO-ForwardSM-Arg ::= SEQUENCE {
	sm-RP-DA		SM-RP-DA,
	sm-RP-OA		SM-RP-OA,
	sm-RP-UI		SignalInfo,
	extensionContainer	ExtensionContainer	OPTIONAL,
	... ,
	imsi			IMSI 		OPTIONAL }

MO-ForwardSM-Res ::= SEQUENCE {
	sm-RP-UI		SignalInfo 	OPTIONAL,
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

MT-ForwardSM-Arg ::= SEQUENCE {
	sm-RP-DA		SM-RP-DA,
	sm-RP-OA		SM-RP-OA,
	sm-RP-UI		SignalInfo,
	moreMessagesToSend	NULL			OPTIONAL,
	extensionContainer	ExtensionContainer	OPTIONAL,
	...,
	smDeliveryTimer	SM-DeliveryTimerValue	OPTIONAL,
	smDeliveryStartTime	Time			OPTIONAL }
	-- SM-DeliveryTimerValue contains the value used by the SMS-GMSC

MT-ForwardSM-Res ::= SEQUENCE {
	sm-RP-UI		SignalInfo	OPTIONAL,
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

SM-RP-DA ::= CHOICE {
	imsi			[0] IMSI,
	lmsi			[1] LMSI,
	serviceCentreAddressDA	[4] AddressString,
	noSM-RP-DA	[5] NULL}

SM-RP-OA ::= CHOICE {
	msisdn		[2] ISDN-AddressString,
	serviceCentreAddressOA	[4] AddressString,
	noSM-RP-OA	[5] NULL}

SM-DeliveryTimerValue ::= INTEGER (30..600)

ReportSM-DeliveryStatusArg ::= SEQUENCE {
	msisdn		ISDN-AddressString,
	serviceCentreAddress	AddressString,
	sm-DeliveryOutcome	SM-DeliveryOutcome,
	absentSubscriberDiagnosticSM	[0] AbsentSubscriberDiagnosticSM
							OPTIONAL,
	extensionContainer	[1] ExtensionContainer	OPTIONAL,
	...,
	gprsSupportIndicator	[2]	NULL		OPTIONAL,
	-- gprsSupportIndicator is set only if the SMS-GMSC supports 
	-- handling of two delivery outcomes
	deliveryOutcomeIndicator	[3] 	NULL		OPTIONAL,
	-- DeliveryOutcomeIndicator is set when the SM-DeliveryOutcome
	-- is for GPRS
	additionalSM-DeliveryOutcome	[4] 	SM-DeliveryOutcome 	OPTIONAL,
	-- If received, additionalSM-DeliveryOutcome is for GPRS
	-- If DeliveryOutcomeIndicator is set, then AdditionalSM-DeliveryOutcome shall be absent
	additionalAbsentSubscriberDiagnosticSM	[5] 	AbsentSubscriberDiagnosticSM OPTIONAL,
	-- If received additionalAbsentSubscriberDiagnosticSM is for GPRS
	-- If DeliveryOutcomeIndicator is set, then AdditionalAbsentSubscriberDiagnosticSM 
	-- shall be absent
	ip-sm-gw-Indicator	[6] 	NULL		OPTIONAL,
	-- the ip-sm-gw indicator indicates by its presence that sm-deliveryOutcome
	-- is for delivery via IMS
	-- If present, deliveryOutcomeIndicator shall be absent.
	ip-sm-gw-sm-deliveryOutcome	[7] 	SM-DeliveryOutcome	OPTIONAL, 
	-- If received ip-sm-gw-sm-deliveryOutcome is for delivery via IMS
	-- If ip-sm-gw-Indicator is set, then ip-sm-gw-sm-deliveryOutcome shall be absent
	ip-sm-gw-absentSubscriberDiagnosticSM	[8]	AbsentSubscriberDiagnosticSM	OPTIONAL
	-- If received ip-sm-gw-sm-absentSubscriberDiagnosticSM is for delivery via IMS
	-- If ip-sm-gw-Indicator is set, then ip-sm-gw-sm-absentSubscriberDiagnosticSM 
	-- shall be absent
}

SM-DeliveryOutcome ::= ENUMERATED {
	memoryCapacityExceeded  (0),
	absentSubscriber  (1),
	successfulTransfer  (2)}

ReportSM-DeliveryStatusRes ::= SEQUENCE {
	storedMSISDN	ISDN-AddressString	OPTIONAL,
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

AlertServiceCentreArg ::= SEQUENCE {
	msisdn		ISDN-AddressString,
	serviceCentreAddress	AddressString,
	...}

InformServiceCentreArg ::= SEQUENCE {
	storedMSISDN	ISDN-AddressString	OPTIONAL,
	mw-Status	MW-Status	OPTIONAL,
	extensionContainer	ExtensionContainer	OPTIONAL,
	... ,
	absentSubscriberDiagnosticSM	AbsentSubscriberDiagnosticSM	OPTIONAL,
	additionalAbsentSubscriberDiagnosticSM	[0]	AbsentSubscriberDiagnosticSM	OPTIONAL }
	-- additionalAbsentSubscriberDiagnosticSM may be present only if 
	-- absentSubscriberDiagnosticSM is present.
	-- if included, additionalAbsentSubscriberDiagnosticSM is for GPRS and
	-- absentSubscriberDiagnosticSM is for non-GPRS

MW-Status ::= BIT STRING {
	sc-AddressNotIncluded  (0),
	mnrf-Set  (1),
	mcef-Set  (2) ,
	mnrg-Set	  (3)} (SIZE (6..16))
	-- exception handling:
	-- bits 4 to 15 shall be ignored if received and not understood

ReadyForSM-Arg ::= SEQUENCE {
	imsi			[0] IMSI,
	alertReason	AlertReason,
	alertReasonIndicator	NULL			OPTIONAL,
	-- alertReasonIndicator is set only when the alertReason 
	-- sent to HLR is for GPRS
	extensionContainer	ExtensionContainer	OPTIONAL,
	...,
	additionalAlertReasonIndicator	[1] NULL		OPTIONAL
	-- additionalAlertReasonIndicator is set only when the alertReason
	-- sent to HLR is for IP-SM-GW
	}

ReadyForSM-Res ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

AlertReason ::= ENUMERATED {
	ms-Present  (0),
	memoryAvailable  (1)}

MT-ForwardSM-VGCS-Arg ::= SEQUENCE {
	asciCallReference	ASCI-CallReference,
	sm-RP-OA		SM-RP-OA,
	sm-RP-UI		SignalInfo,
	extensionContainer	ExtensionContainer	OPTIONAL,
	...}

MT-ForwardSM-VGCS-Res ::= SEQUENCE {
	sm-RP-UI		[0] SignalInfo	OPTIONAL,
	dispatcherList	[1] DispatcherList	OPTIONAL,
	ongoingCall	NULL			OPTIONAL,
	extensionContainer	[2] ExtensionContainer	OPTIONAL,
	...}

DispatcherList ::= 
	SEQUENCE SIZE (1..maxNumOfDispatchers) OF
				ISDN-AddressString

maxNumOfDispatchers  INTEGER ::= 5



END
