SpxBoolean = Boolean;
SpxSByte = ShortInt;
SpxByte = Byte;
SpxInt16 = SmallInt;
SpxUInt16 = Word;
SpxInt32 = Integer;
SpxUInt32 = Cardinal;
SpxInt64 = Int64;
SpxUInt64 = UInt64;
SpxFloat = Single;
SpxDouble = Double;
SpxString = String;
SpxDateTime = TDateTime;
SpxGuid = TGUID;
SpxUInt = Cardinal;
SpxInt = Integer;
SpxStatusCode = SpxUInt32;
SpxBooleanArray = array of SpxBoolean;
SpxSByteArray = array of SpxSByte;
SpxByteArray = array of SpxByte;
SpxInt16Array = array of SpxInt16;
SpxUInt16Array = array of SpxUInt16;
SpxInt32Array = array of SpxInt32;
SpxUInt32Array = array of SpxUInt32;
SpxInt64Array = array of SpxInt64;
SpxUInt64Array = array of SpxUInt64;
SpxFloatArray = array of SpxFloat;
SpxDoubleArray = array of SpxDouble;
SpxStringArray = array of SpxString;
SpxDateTimeArray = array of SpxDateTime;
SpxGuidArray = array of SpxGuid;
SpxByteArrayArray = array of SpxByteArray;
SpxStatusCodeArray = array of SpxStatusCode;
SpxNodeIdIdentifierType = (
SpxIdentifierType_Numeric= $00,
SpxIdentifierType_String= $01,
SpxIdentifierType_Guid= $02,
SpxIdentifierType_Opaque= $03
);
SpxNodeId = record
NamespaceIndex:SpxUInt16;
IdentifierType:SpxNodeIdIdentifierType;
IdentifierNumeric:SpxUInt32;
IdentifierString:SpxString;
IdentifierGuid:SpxGuid;
IdentifierBytes:SpxByteArray;
end;
SpxNodeIds = array of SpxNodeId;
SpxBuiltInType = (
SpxType_Null= 0,
SpxType_Boolean= 1,
SpxType_SByte= 2,
SpxType_Byte= 3,
SpxType_Int16= 4,
SpxType_UInt16= 5,
SpxType_Int32= 6,
SpxType_UInt32= 7,
SpxType_Int64= 8,
SpxType_UInt64= 9,
SpxType_Float= 10,
SpxType_Double= 11,
SpxType_String= 12,
SpxType_DateTime= 13,
SpxType_Guid= 14,
SpxType_ByteString= 15,
SpxType_XmlElement= 16,
SpxType_NodeId= 17,
SpxType_ExpandedNodeId= 18,
SpxType_StatusCode= 19,
SpxType_QualifiedName= 20,
SpxType_LocalizedText= 21,
SpxType_ExtensionObject= 22,
SpxType_DataValue= 23,
SpxType_Variant= 24,
SpxType_DiagnosticInfo= 25,
SpxType_Number= 26,
SpxType_Integer= 27,
SpxType_UInteger= 28,
SpxType_Enumeration= 29
);
SpxValueRank = (
SpxValueRanks_Scalar= -1,
SpxValueRanks_OneDimension= 1
);
SpxDataType = record
// value rank
ValueRank:SpxValueRank;
// built-in type
BuiltInType:SpxBuiltInType;
// enumeration type identifier
EnumTypeNodeId:SpxNodeId;
end;
SpxLocalizedText = record
// locale
Locale:SpxString;
// text
Text:SpxString;
end;
SpxLocalizedTextArray = array ofSpxLocalizedText;
SpxQualifiedName = record
// namespace index
NamespaceIndex:SpxUInt16;
// name
Name:SpxString;
end;
SpxQualifiedNameArray = array ofSpxQualifiedName;
SpxTraceLevel = (
tlNone,
tlError,
tlWarning,
tlSystem,
tlInfo,
tlDebug,
tlAll
);
SpxVariant = record
// value rank
ValueRank:SpxValueRank;
// built-in type
BuiltInType:SpxBuiltInType;
// boolean value
AsBoolean:SpxBoolean;
// array of booleanvalues
AsBooleanArray:SpxBooleanArray;
// sbyte value
AsSByte:SpxSByte;
// array of sbyte values
AsSByteArray:SpxSByteArray;
// byte value
AsByte:SpxByte;
// array of byte values
AsByteArray:SpxByteArray;
// int16 value
AsInt16:SpxInt16;
// array of int16 values
AsInt16Array:SpxInt16Array;
// uint16 value
AsUInt16:SpxUInt16;
// array of uint16values
AsUInt16Array:SpxUInt16Array;
// int32 value
AsInt32:SpxInt32;
// array of int32 values
AsInt32Array:SpxInt32Array;
// uint32 value
AsUInt32:SpxUInt32;
// array of uint32 value
AsUInt32Array:SpxUInt32Array;
// int64 value
AsInt64:SpxInt64;
// array of int64 values
AsInt64Array:SpxInt64Array;
// uint64 value
AsUInt64:SpxUInt64;
// array of uint64values
AsUInt64Array:SpxUInt64Array;
// float value
AsFloat:SpxFloat;
// array of floatvalues
AsFloatArray:SpxFloatArray;
// double value
AsDouble:SpxDouble;
// array of doublevalues
AsDoubleArray:SpxDoubleArray;
// string value
AsString:SpxString;
// array of stringvalues
AsStringArray:SpxStringArray;
// date time value
AsDateTime:SpxDateTime;
// array of date time values
AsDateTimeArray:SpxDateTimeArray;
// guid value
AsGuid:SpxGuid;
// array of guid values
AsGuidArray:SpxGuidArray;
// byte string value
AsByteString:SpxByteArray;
// array of byte stringvalues
AsByteStringArray:SpxByteArrayArray;
// xml element value
AsXmlElement:SpxString;
// array of xml element values
AsXmlElementArray:SpxStringArray;
// NodeId value
AsNodeId: SpxNodeId;
// array of NodeId values
AsNodeIdArray: SpxNodeIdArray;
// ExpandedNodeId value
AsExpandedNodeId: SpxExpandedNodeId;
// array of ExpandedNodeId values
AsExpandedNodeIdArray: SpxExpandedNodeIdArray;
// StatusCode value
AsStatusCode: SpxStatusCode;
// array of StatusCode values
AsStatusCodeArray: SpxStatusCodeArray;
// QualifiedName value
AsQualifiedName: SpxQualifiedName;
// array of QualifiedName values
AsQualifiedNameArray: SpxQualifiedNameArray;
// LocalizedText value
AsLocalizedText: SpxLocalizedText;
// array of LocalizedText values
AsLocalizedTextArray: SpxLocalizedTextArray;
end;
SpxVariantArray = array of SpxVariant;
SpxDataValue = record
// value
Value:SpxVariant;
// quality
StatusCode:SpxStatusCode;
// date/time data source(local)
SourceTimestamp:SpxDateTime;
// picoseconds datasource
SourcePicoseconds:SpxUInt16;
// date/time server (local)
ServerTimestamp:SpxDateTime;
// picoseconds server
ServerPicoseconds:SpxUInt16;
end;
SpxDataValueArray = array of SpxDataValue;
SpxTimestampsToReturn = (
SpxTimestampsToReturn_Source= 0,
SpxTimestampsToReturn_Server= 1,
SpxTimestampsToReturn_Both= 2,
SpxTimestampsToReturn_Neither= 3
);
SpxDataChangeTrigger = (
SpxDataChangeTrigger_Status= 0,
SpxDataChangeTrigger_StatusValue= 1,
SpxDataChangeTrigger_StatusValueTimestamp= 2
);
SpxDeadbandType = (
SpxDeadbandType_None= 0,
SpxDeadbandType_Absolute= 1,
SpxDeadbandType_Percent = 2
);
SpxDataChangeFilter = record
// data change trigger
Trigger:SpxDataChangeTrigger;
// deadband type
DeadbandType:SpxDeadbandType;
// deadband value
DeadbandValue:SpxDouble;
end;
SpxAggregateFilter = record
// start time
StartTime:SpxDateTime;
// type of aggregatefilter
AggregateType:SpxNodeId;
// processing interval
ProcessingInterval:SpxDouble;
end;
SpxFilterType = (
SpxFilterType_None,
SpxFilterType_DataChange,
SpxFilterType_Aggregate
);
SpxFilterParams = record
// filter type
FilterType:SpxFilterType;
// change data filter
DataChangeFilter:SpxDataChangeFilter;
// aggregate filter
AggregateFilter:SpxAggregateFilter;
end;
SpxChannelEvent = (
// reserved/invalid/ignore
SpxChannelEvent_Invalid,
// secure channelhas been connected. (ignore for sync api)
SpxChannelEvent_Connected,
// secure channelhas been disconnected
SpxChannelEvent_Disconnected,
// secure channelhas been renewed
SpxChannelEvent_Renewed,
// certficateerror
SpxChannelEvent_VerifyCertificate
);
SpxMonitoredItemNotify = record
//client handle
ClientHandle: SpxUInt32;
//data value
Value: SpxDataValue;
end;
SpxMonitoredItemNotifyArray = array ofSpxMonitoredItemNotify;
SpxLogCallback = class
procedureOnLog(AMessage: SpxString); virtual;
procedureOnLogWarning(AMessage: SpxString); virtual;
procedureOnLogError(AMessage: SpxString); virtual;
procedureOnLogException(AMessage: SpxString; AException:Exception); virtual;
end;
SpxServerCallback = class (SpxLogCallback)
// callback for user/name authorization
function OnAuthorizationUserName(AUserName, APassword: SpxString): SpxBoolean; virtual;
// callback for write value
functionOnWriteValue(ANodeId: SpxNodeId; AValue: SpxVariant):SpxStatusCode; virtual;
// callback for callmethod
functionOnCallMethod(ANodeId, AParentNodeId: SpxNodeId; AInputArguments:SpxVariantArray; outAInputArgumentResults: SpxStatusCodeArray; outAOutputArguments: SpxVariantArray):SpxStatusCode; virtual;
// callback for readhistory
functionOnReadHistory(ATimestampsToReturn: SpxTimestampsToReturn;AreleaseContinuationPoints, AIsReadModified:SpxBoolean; AStartTime, AEndTime: SpxDateTime; ANumValuesPerNode: SpxUInt32; AReturnBounds:SpxBoolean; ANodeId: SpxNodeId; AIndexRange:SpxString; ADataEncoding: SpxQualifiedName; AContinuationPoint:SpxByteArray; outAAnswerContinuationPoint: SpxByteArray; outAHistoryData: SpxDataValueArray):SpxStatusCode; virtual;
end;
SpxClientCallback = class (SpxLogCallback)
// callback for channelevent
procedureOnChannelEvent(AEvent: SpxChannelEvent; AStatus:SpxStatusCode); virtual;
// callback fornotification of change of monitored items
procedureOnMonitoredItemChange(ASubscriptionId: SpxUInt32; AValues: SpxMonitoredItemNotifyArray); virtual;
end;
SpxApplicationInfo = record
// application name
ApplicationName:SpxString;
// application uri
ApplicationUri:SpxString;
// product uri
ProductUri:SpxString;
// manufacturer name
ManufacturerName:SpxString;
// software version
SoftwareVersion:SpxString;
// build number
BuildNumber:SpxString;
// build date
BuildDate:SpxDateTime;
end;
SpxAuthenticationType = (
// anonymous
SpxAuthenticationType_Anonymous = 0,
// user name
SpxAuthenticationType_UserName = 1
);
SpxAuthenticationParams = record
// authentication type
AuthenticationType: SpxAuthenticationType;
// user name
UserName: SpxString;
// password
Password: SpxString;
end;
SpxServerConfig = record
// endpoint url
EndpointUrl:SpxString;
// application info
ApplicationInfo:SpxApplicationInfo;
// allow security mode - None
AllowSecurityNone: SpxBoolean;
// allow security mode - Sign&Crypt
AllowSecuritySignAndCrypt: SpxBoolean;
// allow authorization - Anonymous
AllowAuthorizationAnonymous: SpxBoolean;
// allow authorization - UserName
AllowAuthorizationUserName: SpxBoolean;
// certificate file name
CertificateFileName: SpxString;
// trusted certificates folder
TrustedCertificatesFolder: SpxString;
// trace level
TraceLevel:SpxTraceLevel;
// callbacks for server
Callback:SpxServerCallback;
end;
SpxClientConfig = record
// endpoint url
EndpointUrl:SpxString;
// application info
ApplicationInfo: SpxApplicationInfo;
// certificate file name
CertificateFileName: SpxString;
// private key file name
PrivateKeyFileName: SpxString;
// trusted certificates folder
TrustedCertificatesFolder: SpxString;
// server certificate file name
ServerCertificateFileName: SpxString;
// authentication
Authentication: SpxAuthenticationParams;
// connect timeout, sec
ConnectTimeout: SpxUInt16;
// session timeout,sec
SessionTimeout:SpxUInt16;
// trace level
TraceLevel:SpxTraceLevel;
// callbacks for client
Callback:SpxClientCallback;
end;
SpxEnumValue = record
// value
Value:SpxInt32;
// name
Name:SpxLocalizedText;
// description
Description:SpxLocalizedText;
end;
SpxEnumValues = array of SpxEnumValue;
SpxArgument = record
// name
Name:SpxString;
// description
Description:SpxLocalizedText;
// data type
DataType:SpxDataType;
end;
SpxArguments = array of SpxArgument;
SpxChangeType = (
spxChange_BrowseName,
spxChange_DisplayName,
spxChange_Description,
spxChange_DataType,
spxChange_AllowWrite,
spxChange_AllowHistory
);
SpxChangeNodeParams = record
// change type
ChangeType:SpxChangeType;
// browse name
BrowseName:SpxString;
// display name
DisplayName:SpxLocalizedText;
// description
Description:SpxLocalizedText;
// data type
DataType:SpxDataType;
// allow write
AllowWrite:SpxBoolean;
// allow history
AllowHistory:SpxBoolean;
end;
SpxMessageSecurityMode = (
SpxMessageSecurityMode_Invalid= 0,
SpxMessageSecurityMode_None= 1,
SpxMessageSecurityMode_Sign= 2,
SpxMessageSecurityMode_SignAndEncrypt= 3
);
SpxApplicationType = (
SpxApplicationType_Server= 0,
SpxApplicationType_Client= 1,
SpxApplicationType_ClientAndServer= 2,
SpxApplicationType_DiscoveryServer= 3
);
SpxApplicationDescription = record
//application uri
ApplicationUri:SpxString;
//product uri
ProductUri:SpxString;
//application name
ApplicationName:SpxLocalizedText;
//application type
ApplicationType:SpxApplicationType;
//gateway server uri
GatewayServerUri:SpxString;
//discovery profile uri
DiscoveryProfileUri:SpxString;
//discovery list urls
DiscoveryUrls:SpxStringArray;
end;
SpxApplicationDescriptionArray = array ofSpxApplicationDescription;
SpxEndpointDescription = record
//endpoint Url
EndpointUrl:SpxString;
//application description
Server:SpxApplicationDescription;
//server certificate
ServerCertificate:SpxByteArray;
//security mode
SecurityMode:SpxMessageSecurityMode;
//security policy uri
SecurityPolicyUri:SpxString;
//transport profile uri
TransportProfileUri:SpxString;
//security level
SecurityLevel:SpxByte;
end;
SpxEndpointDescriptionArray = array ofSpxEndpointDescription;
SpxReadValueId = record
//node id
NodeId:SpxNodeId;
//attribute id
AttributeId:SpxUInt32;
//index range
IndexRange:SpxString;
//data encoding
DataEncoding:SpxQualifiedName;
end;
SpxReadValueIdArray = array ofSpxReadValueId;
SpxHistoryReadValueId = record
//node id
NodeId:SpxNodeId;
//index range
IndexRange:SpxString;
//data encoding
DataEncoding:SpxQualifiedName;
//continuation point
ContinuationPoint:SpxByteArray;
end;
SpxHistoryReadValueIdArray = array ofSpxHistoryReadValueId;
SpxHistoryReadResult = record
//status code
StatusCode:SpxStatusCode;
//continuation point
ContinuationPoint:SpxByteArray;
//array of data value
HistoryData:SpxDataValueArray;
end;
SpxHistoryReadResultArray = array ofSpxHistoryReadResult;
SpxWriteValue = record
//node id
NodeId:SpxNodeId;
//attribute id
AttributeId:SpxUInt32;
//index range
IndexRange:SpxString;
//data value
Value:SpxDataValue;
end;
SpxWriteValueArray = array of SpxWriteValue;
SpxCallMethodRequest = record
//method id
MethodId:SpxNodeId;
//parent id
ObjectId:SpxNodeId;
//input arguments
InputArguments:SpxVariantArray;
end;
SpxCallMethodRequestArray = array ofSpxCallMethodRequest;
SpxCallMethodResult = record
// status code
StatusCode: SpxStatusCode;
//results for input arguemts
InputArgumentResults: SpxStatusCodeArray;
//output arguments
OutputArguments: SpxVariantArray;
end;
SpxCallMethodResultArray = array ofSpxCallMethodResult;
SpxBrowseDirection = (
SpxBrowseDirection_Forward= 0,
SpxBrowseDirection_Inverse= 1,
SpxBrowseDirection_Both= 2
);
SpxNodeClass = (
SpxNodeClass_Unspecified= 0,
SpxNodeClass_Object= 1,
SpxNodeClass_Variable= 2,
SpxNodeClass_Method= 4,
SpxNodeClass_ObjectType= 8,
SpxNodeClass_VariableType= 16,
SpxNodeClass_ReferenceType= 32,
SpxNodeClass_DataType= 64,
SpxNodeClass_View= 128
);
SpxBrowseResultMask = (
SpxBrowseResultMask_None= 0,
SpxBrowseResultMask_ReferenceTypeId= 1,
SpxBrowseResultMask_IsForward= 2,
SpxBrowseResultMask_NodeClass= 4,
SpxBrowseResultMask_BrowseName= 8,
SpxBrowseResultMask_DisplayName= 16,
SpxBrowseResultMask_TypeDefinition= 32,
SpxBrowseResultMask_All= 63,
SpxBrowseResultMask_ReferenceTypeInfo= 3,
SpxBrowseResultMask_TargetInfo= 60
);
SpxBrowseDescription = record
//node id
NodeId:SpxNodeId;
//browse direction
BrowseDirection:SpxBrowseDirection;
//reference type
ReferenceTypeId:SpxNodeId;
//include subtypes
IncludeSubtypes:SpxBoolean;
//mask node class (SpxNodeClass)
NodeClassMask:SpxUInt32;
//result mask (SpxBrowseResultMask)
ResultMask:SpxUInt32;
end;
SpxBrowseDescriptionArray = array ofSpxBrowseDescription;
SpxExpandedNodeId = record
//namespace uri
NamespaceUri: SpxString;
//server index
ServerIndex: SpxUInt32;
//node id
NodeId: SpxNodeId;
end;
SpxReferenceDescription = record
//reference type id
ReferenceTypeId:SpxNodeId;
// is forwardreference
IsForward:SpxBoolean;
//node id
NodeId:SpxExpandedNodeId;
//browse name
BrowseName:SpxQualifiedName;
//display name
DisplayName:SpxLocalizedText;
//node class
NodeClass:SpxNodeClass;
//type defenition
TypeDefinition:SpxExpandedNodeId;
end;
SpxReferenceDescriptionArray = array ofSpxReferenceDescription;
SpxBrowseResult = record
//status code
StatusCode:SpxStatusCode;
//references
References:SpxReferenceDescriptionArray;
// continuationpoint
ContinuationPoint:SpxByteArray;
end;
SpxBrowseResultArray = array ofSpxBrowseResult;
SpxSubscription = record
//requested publishing interval, msec
RequestedPublishingInterval:SpxDouble;
//requested lifetime count
RequestedLifetimeCount:SpxUInt32;
//requested max keep alive couny
RequestedMaxKeepAliveCount:SpxUInt32;
//max notifications per publish
MaxNotificationsPerPublish:SpxUInt32;
//priority
Priority:SpxByte;
end;
SpxSubscriptionResult = record
//revised publishing interval, msec
RevisedPublishingInterval: SpxDouble;
//revised lifetime count
RevisedLifetimeCount: SpxUInt32;
//revised max keep alive count
RevisedMaxKeepAliveCount: SpxUInt32;
end;
SpxMonitoringMode = (
SpxMonitoringMode_Disabled= 0,
SpxMonitoringMode_Sampling= 1,
SpxMonitoringMode_Reporting= 2
);
SpxMonitoredItem = record
//node id
NodeId:SpxNodeId;
//attribute id
AttributeId:SpxUInt32;
//index range
IndexRange:SpxString;
//data encoding
DataEncoding:SpxQualifiedName;
//monitoring mode
MonitoringMode:SpxMonitoringMode;
//client handle
ClientHandle:SpxUInt32;
//sampling interval
SamplingInterval:SpxDouble;
//queue size
QueueSize:SpxUInt32;
//discard oldest values in queue
DiscardOldest:SpxBoolean;
end;
SpxMonitoredItemArray = array ofSpxMonitoredItem;
SpxMonitoredItemResult = record
//status code
StatusCode:SpxStatusCode;
//monitored item id
MonitoredItemId:SpxUInt32;
//sampling interval
SamplingInterval:SpxDouble;
//queue size
QueueSize:SpxUInt32;
end;
SpxMonitoredItemResultArray = array ofSpxMonitoredItemResult;
SpxModifyMonitoredItem = record
//monitored item id
MonitoredItemId:SpxUInt32;
//client handle
ClientHandle:SpxUInt32;
//sampling interval
SamplingInterval:SpxDouble;
//queue size
QueueSize:SpxUInt32;
//discard oldest values in queue
DiscardOldest:SpxBoolean;
end;
SpxModifyMonitoredItemArray = array ofSpxModifyMonitoredItem;
SpxModifyMonitoredItemResult = record
//status code
StatusCode:SpxStatusCode;
//sampling interval
SamplingInterval:SpxDouble;
//queue size
QueueSize:SpxUInt32;
end;
SpxModifyMonitoredItemResultArray = array ofSpxModifyMonitoredItemResult;
Email: support@simplexopcua.com