_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,
}

_NotificationBody ::= SEQUENCE
{
    DataValue _Data ,
}

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

_LongInvokeIdAndPriority ::= unsigned32

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

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

_AccessRequestGet ::= SEQUENCE
{
    AttributeDescriptor _AttributeDescriptor ,
}

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

_AccessRequestSet ::= SEQUENCE
{
    AttributeDescriptor _AttributeDescriptor ,
}

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

_AccessRequestAction ::= SEQUENCE
{
    MethodDescriptor _MethodDescriptor ,
}

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

_ListOfAccessRequestSpecification ::= SEQUENCEOF_AccessRequestSpecification

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

_AccessResponseGet ::= SEQUENCE
{
    Result _DataAccessResult ,
}

_AccessResponseSet ::= SEQUENCE
{
    Result _DataAccessResult ,
}

_AccessResponseAction ::= SEQUENCE
{
    Result _ActionResult ,
}

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

_ListOfAccessResponseSpecification ::= SEQUENCEOF_AccessResponseSpecification

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

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

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

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

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

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

_KekId ::= ENUMERATED
{
    MasterKey (0),
}

_IdentifiedKey ::= SEQUENCE
{
    KeyId _KeyId ,
}

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

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

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

_BlockControl ::= unsigned8

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

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

_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),
}

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

_Array ::= SEQUENCEOFCHOICE_Data

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

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

_Bcd ::= integer8

_BlockNumberAccess ::= SEQUENCE
{
    BlockNumber _Unsigned16 ,
}

_BitString ::= bitstr

_Boolean ::= boolean

_ClassId ::= unsigned16

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

_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,
    CompactArray [19]_CompactArray,
    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,
}

_CompactArray ::= SEQUENCE
{
    ContentDescription _TypeDescription ,
    ArrayContent _OctetString ,
}

_TypeDescription ::= CHOICE
{
    NullData [0]_NullData,
    Array [1]_ArrayTypeDescription,
    Structure [2]_StructureTypeDescription,
    Boolean [3]_NullData,
    BitString [4]_NullData,
    DoubleLong [5]_NullData,
    DoubleLongUnsigned [6]_NullData,
    FloatingPoint [7]_NullData,
    OctetString [9]_NullData,
    VisibleString [10]_NullData,
    UTF8String [12]_NullData,
    Bcd [13]_NullData,
    Integer [15]_NullData,
    Long [16]_NullData,
    Unsigned [17]_NullData,
    LongUnsigned [18]_NullData,
    Long64 [20]_NullData,
    Long64Unsigned [21]_NullData,
    Enum [22]_NullData,
    Float32 [23]_NullData,
    Float64 [24]_NullData,
    DateTime [25]_NullData,
    Date [26]_NullData,
    Time [27]_NullData,
    DontCare [255]_NullData,
}

_StructureTypeDescription ::= SEQUENCEOF_TypeDescription

_ArrayTypeDescription ::= SEQUENCE
{
    NumberOfElements _Unsigned16 ,
    TypeDescription _TypeDescription ,
}

_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),
}

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

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

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

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

_Date ::= octetstr

_DateTime ::= octetstr

_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

_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),
}

_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

_InvokeIdAndPriority ::= unsigned8

_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),
}

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

_NullData ::= null

_ObjectAttributeId ::= integer8

_ObjectInstanceId ::= octetstr

_ObjectMethodId ::= integer8

_ObjectName ::= integer16

_OctetString ::= octetstr

_OtherError ::= unsigned8

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

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

_ReadRequest ::= SEQUENCEOFCHOICE_VariableAccessSpecification

_ReadResponse ::= SEQUENCEOFCHOICE_SingleReadResponse

_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 ,
}

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

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

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

_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

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

_Unsigned16 ::= unsigned16

_Unsigned32 ::= unsigned32

_Unsigned64 ::= unsigned64

_Unsigned8 ::= unsigned8

_UTF8String ::= octetstr

_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

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

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

_WriteResponse ::= SEQUENCEOFCHOICE_SingleWriteResponse

_ReleaseRequest ::= SEQUENCE
{
    Reason _ReleaseRequestReason OPTIONAL,
    UserInformation _BERCOSEMpdu OPTIONAL,
}

_ReleaseResponse ::= SEQUENCE
{
    Reason _ReleaseResponseReason OPTIONAL,
    UserInformation _BERCOSEMpdu OPTIONAL,
}

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

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

_AssociationRequest ::= SEQUENCE
{
    ProtocolVersion _ProtocolVersion OPTIONAL,
    ApplicationContextName _ApplicationContextName ,
    CalledAPTitle _APTitle OPTIONAL,
    CalledAEQualifier _AEQualifier OPTIONAL,
    CalledAPInvocationId _InvocationId OPTIONAL,
    CalledAEInvocationId _InvocationId OPTIONAL,
    CallingAPTitle _APTitle OPTIONAL,
    CallingAEQualifier _AEQualifier OPTIONAL,
    CallingAPInvocationId _InvocationId OPTIONAL,
    CallingAEInvocationId _InvocationId OPTIONAL,
    SenderACSERequirements _ACSERequirement OPTIONAL,
    MechanismName _MechanismName OPTIONAL,
    CallingAuthenticationValue _AuthenticationValue OPTIONAL,
    ImplementationInformation _ImplementationData OPTIONAL,
    UserInformation _BERCOSEMpdu OPTIONAL,
}

_ACSERequirement ::= bitstr

_ProtocolVersion ::= bitstr

_APTitle ::= octetstr

_AEQualifier ::= octetstr

_InvocationId ::= unsigned8

_AuthenticationValue ::= octetstr

_ImplementationData ::= octetstr

_ApplicationContextName ::= berobjectidentifier

_MechanismName ::= berobjectidentifier

_AssociationResponse ::= SEQUENCE
{
    ProtocolVersion _ProtocolVersion OPTIONAL,
    ApplicationContextName _ApplicationContextName ,
    AssociationResult _AssociationResult ,
    ResultSourceDiagnostic _ResultSourceDiagnostic ,
    RespondingAPTitle _APTitle OPTIONAL,
    RespondingAEQualifier _AEQualifier OPTIONAL,
    RespondingAPInvocationId _InvocationId OPTIONAL,
    RespondingAEInvocationId _InvocationId OPTIONAL,
    ResponderACSERequirement _ACSERequirement OPTIONAL,
    MechanismName _MechanismName OPTIONAL,
    RespondingAuthenticationValue _AuthenticationValue OPTIONAL,
    UserInformation _BERCOSEMpdu OPTIONAL,
}

_AssociationResult ::= unsigned8

_ResultSourceDiagnostic ::= CHOICE
{
    ACSEServiceUser [0]_ACSEServiceUser,
    ACSEServiceProvider [0]_ACSEServiceProvider,
}

_ACSEServiceUser ::= unsigned8

_ACSEServiceProvider ::= unsigned8

_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),
}

_zDummy ::= SEQUENCE
{
    ConformanceBit _NullData ,
    Ignore _NullData ,
    Name _NullData ,
    Qty _NullData ,
}