ua_client.h 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. #ifndef UA_CLIENT_H_
  2. #define UA_CLIENT_H_
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include "ua_config.h"
  7. #include "ua_types.h"
  8. #include "ua_connection.h"
  9. #include "ua_log.h"
  10. #include "ua_types_generated.h"
  11. struct UA_Client;
  12. typedef struct UA_Client UA_Client;
  13. /**
  14. * The client networklayer is defined by a single function that fills a UA_Connection struct after
  15. * successfully connecting.
  16. */
  17. typedef UA_Connection (*UA_ConnectClientConnection)(UA_ConnectionConfig localConf, char *endpointUrl,
  18. UA_Logger *logger);
  19. typedef struct UA_ClientConfig {
  20. UA_Int32 timeout; //sync response timeout
  21. UA_Int32 secureChannelLifeTime; // lifetime in ms (then the channel needs to be renewed)
  22. UA_Int32 timeToRenewSecureChannel; //time in ms before expiration to renew the secure channel
  23. UA_ConnectionConfig localConnectionConfig;
  24. } UA_ClientConfig;
  25. extern UA_EXPORT const UA_ClientConfig UA_ClientConfig_standard;
  26. UA_Client UA_EXPORT * UA_Client_new(UA_ClientConfig config, UA_Logger logger);
  27. UA_EXPORT void UA_Client_delete(UA_Client* client);
  28. UA_StatusCode UA_EXPORT UA_Client_connect(UA_Client *client, UA_ConnectClientConnection connFunc, char *endpointUrl);
  29. UA_StatusCode UA_EXPORT UA_Client_disconnect(UA_Client *client);
  30. UA_StatusCode UA_EXPORT UA_Client_renewSecureChannel(UA_Client *client);
  31. /* Attribute Service Set */
  32. UA_ReadResponse UA_EXPORT UA_Client_read(UA_Client *client, UA_ReadRequest *request);
  33. UA_WriteResponse UA_EXPORT UA_Client_write(UA_Client *client, UA_WriteRequest *request);
  34. /* View Service Set */
  35. UA_BrowseResponse UA_EXPORT UA_Client_browse(UA_Client *client, UA_BrowseRequest *request);
  36. UA_BrowseNextResponse UA_EXPORT UA_Client_browseNext(UA_Client *client, UA_BrowseNextRequest *request);
  37. UA_TranslateBrowsePathsToNodeIdsResponse UA_EXPORT
  38. UA_Client_translateTranslateBrowsePathsToNodeIds(UA_Client *client,
  39. UA_TranslateBrowsePathsToNodeIdsRequest *request);
  40. /* NodeManagement Service Set */
  41. UA_AddNodesResponse UA_EXPORT UA_Client_addNodes(UA_Client *client, UA_AddNodesRequest *request);
  42. UA_AddReferencesResponse UA_EXPORT
  43. UA_Client_addReferences(UA_Client *client, UA_AddReferencesRequest *request);
  44. UA_DeleteNodesResponse UA_EXPORT UA_Client_deleteNodes(UA_Client *client, UA_DeleteNodesRequest *request);
  45. UA_DeleteReferencesResponse UA_EXPORT
  46. UA_Client_deleteReferences(UA_Client *client, UA_DeleteReferencesRequest *request);
  47. /* Client-Side Macro/Procy functions */
  48. UA_StatusCode UA_EXPORT
  49. UA_Client_deleteNode(UA_Client *client, UA_NodeId nodeId);
  50. #define UA_CLIENT_DELETENODETYPEALIAS_DECL(TYPE) \
  51. UA_StatusCode UA_EXPORT UA_Client_delete##TYPE##Node(UA_Client *client, UA_NodeId nodeId);
  52. UA_CLIENT_DELETENODETYPEALIAS_DECL(Object)
  53. UA_CLIENT_DELETENODETYPEALIAS_DECL(Variable)
  54. UA_CLIENT_DELETENODETYPEALIAS_DECL(ObjectType)
  55. UA_CLIENT_DELETENODETYPEALIAS_DECL(VariableType)
  56. UA_CLIENT_DELETENODETYPEALIAS_DECL(DataType)
  57. UA_CLIENT_DELETENODETYPEALIAS_DECL(Method)
  58. UA_CLIENT_DELETENODETYPEALIAS_DECL(View)
  59. #ifdef ENABLE_METHODCALLS
  60. UA_CallResponse UA_EXPORT UA_Client_call(UA_Client *client, UA_CallRequest *request);
  61. UA_StatusCode UA_EXPORT UA_Client_CallServerMethod(UA_Client *client, UA_NodeId objectNodeId, UA_NodeId methodNodeId,
  62. UA_Int32 inputSize, const UA_Variant *input,
  63. UA_Int32 *outputSize, UA_Variant **output);
  64. #endif
  65. UA_StatusCode UA_EXPORT UA_Client_addObjectNode( UA_Client *client, UA_NodeId reqId, UA_QualifiedName browseName, UA_LocalizedText displayName,
  66. UA_LocalizedText description, UA_ExpandedNodeId parentNodeId, UA_NodeId referenceTypeId,
  67. UA_UInt32 userWriteMask, UA_UInt32 writeMask, UA_ExpandedNodeId typeDefinition, UA_NodeId *createdNodeId);
  68. UA_StatusCode UA_EXPORT UA_Client_addVariableNode( UA_Client *client, UA_NodeId reqId, UA_QualifiedName browseName, UA_LocalizedText displayName,
  69. UA_LocalizedText description, UA_ExpandedNodeId parentNodeId, UA_NodeId referenceTypeId,
  70. UA_UInt32 userWriteMask, UA_UInt32 writeMask, UA_Variant *value, UA_NodeId *createdNodeId);
  71. UA_StatusCode UA_EXPORT UA_Client_addReferenceTypeNode( UA_Client *client, UA_NodeId reqId, UA_QualifiedName browseName, UA_LocalizedText displayName,
  72. UA_LocalizedText description, UA_ExpandedNodeId parentNodeId, UA_NodeId referenceTypeId,
  73. UA_UInt32 userWriteMask, UA_UInt32 writeMask, UA_ExpandedNodeId typeDefinition,
  74. UA_LocalizedText inverseName, UA_NodeId *createdNodeId );
  75. UA_StatusCode UA_EXPORT UA_Client_addObjectTypeNode( UA_Client *client, UA_NodeId reqId, UA_QualifiedName browseName, UA_LocalizedText displayName,
  76. UA_LocalizedText description, UA_ExpandedNodeId parentNodeId, UA_NodeId referenceTypeId,
  77. UA_UInt32 userWriteMask, UA_UInt32 writeMask, UA_ExpandedNodeId typeDefinition, UA_Boolean isAbstract,
  78. UA_NodeId *createdNodeId);
  79. #ifdef ENABLE_SUBSCRIPTIONS
  80. UA_Int32 UA_EXPORT UA_Client_newSubscription(UA_Client *client, UA_Int32 publishInterval);
  81. UA_StatusCode UA_EXPORT UA_Client_removeSubscription(UA_Client *client, UA_UInt32 subscriptionId);
  82. //void UA_EXPORT UA_Client_modifySubscription(UA_Client *client);
  83. void UA_EXPORT UA_Client_doPublish(UA_Client *client);
  84. UA_UInt32 UA_EXPORT UA_Client_monitorItemChanges(UA_Client *client, UA_UInt32 subscriptionId,
  85. UA_NodeId nodeId, UA_UInt32 attributeID,
  86. void *handlingFunction);
  87. UA_StatusCode UA_EXPORT UA_Client_unMonitorItemChanges(UA_Client *client, UA_UInt32 subscriptionId,
  88. UA_UInt32 monitoredItemId );
  89. #endif
  90. #ifndef _HAVE_UA_NODEITERATORCALLBACK_D
  91. #define _HAVE_UA_NODEITERATORCALLBACK_D
  92. typedef UA_StatusCode (*UA_NodeIteratorCallback)(UA_NodeId childId, UA_Boolean isInverse, UA_NodeId referenceTypeId);
  93. #endif
  94. UA_StatusCode UA_EXPORT
  95. UA_Client_forEachChildNodeCall(UA_Client *client, UA_NodeId parentNodeId, UA_NodeIteratorCallback callback);
  96. UA_StatusCode
  97. UA_Client_copyBaseAttributes(UA_Client *client, UA_ReadResponse *readResponseSrc, void *dst);
  98. UA_StatusCode
  99. UA_Client_appendObjectNodeAttributes(UA_Client *client, void *dst);
  100. UA_StatusCode
  101. UA_Client_appendObjectTypeNodeAttributes(UA_Client *client, void *dst);
  102. UA_StatusCode
  103. UA_Client_appendVariableNodeAttributes(UA_Client *client, void *dst);
  104. UA_StatusCode
  105. UA_Client_appendVariableTypeNodeAttributes(UA_Client *client, void *dst);
  106. UA_StatusCode
  107. UA_Client_appendReferenceTypeNodeAttributes(UA_Client *client, void *dst);
  108. UA_StatusCode
  109. UA_Client_appendViewNodeAttributes(UA_Client *client, void *dst);
  110. UA_StatusCode
  111. UA_Client_appendDataTypeNodeAttributes(UA_Client *client, void *dst);
  112. UA_StatusCode
  113. UA_Client_appendMethodNodeAttributes(UA_Client *client, void *dst);
  114. UA_StatusCode UA_EXPORT
  115. UA_Client_getNodeCopy(UA_Client *client, UA_NodeId nodeId, void **copyInto);
  116. UA_StatusCode UA_EXPORT
  117. UA_Client_deleteNodeCopy(UA_Client *client, void **node);
  118. #ifdef __cplusplus
  119. } // extern "C"
  120. #endif
  121. #endif /* UA_CLIENT_H_ */