/////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018  Ericsson AB
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v2.0
// which accompanies this distribution, and is available at
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
/////////////////////////////////////////////////////////////////////////////////////
// Contributors:
// Akos Makovics
//
//  File:         UpcUa_Common.ttcn
//  Rev:          <RnXnn>
//  Prodnr:       CNL113861
/////////////////////////////////////////////////////////////////////////////////////

module OpcUa_Common {

  const integer Bad_TcpServerTooBusy := 2155675648;                     //0x807D0000, The server cannot process the request because it is too busy.
  const integer Bad_TcpMessageTypeInvalid := 2155741184;                //0x807E0000, The type of the message specified in the header invalid.
  const integer Bad_TcpSecureChannelUnknown := 2155806720;              //0x807F0000, The SecureChannelId and/or TokenId are not currently in use.
  const integer Bad_TcpMessageTooLarge := 2155872256;                   //0x80800000, The size of the message specified in the header is too large.
  const integer Bad_Timeout := 2148139008;                              //0x800A0000, The operation timed out.
  const integer Bad_TcpNotEnoughResources := 2155937792;                //0x80810000, There are not enough resources to process the request.
  const integer Bad_TcpInternalError := 2156003328;                     //0x80820000, An internal error occurred.
  const integer Bad_TcpEndpointUrlInvalid := 2156068864;                //0x80830000, The Server does not recognize the QueryString specified.
  const integer Bad_SecurityChecksFailed := 2148728832;                 //0x80130000, An error occurred verifying security.
  const integer Bad_RequestInterrupted := 2156134400;                   //0x80840000, The request could not be sent because of a network interruption.
  const integer Bad_RequestTimeout := 2156199936;                       //0x80850000, Timeout occurred while processing the request.
  const integer Bad_SecureChannelClosed := 2156265472;                  //0x80860000, The secure channel has been closed.
  const integer Bad_SecureChannelTokenUnknown := 2156331008;            //0x80870000, The token has expired or is not recognized.
  const integer Bad_CertificateUntrusted := 2156396544;                 //0x80880000, The sequence number is not valid.
  const integer Bad_CertificateTimeInvalid := 2148794368;               //0x80140000, The Certificate has expired or is not yet valid.
  const integer Bad_CertificateIssuerTimeInvalid := 2148859904;         //0x80150000, An Issuer Certificate has expired or is not yet valid.
  const integer Bad_CertificateUseNotAllowed := 2149056512;             //0x80180000, The Certificate may not be used for the requested operation.
  const integer Bad_CertificateIssuerUseNotAllowed := 2149122048;       //0x80190000, The Issuer Certificate may not be used for the requested operation.
  const integer Bad_CertificateRevocationUnknown := 2149253120;         //0x801B0000, It was not possible to determine if the Certificate has been revoked.
  const integer Bad_CertificateIssuerRevocationUnknown := 2149318656;   //0x801C0000, It was not possible to determine if the Issuer Certificate has been revoked.
  const integer Bad_CertificateRevoked := 2149384192;                   //0x801D0000, The certificate has been revoked.

  type enumerated CommonServiceResultCodes {
    Good,
    Good_CompletesAsynchronously,
    Good_SubscriptionTransferred,
    Bad_CertificateHostNameInvalid,
    Bad_CertificateChainIncomplete,
    Bad_CertificateIssuerRevocationUnknown,
    Bad_CertificateIssuerUseNotAllowed,
    Bad_CertificateIssuerTimeInvalid,
    Bad_CertificateIssuerRevoked,
    Bad_CertificateInvalid,
    Bad_CertificateRevocationUnknown,
    Bad_CertificateRevoked,
    Bad_CertificateTimeInvalid,
    Bad_CertificateUriInvalid,
    Bad_CertificateUntrusted,
    Bad_CertificateUseNotAllowed,
    Bad_CommunicationError,
    Bad_DataTypeIdUnknown,
    Bad_DecodingError,
    Bad_EncodingError,
    Bad_EncodingLimitsExceeded,
    Bad_IdentityTokenInvalid,
    Bad_IdentityTokenRejected,
    Bad_InternalError,
    Bad_InvalidArgument,
    Bad_InvalidState,
    Bad_InvalidTimestamp,
    Bad_LicenseExpired,
    Bad_LicenseLimitsExceeded,
    Bad_LicenseNotAvailable,
    Bad_NothingToDo,
    Bad_OutOfMemory,
    Bad_RequestCancelledByClient,
    Bad_RequestTooLarge,
    Bad_ResponseTooLarge,
    Bad_RequestHeaderInvalid,
    Bad_ResourceUnavailable,
    Bad_SecureChannelIdInvalid,
    Bad_SecurityChecksFailed,
    Bad_ServerHalted,
    Bad_ServerNotConnected,
    Bad_ServerUriInvalid,
    Bad_ServiceUnsupported,
    Bad_SessionIdInvalid,
    Bad_SessionClosed,
    Bad_SessionNotActivated,
    Bad_Shutdown,
    Bad_SubscriptionIdInvalid,
    Bad_Timeout,
    Bad_TimestampsToReturnInvalid,
    Bad_TooManyOperations,
    Bad_UnexpectedError,
    Bad_UnknownResponse,
    Bad_UserAccessDenied,
    Bad_ViewIdUnknown,
    Bad_ViewTimestampInvalid,
    Bad_ViewParameterMismatchInvalid,
    Bad_ViewVersionInvalid
  }

  type enumerated CommonOperationLevelResultCodes {
    Good_Clamped,
    Good_Overload,
    Uncertain,
    Bad,
    Bad_AttributeIdInvalid,
    Bad_BrowseDirectionInvalid,
    Bad_BrowseNameInvalid,
    Bad_ContentFilterInvalid,
    Bad_ContinuationPointInvalid,
    Bad_DataEncodingInvalid,
    Bad_DataEncodingUnsupported,
    Bad_EventFilterInvalid,
    Bad_FilterNotAllowed,
    Bad_FilterOperandInvalid,
    Bad_HistoryOperationInvalid,
    Bad_HistoryOperationUnsupported,
    Bad_IndexRangeInvalid,
    Bad_IndexRangeNoData,
    Bad_MonitoredItemFilterInvalid,
    Bad_MonitoredItemFilterUnsupported,
    Bad_MonitoredItemIdInvalid,
    Bad_MonitoringModeInvalid,
    Bad_NoCommunication,
    Bad_NoContinuationPoints,
    Bad_NodeClassInvalid,
    Bad_NodeIdInvalid,
    Bad_NodeIdUnknown,
    Bad_NoDeleteRights,
    Bad_NodeNotInView,
    Bad_NotFound,
    Bad_NotImplemented,
    Bad_NotReadable,
    Bad_NotSupported,
    Bad_NotWritable,
    Bad_ObjectDeleted,
    Bad_OutOfRange,
    Bad_ReferenceTypeIdInvalid,
    Bad_SecurityModeInsufficient,
    Bad_SourceNodeIdInvalid,
    Bad_StructureMissing,
    Bad_TargetNodeIdInvalid,
    Bad_TypeDefinitionInvalid,
    Bad_TypeMismatch,
    Bad_WaitingForInitialData
  }
}
