_COSEMpdu ::= CHOICE
{
    InitiateRequest [1] _InitiateRequest,
    ReadRequest [5] _ReadRequest,
    WriteRequest [6] _WriteRequest,
    InitiateResponse [8] _InitiateResponse,
    ReadResponse [12] _ReadResponse,
    WriteResponse [13] _WriteResponse,
    ConfirmedServiceError [14] _ConfirmedServiceError,
    DataNotification [15] _DataNotification,
    UnconfirmedWriteRequest [22] _UnconfirmedWriteRequest,
    InformationReportRequest [24] _InformationReportRequest,
    glo_InitiateRequest [33] _OctetString,
    glo_ReadRequest [37] _OctetString,
    glo_WriteRequest [38] _OctetString,
    glo_InitiateResponse [40] _OctetString,
    glo_ReadResponse [44] _OctetString,
    glo_WriteResponse [45] _OctetString,
    glo_ConfirmedServiceError [46] _OctetString,
    glo_UnconfirmedWriteRequest [54] _OctetString,
    glo_InformationReportRequest [56] _OctetString,
    ded_InitiateRequest [65] _OctetString,
    ded_ReadRequest [69] _OctetString,
    ded_WriteRequest [70] _OctetString,
    ded_InitiateResponse [72] _OctetString,
    ded_ReadResponse [76] _OctetString,
    ded_WriteResponse [77] _OctetString,
    ded_ConfirmedServiceError [78] _OctetString,
    ded_UnconfirmedWriteRequest [86] _OctetString,
    ded_InformationReportRequest [88] _OctetString,
    AssociationRequest [96] _AssociationRequest,
    AssociationResponse [97] _AssociationResponse,
    ReleaseRequest [98] _ReleaseRequest,
    ReleaseResponse [99] _ReleaseResponse,
    GetRequest [192] _GetRequest,
    SetRequest [193] _SetRequest,
    EventNotificationRequest [194] _EventNotificationRequest,
    ActionRequest [195] _ActionRequest,
    GetResponse [196] _GetResponse,
    SetResponse [197] _SetResponse,
    ActionResponse [199] _ActionResponse,
    glo_GetRequest [200] _OctetString,
    glo_SetRequest [201] _OctetString,
    glo_ActionRequest [203] _OctetString,
    glo_GetResponse [204] _OctetString,
    glo_SetResponse [205] _OctetString,
    glo_ActionResponse [207] _OctetString,
    ded_GetRequest [208] _OctetString,
    ded_SetRequest [209] _OctetString,
    ded_EventNotificationRequest [210] _OctetString,
    ded_ActionRequest [211] _OctetString,
    ded_GetResponse [212] _OctetString,
    ded_SetResponse [213] _OctetString,
    ded_ActionResponse [215] _OctetString,
    ExceptionResponse [216] _ExceptionResponse,
    AccessRequest [217] _AccessRequest,
    AccessResponse [218] _AccessResponse,
    GeneralGloCiphering [219] _GeneralGloCiphering,
    GeneralDedCiphering [220] _GeneralDedCiphering,
    GeneralCiphering [221] _GeneralCiphering,
    GeneralSigning [223] _GeneralSigning,
    GeneralBlockTransfer [224] _GeneralBlockTransfer,
    Data [255] _Data
}

_ACSERequirement ::= BERBITSTR

_ACSEServiceProvider ::= BERUNSIGNED8

_ACSEServiceUser ::= BERUNSIGNED8

_AEQualifier ::= BEROCTETSTR

_APTitle ::= BEROCTETSTR

_Access ::= ENUMERATED
{
    Other (0),
    ScopeOfAccessViolated (1),
    ObjectAccessInvalid (2),
    HardwareFault (3),
    ObjectUnavailable (4)
}

_AccessRequest ::= SEQUENCE
{
    LongInvokeIdAndPriority _LongInvokeIdAndPriority ,
    DateTime _OctetString ,
    AccessRequestBody _AccessRequestBody
}

_AccessRequestAction ::= SEQUENCE
{
    MethodDescriptor _MethodDescriptor
}

_AccessRequestBody ::= SEQUENCE
{
    AccessRequestSpecification _ListOfAccessRequestSpecification ,
    AccessRequestListOfData _ListOfData
}

_AccessRequestGet ::= SEQUENCE
{
    AttributeDescriptor _AttributeDescriptor
}

_AccessRequestGetWithSelection ::= SEQUENCE
{
    AttributeDescriptor _AttributeDescriptor ,
    AccessSelection _SelectiveAccessDescriptor
}

_AccessRequestSet ::= SEQUENCE
{
    AttributeDescriptor _AttributeDescriptor
}

_AccessRequestSetWithSelection ::= SEQUENCE
{
    AttributeDescriptor _AttributeDescriptor ,
    AccessSelection _SelectiveAccessDescriptor
}

_AccessRequestSpecification ::= CHOICE
{
    AccessRequestGet [1] _AccessRequestGet,
    AccessRequestSet [2] _AccessRequestSet,
    AccessRequestAction [3] _AccessRequestAction,
    AccessRequestGetWithSelection [4] _AccessRequestGetWithSelection,
    AccessRequestSetWithSelection [5] _AccessRequestSetWithSelection
}

_AccessResponse ::= SEQUENCE
{
    LongInvokeIdAndPriority _LongInvokeIdAndPriority ,
    DateTime _OctetString ,
    AccessResponseBody _AccessResponseBody
}

_AccessResponseAction ::= SEQUENCE
{
    Result _ActionResult
}

_AccessResponseBody ::= SEQUENCE
{
    AccessRequestSpecification _ListOfAccessRequestSpecification OPTIONAL,
    AccessResponseListOfData _ListOfData ,
    AccessResponseSpecification _ListOfAccessResponseSpecification
}

_AccessResponseGet ::= SEQUENCE
{
    Result _DataAccessResult
}

_AccessResponseSet ::= SEQUENCE
{
    Result _DataAccessResult
}

_AccessResponseSpecification ::= CHOICE
{
    AccessResponseGet [1] _AccessResponseGet,
    AccessResponseSet [2] _AccessResponseSet,
    AccessResponseAction [3] _AccessResponseAction
}

_ActionRequest ::= CHOICE
{
    ActionRequestNormal [1] _ActionRequestNormal,
    ActionRequestForNextPBlock [2] _ActionRequestForNextPBlock,
    ActionRequestWithList [3] _ActionRequestWithList,
    ActionRequestWithFirstPBlock [4] _ActionRequestWithFirstPBlock,
    ActionRequestWithListAndFirstPBlock [5] _ActionRequestWithListAndWithFirstPBlock,
    ActionRequestWithPBlock [6] _ActionRequestWithPBlock
}

_ActionRequestForNextPBlock ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    BlockNumber _Unsigned32
}

_ActionRequestNormal ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    MethodDescriptor _MethodDescriptor ,
    MethodInvocationParameters _Data OPTIONAL
}

_ActionRequestWithFirstPBlock ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    MethodDescriptor _MethodDescriptor ,
    PBlock _DataBlock_SA
}

_ActionRequestWithList ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    MethodDescriptorList _ListOfMethodDescriptor ,
    MethodInvocationParameters _ListOfData
}

_ActionRequestWithListAndWithFirstPBlock ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    MethodDescriptorList _ListOfMethodDescriptor ,
    PBlock _DataBlock_SA
}

_ActionRequestWithPBlock ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    PBlock _DataBlock_SA
}

_ActionResponse ::= CHOICE
{
    ActionResponseNormal [1] _ActionResponseNormal,
    ActionResponseWithPBlock [2] _ActionResponseWithPBlock,
    ActionResponseWithList [3] _ActionResponseWithList,
    ActionResponseForNextPBlock [4] _ActionResponseForNextPBlock
}

_ActionResponseForNextPBlock ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    BlockNumber _Unsigned32
}

_ActionResponseNormal ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    Result _ActionResult ,
    ReturnParameters _GetDataResult OPTIONAL
}

_ActionResponseWithList ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    ListOfSingleActionResponse _ListOfSingleActionResponse
}

_ActionResponseWithPBlock ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    PBlock _DataBlock_SA
}

_ActionResult ::= ENUMERATED
{
    Success (0),
    HardwareFault (1),
    TemporaryFailure (2),
    ReadWriteDenied (3),
    ObjectUndefined (4),
    ObjectClassInconsistent (9),
    ObjectUnavailable (11),
    TypeUnmatched (12),
    ScopeOfAccessViolated (13),
    DataBlockUnavailable (14),
    LongActionAborted (15),
    NoLongActionInProgress (16),
    OtherReason (250)
}

_AgreedKey ::= SEQUENCE
{
    KeyParameters _OctetString ,
    KeyCipheredData _OctetString
}

_ApplicationContextName ::= BEROBJECTIDENTIFIER

_ApplicationReference ::= ENUMERATED
{
    Other (0),
    TimeElapsed (1),
    ApplicationUnreachable (2),
    ApplicationReferenceInvalid (3),
    ApplicationContextUnsupported (4),
    ProviderCommunicationError (5),
    DecipheringError (6)
}

_Array ::= SEQUENCEOFCHOICE _Data

_AssociationRequest ::= BERSEQUENCE
{
    ProtocolVersion [ CONTEXT + 0 ] _ProtocolVersion OPTIONAL,
    ApplicationContextName [ CONTEXT + CONSTRUCTED + 1 ] [ 6 ] _ApplicationContextName ,
    CalledAPTitle [ CONTEXT + CONSTRUCTED + 2 ] [ 4 ] _APTitle OPTIONAL,
    CalledAEQualifier [ CONTEXT + CONSTRUCTED + 3 ] [ 4 ] _AEQualifier OPTIONAL,
    CalledAPInvocationId [ CONTEXT + CONSTRUCTED + 4 ] [ 2 ] _InvocationId OPTIONAL,
    CalledAEInvocationId [ CONTEXT + CONSTRUCTED + 5 ] [ 2 ] _InvocationId OPTIONAL,
    CallingAPTitle [ CONTEXT + CONSTRUCTED + 6 ] [ 4 ] _APTitle OPTIONAL,
    CallingAEQualifier [ CONTEXT + CONSTRUCTED + 7 ] [ 4 ] _AEQualifier OPTIONAL,
    CallingAPInvocationId [ CONTEXT + CONSTRUCTED + 8 ] [ 2 ] _InvocationId OPTIONAL,
    CallingAEInvocationId [ CONTEXT + CONSTRUCTED + 9 ] [ 2 ] _InvocationId OPTIONAL,
    SenderACSERequirements [ CONTEXT + 10 ] _ACSERequirement OPTIONAL,
    MechanismName [ CONTEXT + 11 ] _MechanismName OPTIONAL,
    CallingAuthenticationValue [ CONTEXT + CONSTRUCTED + 12 ] [ 128 ] _AuthenticationValue OPTIONAL,
    ImplementationInformation [ CONTEXT + 29 ] _ImplementationData OPTIONAL,
    UserInformation [ CONTEXT + CONSTRUCTED + 30 ] [ 4 ] _BERCOSEMpdu OPTIONAL
}

_AssociationResponse ::= BERSEQUENCE
{
    ProtocolVersion [ CONTEXT + 0 ] _ProtocolVersion OPTIONAL,
    ApplicationContextName [ CONTEXT + CONSTRUCTED + 1 ] [ 6 ] _ApplicationContextName ,
    AssociationResult [ CONTEXT + CONSTRUCTED + 2 ] [ 2 ] _AssociationResult ,
    ResultSourceDiagnostic [ CONTEXT + CONSTRUCTED + 3 ] _ResultSourceDiagnostic ,
    RespondingAPTitle [ CONTEXT + CONSTRUCTED + 4 ] [ 4 ] _APTitle OPTIONAL,
    RespondingAEQualifier [ CONTEXT + CONSTRUCTED + 5 ] [ 4 ] _AEQualifier OPTIONAL,
    RespondingAPInvocationId [ CONTEXT + CONSTRUCTED + 6 ] [ 2 ] _InvocationId OPTIONAL,
    RespondingAEInvocationId [ CONTEXT + CONSTRUCTED + 7 ] [ 2 ] _InvocationId OPTIONAL,
    ResponderACSERequirement [ CONTEXT + 8 ] _ACSERequirement OPTIONAL,
    MechanismName [ CONTEXT + 9 ] _MechanismName OPTIONAL,
    RespondingAuthenticationValue [ CONTEXT + CONSTRUCTED + 10 ] [ 128 ] _AuthenticationValue OPTIONAL,
    UserInformation [ CONTEXT + CONSTRUCTED + 30 ] [ 4 ] _BERCOSEMpdu OPTIONAL
}

_AssociationResult ::= BERUNSIGNED8

_AttributeDescriptor ::= SEQUENCE
{
    ClassId _ClassId ,
    InstanceId _ObjectInstanceId ,
    AttributeId _ObjectAttributeId
}

_AttributeDescriptorWithSelection ::= SEQUENCE
{
    AttributeDescriptor _AttributeDescriptor ,
    AccessSelection _SelectiveAccessDescriptor OPTIONAL
}

_AuthenticationValue ::= BEROCTETSTR

_BERCOSEMpdu ::= BERCOSEMPDU

_Bcd ::= INTEGER8

_BitString ::= BITSTR

_BlockControl ::= UNSIGNED8

_BlockNumberAccess ::= SEQUENCE
{
    BlockNumber _Unsigned16
}

_Boolean ::= BOOLEAN

_ClassId ::= UNSIGNED16

_ConfirmedServiceError ::= SEQUENCE
{
    Service _Unsigned8 ,
    ServiceError _ServiceError
}

_Conformance ::= ENUMERATEDBITS
{
    Reserved0 (0),
    GeneralProtection (1),
    GeneralBlockTransfer (2),
    Read (3),
    Write (4),
    UnconfirmedWrite (5),
    Reserved6 (6),
    Reserved7 (7),
    Attribute0SupportedWithSet (8),
    PriorityMgmtSupported (9),
    Attribute0SupportedWithGet (10),
    Attribute0Supported (10),
    BlockTransferWithGetOrRead (11),
    BlockTransferWithGet (11),
    BlockTransferWithSetOrWrite (12),
    BlockTransferWithSet (12),
    BlockTransferWithAction (13),
    MultipleReferences (14),
    InformationReport (15),
    DataNotification (16),
    Access (17),
    ParametrizedAccess (18),
    Get (19),
    Set (20),
    SelectiveAccess (21),
    EventNotification (22),
    Action (23)
}

_Data ::= CHOICE
{
    NullData [0] _NullData,
    Array [1] _Array,
    Structure [2] _Structure,
    Boolean [3] _Boolean,
    BitString [4] _BitString,
    DoubleLong [5] _Integer32,
    DoubleLongUnsigned [6] _Unsigned32,
    FloatingPoint [7] _FloatingPoint,
    OctetString [9] _OctetString,
    VisibleString [10] _VisibleString,
    UTF8String [12] _UTF8String,
    Bcd [13] _Bcd,
    Integer [15] _Integer8,
    Long [16] _Integer16,
    Unsigned [17] _Unsigned8,
    LongUnsigned [18] _Unsigned16,
    Long64 [20] _Integer64,
    Long64Unsigned [21] _Unsigned64,
    Enum [22] _Enum,
    Float32 [23] _Float32,
    Float64 [24] _Float64,
    DateTime [25] _DateTime,
    Date [26] _Date,
    Time [27] _Time,
    DontCare [255] _DontCare
}

_DataAccessResult ::= ENUMERATED
{
    Success (0),
    HardwareFault (1),
    TemporaryFailure (2),
    ReadWriteDenied (3),
    ObjectUndefined (4),
    ObjectClassInconsistent (9),
    ObjectUnavailable (11),
    TypeUnmatched (12),
    ScopeOfAccessViolated (13),
    DataBlockUnavailable (14),
    LongGetOrReadAborted (15),
    NoLongGetOrReadInProgress (16),
    LongSetOrWriteAborted (17),
    NoLongSetOrWriteInProgress (18),
    DataBlockNumberInvalid (19),
    OtherReason (250)
}

_DataBlockGResult ::= CHOICE
{
    RawData [0] _OctetString,
    DataAccessResult [1] _DataAccessResult
}

_DataBlockResult ::= SEQUENCE
{
    LastBlock _Boolean ,
    BlockNumber _Unsigned16 ,
    RawData _OctetString
}

_DataBlock_G ::= SEQUENCE
{
    LastBlock _Boolean ,
    BlockNumber _Unsigned32 ,
    Result _DataBlockGResult
}

_DataBlock_SA ::= SEQUENCE
{
    LastBlock _Boolean ,
    BlockNumber _Unsigned32 ,
    RawData _OctetString
}

_DataNotification ::= SEQUENCE
{
    LongInvokeIdAndPriority _LongInvokeIdAndPriority ,
    DateTime _OctetString ,
    NotificationBody _NotificationBody
}

_Date ::= OCTETSTR(5)

_DateTime ::= OCTETSTR(12)

_Definition ::= ENUMERATED
{
    Other (0),
    ObjectUndefined (1),
    ObjectClassInconsistent (2),
    ObjectAttributeInconsistent (3)
}

_DontCare ::= NULL

_Enum ::= UNSIGNED8

_EventNotificationRequest ::= SEQUENCE
{
    Time _OctetString OPTIONAL,
    AttributeDescriptor _AttributeDescriptor ,
    AttributeValue _Data
}

_ExceptionResponse ::= SEQUENCE
{
    StateError _ExceptionStateError ,
    ServiceError _ExceptionServiceError
}

_ExceptionServiceError ::= ENUMERATED
{
    OperationNotPossible (1),
    ServiceNotSupported (2),
    OtherReason (3)
}

_ExceptionStateError ::= ENUMERATED
{
    ServiceNotAllowed (1),
    ServiceUnknown (2)
}

_Float32 ::= FLOATINGPOINT32

_Float64 ::= FLOATINGPOINT64

_FloatingPoint ::= OCTETSTR(4)

_GeneralBlockTransfer ::= SEQUENCE
{
    BlockControl _BlockControl ,
    BlockNumber _Unsigned16 ,
    BlockNumberAck _Unsigned16 ,
    BlockData _OctetString
}

_GeneralCiphering ::= SEQUENCE
{
    TransactionId _OctetString ,
    OriginatorSystemTitle _OctetString ,
    RecipientSystemTitle _OctetString ,
    DateTime _OctetString ,
    OtherInformation _OctetString ,
    KeyInfo _KeyInfo OPTIONAL,
    CipheredContent _OctetString
}

_GeneralDedCiphering ::= SEQUENCE
{
    SystemTitle _OctetString ,
    CipheredService _OctetString
}

_GeneralGloCiphering ::= SEQUENCE
{
    SystemTitle _OctetString ,
    CipheredService _OctetString
}

_GeneralSigning ::= SEQUENCE
{
    TransactionId _OctetString ,
    OriginatorSystemTitle _OctetString ,
    RecipientSystemTitle _OctetString ,
    DateTime _OctetString ,
    OtherInformation _OctetString ,
    Content _OctetString ,
    Signature _OctetString
}

_GetDataResult ::= CHOICE
{
    Data [0] _Data,
    DataAccessError [1] _DataAccessResult
}

_GetRequest ::= CHOICE
{
    GetRequestNormal [1] _GetRequestNormal,
    GetRequestForNextDataBlock [2] _GetRequestForNextDatablock,
    GetRequestWithList [3] _GetRequestWithList
}

_GetRequestForNextDatablock ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    BlockNumber _Unsigned32
}

_GetRequestNormal ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    AttributeDescriptor _AttributeDescriptor ,
    AccessSelection _SelectiveAccessDescriptor OPTIONAL
}

_GetRequestWithList ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    AttributeDescriptorList _ListOfAttributeDescriptorWithSelection
}

_GetResponse ::= CHOICE
{
    GetResponseNormal [1] _GetResponseNormal,
    GetResponseWithDataBlock [2] _GetResponseWithDataBlock,
    GetResponseWithList [3] _GetResponseWithList
}

_GetResponseNormal ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    Result _GetDataResult
}

_GetResponseWithDataBlock ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    Result _DataBlock_G
}

_GetResponseWithList ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    Result _ListOfGetDataResult
}

_HardwareResource ::= ENUMERATED
{
    Other (0),
    MemoryUnavailable (1),
    ProcessorResourceUnavailable (2),
    MassStorageUnavailable (3),
    OtherResourceUnavailable (4)
}

_IdentifiedKey ::= SEQUENCE
{
    KeyId _KeyId
}

_ImplementationData ::= BEROCTETSTR

_InformationReportRequest ::= SEQUENCE
{
    CurrentTime _OctetString OPTIONAL,
    ListOfVariableAccessSpecification _ListOfVariableAccessSpecifications ,
    ListOfData _ListOfData
}

_Initiate ::= ENUMERATED
{
    Other (0),
    DlmsVersionTooLow (1),
    IncompatibleConformance (2),
    PduSizeTooShort (3),
    RefusedByTheVDEHandler (4)
}

_InitiateRequest ::= SEQUENCE
{
    DedicatedKey _OctetString OPTIONAL,
    ResponseAllowed _Boolean OPTIONAL,
    ProposedQualityOfService _Integer8 OPTIONAL,
    ProposedDlmsVersionNumber _Unsigned8 ,
    ProposedConformance _Conformance ,
    ProposedMaxPduSize _Unsigned16
}

_InitiateResponse ::= SEQUENCE
{
    NegotiatedQualityOfService _Integer8 OPTIONAL,
    NegotiatedDlmsVersionNumber _Unsigned8 ,
    NegotiatedConformance _Conformance ,
    NegotiatedMaxPduSize _Unsigned16 ,
    VaaName _ObjectName
}

_Integer16 ::= INTEGER16

_Integer32 ::= INTEGER32

_Integer64 ::= INTEGER64

_Integer8 ::= INTEGER8

_InvocationId ::= BERUNSIGNED8

_InvokeIdAndPriority ::= UNSIGNED8

_KekId ::= ENUMERATED
{
    MasterKey (0)
}

_KeyId ::= ENUMERATED
{
    GlobalUnicastEncryptionKey (0),
    GlobalBroadcastEncryptionKey (1)
}

_KeyInfo ::= CHOICE
{
    IdentifiedKey [0] _IdentifiedKey,
    WrappedKey [1] _WrappedKey,
    AgreedKey [2] _AgreedKey
}

_ListOfAccessRequestSpecification ::= SEQUENCEOF _AccessRequestSpecification

_ListOfAccessResponseSpecification ::= SEQUENCEOF _AccessResponseSpecification

_ListOfAttributeDescriptorWithSelection ::= SEQUENCEOF _AttributeDescriptorWithSelection

_ListOfData ::= SEQUENCEOFCHOICE _Data

_ListOfDataAccessResult ::= SEQUENCEOF _DataAccessResult

_ListOfGetDataResult ::= SEQUENCEOFCHOICE _GetDataResult

_ListOfMethodDescriptor ::= SEQUENCEOF _MethodDescriptor

_ListOfSingleActionResponse ::= SEQUENCEOF _SingleActionResponse

_ListOfVariableAccessSpecifications ::= SEQUENCEOFCHOICE _VariableAccessSpecification

_LoadDataSet ::= ENUMERATED
{
    Other (0),
    PrimitiveOutOfSequence (1),
    NotLoadable (2),
    DatasetSizeTooLarge (3),
    NotAwaitedSegment (4),
    InterpretationFailure (5),
    StorageFailure (6),
    DataSetNotReady (7)
}

_LongInvokeIdAndPriority ::= UNSIGNED32

_MechanismName ::= BEROBJECTIDENTIFIER

_MethodDescriptor ::= SEQUENCE
{
    ClassId _ClassId ,
    InstanceId _ObjectInstanceId ,
    MethodId _ObjectMethodId
}

_NotificationBody ::= SEQUENCE
{
    DataValue _Data
}

_NullData ::= NULL

_ObjectAttributeId ::= INTEGER8

_ObjectInstanceId ::= OCTETSTR(6)

_ObjectMethodId ::= INTEGER8

_ObjectName ::= INTEGER16

_OctetString ::= OCTETSTR(-1)

_OtherError ::= UNSIGNED8

_ParametrisedAccess ::= SEQUENCE
{
    VariableName _ObjectName ,
    Selector _Unsigned8 ,
    Parameter _Data
}

_ProtocolVersion ::= BERBITSTR

_ReadDataBlockAccess ::= SEQUENCE
{
    LastBlock _Boolean ,
    BlockNumber _Unsigned16 ,
    RawData _OctetString
}

_ReadRequest ::= SEQUENCEOFCHOICE _VariableAccessSpecification

_ReadResponse ::= SEQUENCEOFCHOICE _SingleReadResponse

_ReleaseRequest ::= BERSEQUENCE
{
    Reason [ CONTEXT + 0 ] _ReleaseRequestReason OPTIONAL,
    UserInformation [ CONTEXT + CONSTRUCTED + 30 ] [ 4 ] _BERCOSEMpdu OPTIONAL
}

_ReleaseRequestReason ::= BERENUMERATED
{
    Normal (0),
    Urgent (1),
    UserDefined (30)
}

_ReleaseResponse ::= BERSEQUENCE
{
    Reason [ CONTEXT + 0 ] _ReleaseResponseReason OPTIONAL,
    UserInformation [ CONTEXT + CONSTRUCTED + 30 ] [ 4 ] _BERCOSEMpdu OPTIONAL
}

_ReleaseResponseReason ::= BERENUMERATED
{
    Normal (0),
    NotFinished (1),
    UserDefined (30)
}

_ResultSourceDiagnostic ::= BERCHOICE
{
    ACSEServiceUser [ CONTEXT + CONSTRUCTED + 1 ] [ 2 ] _ACSEServiceUser ,
    ACSEServiceProvider [ CONTEXT + CONSTRUCTED + 2 ] [ 2 ] _ACSEServiceProvider
}

_SelectiveAccessDescriptor ::= SEQUENCE
{
    AccessSelector _Unsigned8 ,
    AccessParameters _Data
}

_Service ::= ENUMERATED
{
    Other (0),
    PduSize (1),
    ServiceUnsupported (2)
}

_ServiceError ::= CHOICE
{
    ApplicationReference [0] _ApplicationReference,
    HardwareResource [1] _HardwareResource,
    VdeStateError [2] _VdeStateError,
    Service [3] _Service,
    Definition [4] _Definition,
    Access [5] _Access,
    Initiate [6] _Initiate,
    LoadDataSet [7] _LoadDataSet,
    Task [9] _Task,
    OtherError [10] _OtherError
}

_SetRequest ::= CHOICE
{
    SetRequestNormal [1] _SetRequestNormal,
    SetRequestWithFirstDataBlock [2] _SetRequestWithFirstDataBlock,
    SetRequestWithDataBlock [3] _SetRequestWithDataBlock,
    SetRequestWithList [4] _SetRequestWithList,
    SetRequestWithListAndWithFirstDatablock [5] _SetRequestWithListAndWithFirstDatablock
}

_SetRequestNormal ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    AttributeDescriptor _AttributeDescriptor ,
    AccessSelection _SelectiveAccessDescriptor OPTIONAL,
    Value _Data
}

_SetRequestWithDataBlock ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    DataBlock _DataBlock_SA
}

_SetRequestWithFirstDataBlock ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    AttributeDescriptor _AttributeDescriptor ,
    AccessSelection _SelectiveAccessDescriptor OPTIONAL,
    DataBlock _DataBlock_SA
}

_SetRequestWithList ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    AttributeDescriptorList _ListOfAttributeDescriptorWithSelection ,
    ValueList _ListOfData
}

_SetRequestWithListAndWithFirstDatablock ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    AttributeDescriptorList _ListOfAttributeDescriptorWithSelection ,
    DataBlock _DataBlock_SA
}

_SetResponse ::= CHOICE
{
    SetResponseNormal [1] _SetResponseNormal,
    SetResponseForDataBlock [2] _SetResponseForDataBlock,
    SetResponseForLastDataBlock [3] _SetResponseForLastDataBlock,
    SetResponseForLastDataBlockWithList [4] _SetResponseForLastDataBlockWithList,
    SetResponseWithList [5] _SetResponseWithList
}

_SetResponseForDataBlock ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    BlockNumber _Unsigned32
}

_SetResponseForLastDataBlock ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    Result _DataAccessResult ,
    BlockNumber _Unsigned32
}

_SetResponseForLastDataBlockWithList ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    Result _ListOfDataAccessResult ,
    BlockNumber _Unsigned32
}

_SetResponseNormal ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    Result _DataAccessResult
}

_SetResponseWithList ::= SEQUENCE
{
    InvokeIdAndPriority _InvokeIdAndPriority ,
    Result _ListOfDataAccessResult
}

_SingleActionResponse ::= SEQUENCE
{
    Result _ActionResult ,
    ReturnParameters _GetDataResult OPTIONAL
}

_SingleReadResponse ::= CHOICE
{
    Data [0] _Data,
    DataAccessError [1] _DataAccessResult,
    DataBlockResult [2] _DataBlockResult,
    BlockNumber [3] _Unsigned16
}

_SingleWriteResponse ::= CHOICE
{
    Success [0] _NullData,
    DataAccessError [1] _DataAccessResult,
    BlockNumber [2] _Unsigned16
}

_Structure ::= SEQUENCEOFCHOICE _Data

_Task ::= ENUMERATED
{
    Other (0),
    NoRemoteControl (1),
    TiStopped (2),
    TiRunning (3),
    TiUnusable (4)
}

_Time ::= OCTETSTR(4)

_UTF8String ::= OCTETSTR(-1)

_UnconfirmedWriteRequest ::= SEQUENCE
{
    ListOfVariableAccessSpecification _ListOfVariableAccessSpecifications ,
    ListOfData _ListOfData
}

_Unsigned16 ::= UNSIGNED16

_Unsigned32 ::= UNSIGNED32

_Unsigned64 ::= UNSIGNED64

_Unsigned8 ::= UNSIGNED8

_VariableAccessSpecification ::= CHOICE
{
    VariableName [2] _ObjectName,
    ParameterisedAccess [4] _ParametrisedAccess,
    BlockNumberAccess [5] _BlockNumberAccess,
    ReadDataBlockAccess [6] _ReadDataBlockAccess,
    WriteDataBlockAccess [7] _WriteDataBlockAccess
}

_VdeStateError ::= ENUMERATED
{
    Other (0),
    NoDlmsContext (1),
    LoadingDataSet (2),
    StatusNochange (3),
    StatusInoperable (4)
}

_VisibleString ::= OCTETSTR(-1)

_WrappedKey ::= SEQUENCE
{
    KekId _KekId ,
    KeyCipheredData _OctetString
}

_WriteDataBlockAccess ::= SEQUENCE
{
    LastBlock _Boolean ,
    BlockNumber _Unsigned16
}

_WriteRequest ::= SEQUENCE
{
    ListOfVariableAccessSpecification _ListOfVariableAccessSpecifications ,
    ListOfData _ListOfData
}

_WriteResponse ::= SEQUENCEOFCHOICE _SingleWriteResponse