-- Module SDHProtASN1 (G.774.3:02/2001)
-- See also ITU-T G.774.3 (02/2001)
-- See also the index of all ASN.1 assignments needed in this document

SDHProtASN1 {itu-t(0) recommendation(0) g(7) g774(774) hyphen(127) prot(3)
  informationModel(0) asn1Module(2) sdhmsp(0)} DEFINITIONS IMPLICIT TAGS ::=
BEGIN

-- EXPORTS everything
IMPORTS
  NameType
    FROM ASN1DefinedTypesModule {itu-t(0) recommendation m gnm(3100)
      informationModel(0) asn1Modules(2) asn1DefinedTypesModule(0)}
  RelativeDistinguishedName, ObjectInstance
    FROM CMIP-1 {joint-iso-itu-t ms(9) cmip(1) modules(0) protocol(3)}
  AdditionalInformation, ManagementExtension
    FROM Attribute-ASN1Module {joint-iso-itu-t ms(9) smi(3) part2(2)
      asn1Module(2) 1};

sdhProt OBJECT IDENTIFIER ::=
  {itu-t(0) recommendation(0) g(7) g774(774) hyphen(127) prot(3)
   informationModel(0)}

g774-03MObjectClass OBJECT IDENTIFIER ::= {sdhProt managedObjectClass(3)}

g774-03Attribute OBJECT IDENTIFIER ::= {sdhProt attribute(7)}

g774-03NameBinding OBJECT IDENTIFIER ::= {sdhProt nameBinding(6)}

g774-03Action OBJECT IDENTIFIER ::= {sdhProt action(9)}

g774-03Notification OBJECT IDENTIFIER ::= {sdhProt notification(10)}

g774-03Parameter OBJECT IDENTIFIER ::= {sdhProt parameter(5)}

g774-03Package OBJECT IDENTIFIER ::= {sdhProt package(4)}

-- default value definitions 
booleanTrueDefault Boolean ::= TRUE

-- supporting productions
AutoSwitchReason ::= CHOICE {
  waitToRestore  [0]  NULL,
  signalDegrade  [1]  NULL,
  signalFail     [2]  NULL
}

Boolean ::= BOOLEAN

FromAndToProtectionUnit ::= CHOICE {
  fromProtectionUnitNumber  [0]  RelativeDistinguishedName,
  toProtectionUnitNumber    [1]  RelativeDistinguishedName
}

--The fromProtectionUnitNumber is used for protecting protection unit in order to
--hold the name of the protected protection unit which has been protected by that
--protecting protection unit. The toProtectionUnitNumber is used for protected
--protection unit in order to hold the number of the protecting protection unit
--to which it has been switched to. In case of a MSP 1+1 system these parameters
--are not mandatory.
Integer ::= INTEGER

InvokeExerciseArg ::= SEQUENCE {
  protectionEntity  ProtectionEntity OPTIONAL, -- if absent, all PUs 
  otherInfo         SET OF ManagementExtension OPTIONAL
}

InvokeExerciseReply ::=
  SET OF
    SEQUENCE {protectionUnit  RelativeDistinguishedName,
              result          LastAttemptResult}

InvokeProtectionArg ::= SEQUENCE {
  switchType        SwitchType,
  protectionEntity  ProtectionEntity OPTIONAL, -- if absent, all PUs 
  otherInfo         SET OF ManagementExtension OPTIONAL
}

InvokeProtectionError ::= ENUMERATED {preempted(0), failure(1), timeout(2)}

LastAttemptResult ::= CHOICE {
  success  [0]  NULL, -- default value
  denied   [1]  NULL,
  fail     [2]  RxTxAPS
}

ProtectionDirection ::= ENUMERATED {transmit(0), receive(1), bidirectional(2)}

ProtectionEntity ::= SEQUENCE {
  protectedUnits   [0]  SEQUENCE OF RelativeDistinguishedName OPTIONAL,
  protectingUnits  [1]  SEQUENCE OF RelativeDistinguishedName OPTIONAL
}

--In case of a 1+1 non-revertive MSP system for a manual switch from the
--protecting protection unit to the protected one, the protectingUnits field
--shall be used and shall indicate the protection unit which has the channel
--number 0. If both fields are present they should be compatible sequences
ProtectionGroupType ::= ENUMERATED {
  plus(0), -- 1+1 (1 plus 1) or hot-standby 
  colon(1) -- M:N (M for N) --}

ProtectionMismatchStatus ::= SEQUENCE {
  uniBi      [0]  BOOLEAN,
  plusColon  [1]  BOOLEAN
}

ProtectionStatus ::=
  SET OF
    CHOICE {noRequest                          [0]  NULL,
            doNotRevert                        [1]  NULL,
            manualSwitch
              [2]  SEQUENCE {requestSource   [0]  RequestSource OPTIONAL,
                             switchStatus    [1]  SwitchStatus,
                             relatedChannel  [2]  FromAndToProtectionUnit
            },
            autoSwitch
              [3]  SEQUENCE {requestSource     [0]  RequestSource OPTIONAL,
                             switchStatus      [1]  SwitchStatus,
                             relatedChannel    [2]  FromAndToProtectionUnit,
                             autoSwitchReason  [3]  AutoSwitchReason},
            forcedSwitch
              [4]  SEQUENCE {requestSource   [0]  RequestSource OPTIONAL,
                             switchStatus    [1]  SwitchStatus,
                             relatedChannel  [2]  FromAndToProtectionUnit
            },
            lockout
              [5]  SEQUENCE {requestSource  [0]  RequestSource OPTIONAL,
                             switchStatus   [1]  SwitchStatus},
            releaseFailed                      [6]  NULL,
            protectionFailCondApsInvalid       [7]  BOOLEAN,
            protectionFailCondChannelMismatch  [8]  BOOLEAN}

ProtectionStatusParameter ::= SEQUENCE {
  oldProtectionStatus  ProtectionStatus,
  newProtectionStatus  ProtectionStatus,
  psDirection          ProtectionDirection DEFAULT bidirectional
}

ProtectionSwitchMode ::= ENUMERATED {bidirectional(0), unidirectional(1)}

ProtectionSwitchReportingInfo ::= SEQUENCE {
  protectingUnit  RelativeDistinguishedName,
  additionalInfo  AdditionalInformation
}

ProtectionUnit ::= CHOICE {
  protectingUnit  [0]  RelativeDistinguishedName,
  protectedUnit   [1]  RelativeDistinguishedName
}

ReleaseProtectionArg ::= SEQUENCE {
  switchType        SwitchType,
  protectionEntity  ProtectionEntity,
  otherInfo         SET OF ManagementExtension OPTIONAL
}

ReleaseProtectionError ::= ENUMERATED {failure(0), timeout(1)}

RequestSource ::= ENUMERATED {local(0), remote(1)}

ResourcePointer ::= CHOICE {
  null             NULL,
  objectInstances  SEQUENCE OF ObjectInstance
}

RxTxAPS ::= SEQUENCE {rxAPSvalue  [0]  INTEGER,
                      txAPSvalue  [1]  INTEGER
} -- APS byte 1 in low order byte , byte 2

-- in high order byte
SDHMSPriority ::= Integer(1..2)

-- 1 = high priority, 2 = low priority
SDHMSResourcePointer ::=
  ResourcePointer(WITH COMPONENTS {
                    ...,
                    objectInstances  (SIZE (1))
                  })

SwitchStatus ::= ENUMERATED {pending(0), completed(1), operateFailed(2)}

SwitchType ::= ENUMERATED {manual(0), forced(1), lockout(2)}

END
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D