-- *******************************************************************************
-- * Copyright (c) 2004, 2014  Ericsson AB
-- * All rights reserved. This program and the accompanying materials
-- * are made available under the terms of the Eclipse Public License v1.0
-- * which accompanies this distribution, and is available at
-- * http://www.eclipse.org/legal/epl-v10.html
-- *
-- * Contributors:
-- *   Zoltan Jasz - initial implementation and initial documentation
-- *   Abhishek Gupta
-- *   Attila Balasko
-- *   Endre Kulcsar
-- *   Gabor Bettesch
-- *   Gabor Szalai
-- *   Janos Kovesdi
-- *   Sandor Palugyai
-- *   Tibor Csondes
-- *******************************************************************************
-- 
--   File:               MobileDomainDefinitions.asn
--   Rev:                R9A
--   Prodnr:             CNL 113 368
--   Reference:          

MobileDomainDefinitions {ccitt (0) identified-organization (4) etsi (0)
			 mobileDomain (0) mobileDomainDefinitions (0) version1 (1)}

DEFINITIONS ::=
BEGIN

IMPORTS ;

-- Mobile DomainId

mobileDomainId OBJECT IDENTIFIER ::= {ccitt (0) identified-organization (4) etsi (0) mobileDomain (0)}

-- Mobile Subdomains

gsm-NetworkId OBJECT IDENTIFIER ::= 			{mobileDomainId gsm-Network (1)}
gsm-AccessId OBJECT IDENTIFIER ::= 			{mobileDomainId gsm-Access (2)}
gsm-OperationAndMaintenanceId OBJECT IDENTIFIER ::= 	{mobileDomainId gsm-Operation-Maintenance (3)}
gsm-MessagingId OBJECT IDENTIFIER ::= 			{mobileDomainId gsm-Messaging (4)}

-- Common Component Ids for structuring Mobile Subdomains

CommonComponentId ::= INTEGER (0..9)

ac-Id CommonComponentId ::= 0
as-Id CommonComponentId ::= 1
ase-Id CommonComponentId ::= 2
moduleId CommonComponentId ::= 3
er-Id CommonComponentId ::= 4

END -- MobileDomainDefinitions
