ua_client.h 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  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_reset(UA_Client* client);
  28. UA_EXPORT void UA_Client_init(UA_Client* client, UA_ClientConfig config, UA_Logger logger);
  29. UA_EXPORT void UA_Client_deleteMembers(UA_Client* client);
  30. UA_EXPORT void UA_Client_delete(UA_Client* client);
  31. UA_StatusCode UA_EXPORT
  32. UA_Client_connect(UA_Client *client, UA_ConnectClientConnection connFunc, char *endpointUrl);
  33. UA_StatusCode UA_EXPORT UA_Client_disconnect(UA_Client *client);
  34. UA_StatusCode UA_EXPORT UA_Client_renewSecureChannel(UA_Client *client);
  35. /* Attribute Service Set */
  36. UA_ReadResponse UA_EXPORT UA_Client_read(UA_Client *client, UA_ReadRequest *request);
  37. UA_WriteResponse UA_EXPORT UA_Client_write(UA_Client *client, UA_WriteRequest *request);
  38. /* View Service Set */
  39. UA_BrowseResponse UA_EXPORT UA_Client_browse(UA_Client *client, UA_BrowseRequest *request);
  40. UA_BrowseNextResponse UA_EXPORT UA_Client_browseNext(UA_Client *client, UA_BrowseNextRequest *request);
  41. UA_TranslateBrowsePathsToNodeIdsResponse UA_EXPORT
  42. UA_Client_translateTranslateBrowsePathsToNodeIds(UA_Client *client,
  43. UA_TranslateBrowsePathsToNodeIdsRequest *request);
  44. /* NodeManagement Service Set */
  45. UA_AddNodesResponse UA_EXPORT UA_Client_addNodes(UA_Client *client, UA_AddNodesRequest *request);
  46. UA_AddReferencesResponse UA_EXPORT
  47. UA_Client_addReferences(UA_Client *client, UA_AddReferencesRequest *request);
  48. UA_DeleteNodesResponse UA_EXPORT UA_Client_deleteNodes(UA_Client *client, UA_DeleteNodesRequest *request);
  49. UA_DeleteReferencesResponse UA_EXPORT
  50. UA_Client_deleteReferences(UA_Client *client, UA_DeleteReferencesRequest *request);
  51. /* Client-Side Macro/Procy functions */
  52. #ifdef ENABLE_METHODCALLS
  53. UA_CallResponse UA_EXPORT UA_Client_call(UA_Client *client, UA_CallRequest *request);
  54. UA_StatusCode UA_EXPORT
  55. UA_Client_CallServerMethod(UA_Client *client, UA_NodeId objectNodeId, UA_NodeId methodNodeId,
  56. UA_Int32 inputSize, const UA_Variant *input,
  57. UA_Int32 *outputSize, UA_Variant **output);
  58. #endif
  59. /* Don't call this function, use the typed versions */
  60. UA_StatusCode UA_EXPORT
  61. __UA_Client_addNode(UA_Client *client, const UA_NodeClass nodeClass,
  62. const UA_NodeId requestedNewNodeId, const UA_NodeId parentNodeId,
  63. const UA_NodeId referenceTypeId, const UA_QualifiedName browseName,
  64. const UA_NodeId typeDefinition, const UA_NodeAttributes *attr,
  65. const UA_DataType *attributeType, UA_NodeId *outNewNodeId);
  66. static UA_INLINE UA_StatusCode
  67. UA_Client_addVariableNode(UA_Client *client, const UA_NodeId requestedNewNodeId,
  68. const UA_NodeId parentNodeId, const UA_NodeId referenceTypeId,
  69. const UA_QualifiedName browseName, const UA_NodeId typeDefinition,
  70. const UA_VariableAttributes attr, UA_NodeId *outNewNodeId) {
  71. return __UA_Client_addNode(client, UA_NODECLASS_VARIABLE, requestedNewNodeId,
  72. parentNodeId, referenceTypeId, browseName, typeDefinition,
  73. (const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],
  74. outNewNodeId); }
  75. static UA_INLINE UA_StatusCode
  76. UA_Client_addVariableTypeNode(UA_Client *client, const UA_NodeId requestedNewNodeId,
  77. const UA_NodeId parentNodeId, const UA_NodeId referenceTypeId,
  78. const UA_QualifiedName browseName, const UA_VariableTypeAttributes attr,
  79. UA_NodeId *outNewNodeId) {
  80. return __UA_Client_addNode(client, UA_NODECLASS_VARIABLETYPE, requestedNewNodeId,
  81. parentNodeId, referenceTypeId, browseName, UA_NODEID_NULL,
  82. (const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLETYPEATTRIBUTES],
  83. outNewNodeId); }
  84. static UA_INLINE UA_StatusCode
  85. UA_Client_addObjectNode(UA_Client *client, const UA_NodeId requestedNewNodeId,
  86. const UA_NodeId parentNodeId, const UA_NodeId referenceTypeId,
  87. const UA_QualifiedName browseName, const UA_NodeId typeDefinition,
  88. const UA_ObjectAttributes attr, UA_NodeId *outNewNodeId) {
  89. return __UA_Client_addNode(client, UA_NODECLASS_OBJECT, requestedNewNodeId,
  90. parentNodeId, referenceTypeId, browseName, typeDefinition,
  91. (const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],
  92. outNewNodeId); }
  93. static UA_INLINE UA_StatusCode
  94. UA_Client_addObjectTypeNode(UA_Client *client, const UA_NodeId requestedNewNodeId,
  95. const UA_NodeId parentNodeId, const UA_NodeId referenceTypeId,
  96. const UA_QualifiedName browseName, const UA_ObjectTypeAttributes attr,
  97. UA_NodeId *outNewNodeId) {
  98. return __UA_Client_addNode(client, UA_NODECLASS_OBJECTTYPE, requestedNewNodeId,
  99. parentNodeId, referenceTypeId, browseName, UA_NODEID_NULL,
  100. (const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTTYPEATTRIBUTES],
  101. outNewNodeId); }
  102. static UA_INLINE UA_StatusCode
  103. UA_Client_addViewNode(UA_Client *client, const UA_NodeId requestedNewNodeId,
  104. const UA_NodeId parentNodeId, const UA_NodeId referenceTypeId,
  105. const UA_QualifiedName browseName, const UA_ViewAttributes attr,
  106. UA_NodeId *outNewNodeId) {
  107. return __UA_Client_addNode(client, UA_NODECLASS_VIEW, requestedNewNodeId,
  108. parentNodeId, referenceTypeId, browseName, UA_NODEID_NULL,
  109. (const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VIEWATTRIBUTES],
  110. outNewNodeId); }
  111. static UA_INLINE UA_StatusCode
  112. UA_Client_addReferenceTypeNode(UA_Client *client, const UA_NodeId requestedNewNodeId,
  113. const UA_NodeId parentNodeId, const UA_NodeId referenceTypeId,
  114. const UA_QualifiedName browseName, const UA_ReferenceTypeAttributes attr,
  115. UA_NodeId *outNewNodeId) {
  116. return __UA_Client_addNode(client, UA_NODECLASS_REFERENCETYPE, requestedNewNodeId,
  117. parentNodeId, referenceTypeId, browseName, UA_NODEID_NULL,
  118. (const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_REFERENCETYPEATTRIBUTES],
  119. outNewNodeId); }
  120. static UA_INLINE UA_StatusCode
  121. UA_Client_addDataTypeNode(UA_Client *client, const UA_NodeId requestedNewNodeId,
  122. const UA_NodeId parentNodeId, const UA_NodeId referenceTypeId,
  123. const UA_QualifiedName browseName, const UA_DataTypeAttributes attr,
  124. UA_NodeId *outNewNodeId) {
  125. return __UA_Client_addNode(client, UA_NODECLASS_DATATYPE, requestedNewNodeId,
  126. parentNodeId, referenceTypeId, browseName, UA_NODEID_NULL,
  127. (const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_DATATYPEATTRIBUTES],
  128. outNewNodeId); }
  129. #ifdef ENABLE_SUBSCRIPTIONS
  130. UA_Int32 UA_EXPORT UA_Client_newSubscription(UA_Client *client, UA_Int32 publishInterval);
  131. UA_StatusCode UA_EXPORT UA_Client_removeSubscription(UA_Client *client, UA_UInt32 subscriptionId);
  132. //void UA_EXPORT UA_Client_modifySubscription(UA_Client *client);
  133. void UA_EXPORT UA_Client_doPublish(UA_Client *client);
  134. UA_UInt32 UA_EXPORT UA_Client_monitorItemChanges(UA_Client *client, UA_UInt32 subscriptionId,
  135. UA_NodeId nodeId, UA_UInt32 attributeID,
  136. void *handlingFunction);
  137. UA_StatusCode UA_EXPORT UA_Client_unMonitorItemChanges(UA_Client *client, UA_UInt32 subscriptionId,
  138. UA_UInt32 monitoredItemId );
  139. #endif
  140. #ifdef __cplusplus
  141. } // extern "C"
  142. #endif
  143. #endif /* UA_CLIENT_H_ */