--  Reference:          3GPP TS 29.002 10.6.0

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

DEFINITIONS

IMPLICIT TAGS

::=

BEGIN

EXPORTS
	RegisterSS-Arg,
	SS-Info,
	SS-Status,
	SS-SubscriptionOption,
	SS-ForBS-Code,
	InterrogateSS-Res,
	USSD-Arg,
	USSD-Res, 
	USSD-DataCodingScheme,
	USSD-String,
	Password,
	GuidanceInfo,
	SS-List,
	SS-InfoList,
	OverrideCategory,
	CliRestrictionOption,
	NoReplyConditionTime,
	ForwardingOptions,
	maxNumOfSS,
	SS-Data,
	SS-InvocationNotificationArg,
	SS-InvocationNotificationRes,
	CCBS-Feature,
	RegisterCC-EntryArg,
	RegisterCC-EntryRes,
	EraseCC-EntryArg,
	EraseCC-EntryRes
;

IMPORTS
	AddressString,
	ISDN-AddressString,
	ISDN-SubaddressString,
	FTN-AddressString,
	IMSI,
	BasicServiceCode,
	AlertingPattern,
	EMLPP-Priority, 
	MaxMC-Bearers,
	MC-Bearers,
	ExternalSignalInfo
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)}

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


RegisterSS-Arg ::= SEQUENCE {
	ss-Code		SS-Code,
	basicService	BasicServiceCode	OPTIONAL,
	forwardedToNumber	[4] AddressString	OPTIONAL,
	forwardedToSubaddress	[6] ISDN-SubaddressString	OPTIONAL,
	noReplyConditionTime	[5] NoReplyConditionTime	OPTIONAL,
	...,
	defaultPriority	[7] EMLPP-Priority	OPTIONAL,
	nbrUser		[8] MC-Bearers	OPTIONAL,
	longFTN-Supported	[9]	NULL		OPTIONAL }

NoReplyConditionTime ::= INTEGER (5..30)

SS-Info ::= CHOICE {
	forwardingInfo	[0] ForwardingInfo,
	callBarringInfo	[1] CallBarringInfo,
	ss-Data		[3] SS-Data}

ForwardingInfo ::= SEQUENCE {
	ss-Code		SS-Code		OPTIONAL,
	forwardingFeatureList	ForwardingFeatureList,
	...}

ForwardingFeatureList ::= 
	SEQUENCE SIZE (1..maxNumOfBasicServiceGroups) OF
				ForwardingFeature

ForwardingFeature ::= SEQUENCE {
	basicService	BasicServiceCode	OPTIONAL,
	ss-Status		[4] SS-Status	OPTIONAL,
	forwardedToNumber	[5] ISDN-AddressString	OPTIONAL,
	forwardedToSubaddress	[8] ISDN-SubaddressString	OPTIONAL,
	forwardingOptions	[6] ForwardingOptions	OPTIONAL,
	noReplyConditionTime	[7] NoReplyConditionTime	OPTIONAL,
	...,
	longForwardedToNumber	[9] FTN-AddressString	OPTIONAL }

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

	-- bits 8765: 0000 (unused)
	-- bits 4321: Used to convey the "P bit","R bit","A bit" and "Q bit",
	--		    representing supplementary service state information
	--		    as defined in TS 3GPP TS 23.011 [22]

	-- bit 4: "Q bit"

	-- bit 3: "P bit"

	-- bit 2: "R bit"

	-- bit 1: "A bit"

ForwardingOptions ::= OCTET STRING (SIZE (1))

	-- bit 8: notification to forwarding party
	--	0  no notification
	--	1  notification

	-- bit 7: redirecting presentation
	--	0 no presentation  
	--	1  presentation

	-- bit 6: notification to calling party
	--	0  no notification
	--	1  notification

	-- bit 5: 0 (unused)

	-- bits 43: forwarding reason
	--	00  ms not reachable
	--	01  ms busy
	--	10  no reply
	--	11  unconditional when used in a SRI Result, 
	--	    or call deflection when used in a RCH Argument
	-- bits 21: 00 (unused)

CallBarringInfo ::= SEQUENCE {
	ss-Code		SS-Code		OPTIONAL,
	callBarringFeatureList	CallBarringFeatureList,
	...}

CallBarringFeatureList ::= SEQUENCE SIZE (1..maxNumOfBasicServiceGroups) OF
				CallBarringFeature

CallBarringFeature ::= SEQUENCE {
	basicService	BasicServiceCode	OPTIONAL,
	ss-Status	[4] SS-Status	OPTIONAL,
	...}

SS-Data ::= SEQUENCE {
	ss-Code		SS-Code		OPTIONAL,
	ss-Status		[4] SS-Status	OPTIONAL,
	ss-SubscriptionOption	SS-SubscriptionOption	OPTIONAL,
	basicServiceGroupList	BasicServiceGroupList	OPTIONAL,
	...,
	defaultPriority	EMLPP-Priority	OPTIONAL,
	nbrUser		[5] MC-Bearers	OPTIONAL
	}

SS-SubscriptionOption ::= CHOICE {
	cliRestrictionOption	[2] CliRestrictionOption,
	overrideCategory	[1] OverrideCategory}

CliRestrictionOption ::= ENUMERATED {
	permanent  (0),
	temporaryDefaultRestricted  (1),
	temporaryDefaultAllowed  (2)}

OverrideCategory ::= ENUMERATED {
	overrideEnabled  (0),
	overrideDisabled  (1)}

SS-ForBS-Code ::= SEQUENCE {
	ss-Code		SS-Code,
	basicService	BasicServiceCode	OPTIONAL,
	...,
	longFTN-Supported	[4]	NULL		OPTIONAL }

GenericServiceInfo ::= SEQUENCE {
	ss-Status	SS-Status,
	cliRestrictionOption	CliRestrictionOption	OPTIONAL,
	...,
	maximumEntitledPriority	[0] EMLPP-Priority	OPTIONAL,
	defaultPriority	[1] EMLPP-Priority	OPTIONAL,
	ccbs-FeatureList	[2] CCBS-FeatureList	OPTIONAL,
	nbrSB		[3] MaxMC-Bearers	OPTIONAL,
	nbrUser		[4] MC-Bearers	OPTIONAL,
	nbrSN		[5] MC-Bearers	OPTIONAL }

CCBS-FeatureList ::= SEQUENCE SIZE (1..maxNumOfCCBS-Requests) OF
				CCBS-Feature

maxNumOfCCBS-Requests  INTEGER ::= 5

CCBS-Feature ::= SEQUENCE {
	ccbs-Index	[0] CCBS-Index	OPTIONAL,
	b-subscriberNumber	[1] ISDN-AddressString	OPTIONAL,
	b-subscriberSubaddress	[2] ISDN-SubaddressString	OPTIONAL,
	basicServiceGroup	[3] BasicServiceCode	OPTIONAL,
	...}

CCBS-Index  ::= INTEGER (1..maxNumOfCCBS-Requests)

InterrogateSS-Res ::= CHOICE {
	ss-Status		[0] SS-Status,
	basicServiceGroupList	[2] BasicServiceGroupList,
	forwardingFeatureList	[3] ForwardingFeatureList,
	genericServiceInfo	[4]	GenericServiceInfo }

USSD-Arg ::= SEQUENCE {
	ussd-DataCodingScheme	USSD-DataCodingScheme,
	ussd-String	USSD-String,
	... ,
	alertingPattern	AlertingPattern	OPTIONAL,
	msisdn		[0] ISDN-AddressString	OPTIONAL }

USSD-Res ::= SEQUENCE {
	ussd-DataCodingScheme	USSD-DataCodingScheme,
	ussd-String	USSD-String,
	...}

USSD-DataCodingScheme ::= OCTET STRING (SIZE (1))
	-- The structure of the USSD-DataCodingScheme is defined by
	-- the Cell Broadcast Data Coding Scheme as described in
	-- TS 3GPP TS 23.038 [25]

USSD-String ::= OCTET STRING (SIZE (1..maxUSSD-StringLength))
	-- The structure of the contents of the USSD-String is dependent
	-- on the USSD-DataCodingScheme as described in TS 3GPP TS 23.038 [25].

maxUSSD-StringLength  INTEGER ::= 160

Password ::= NumericString
	(FROM ("0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"))
	(SIZE (4))

GuidanceInfo ::= ENUMERATED {
	enterPW  (0),
	enterNewPW  (1),
	enterNewPW-Again  (2)}
	-- How this information is really delivered to the subscriber
	-- (display, announcement, ...) is not part of this
	-- specification.

SS-List ::= SEQUENCE SIZE (1..maxNumOfSS) OF
				SS-Code

maxNumOfSS  INTEGER ::= 30

SS-InfoList ::= SEQUENCE SIZE (1..maxNumOfSS) OF
				SS-Info

BasicServiceGroupList ::= SEQUENCE SIZE (1..maxNumOfBasicServiceGroups) OF
				BasicServiceCode

maxNumOfBasicServiceGroups  INTEGER ::= 13

SS-InvocationNotificationArg ::= SEQUENCE {
	imsi			[0] IMSI,
	msisdn		[1] ISDN-AddressString,
	ss-Event		[2] SS-Code,
	-- The following SS-Code values are allowed :
	-- ect		SS-Code ::= '00110001'B
	-- multiPTY	SS-Code ::= '01010001'B
	-- cd		SS-Code ::= '00100100'B
	-- ccbs		SS-Code ::= '01000100'B
	ss-EventSpecification	[3] SS-EventSpecification	OPTIONAL,
	extensionContainer	[4] ExtensionContainer	OPTIONAL,
	...,
	b-subscriberNumber	[5]	ISDN-AddressString	OPTIONAL,
	ccbs-RequestState	[6]	CCBS-RequestState	OPTIONAL
	}

CCBS-RequestState ::= ENUMERATED {
	request  	(0),
	recall  	(1),
	active  	(2),
	completed	(3),
	suspended	(4),
	frozen	(5),
	deleted	(6)
	}

SS-InvocationNotificationRes ::= SEQUENCE {
	extensionContainer	ExtensionContainer	OPTIONAL,
	...
	}

SS-EventSpecification ::= SEQUENCE SIZE (1..maxEventSpecification) OF
				AddressString

maxEventSpecification  INTEGER ::= 2

RegisterCC-EntryArg ::= SEQUENCE {
	ss-Code		[0]	SS-Code,
	ccbs-Data		[1]	CCBS-Data	OPTIONAL,
	...}

CCBS-Data ::= SEQUENCE {
	ccbs-Feature	[0]	CCBS-Feature,
	translatedB-Number	[1]	ISDN-AddressString,
	serviceIndicator	[2]	ServiceIndicator	OPTIONAL,
	callInfo		[3]	ExternalSignalInfo,
	networkSignalInfo	[4]	ExternalSignalInfo,
	...}

ServiceIndicator ::= BIT STRING {
	clir-invoked (0),
	camel-invoked (1)} (SIZE(2..32)) 
	-- exception handling:
	-- bits 2 to 31 shall be ignored if received and not understood

RegisterCC-EntryRes ::= SEQUENCE {
	ccbs-Feature	[0] CCBS-Feature	OPTIONAL,
	...}

EraseCC-EntryArg ::= SEQUENCE {
	ss-Code		[0]	SS-Code,
	ccbs-Index	[1]	CCBS-Index	OPTIONAL,
	...}

EraseCC-EntryRes ::= SEQUENCE {
	ss-Code		[0]	SS-Code,
	ss-Status		[1] SS-Status	OPTIONAL,
	...}

END
