ua_client.h 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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. #include "queue.h"
  12. struct UA_Client;
  13. typedef struct UA_Client UA_Client;
  14. /**
  15. * The client networklayer is defined by a single function that fills a UA_Connection struct after
  16. * successfully connecting.
  17. */
  18. typedef UA_Connection (*UA_ConnectClientConnection)(UA_ConnectionConfig localConf, char *endpointUrl,
  19. UA_Logger *logger);
  20. typedef struct UA_ClientConfig {
  21. UA_Int32 timeout; //sync response timeout
  22. UA_Int32 secureChannelLifeTime; // lifetime in ms (then the channel needs to be renewed)
  23. UA_Int32 timeToRenewSecureChannel; //time in ms before expiration to renew the secure channel
  24. UA_ConnectionConfig localConnectionConfig;
  25. } UA_ClientConfig;
  26. extern UA_EXPORT const UA_ClientConfig UA_ClientConfig_standard;
  27. UA_Client UA_EXPORT * UA_Client_new(UA_ClientConfig config, UA_Logger logger);
  28. UA_EXPORT void UA_Client_delete(UA_Client* client);
  29. UA_StatusCode UA_EXPORT UA_Client_connect(UA_Client *client, UA_ConnectClientConnection connFunc, char *endpointUrl);
  30. UA_StatusCode UA_EXPORT UA_Client_disconnect(UA_Client *client);
  31. UA_StatusCode UA_EXPORT UA_Client_renewSecureChannel(UA_Client *client);
  32. /* Attribute Service Set */
  33. UA_ReadResponse UA_EXPORT UA_Client_read(UA_Client *client, UA_ReadRequest *request);
  34. UA_WriteResponse UA_EXPORT UA_Client_write(UA_Client *client, UA_WriteRequest *request);
  35. /* View Service Set */
  36. UA_BrowseResponse UA_EXPORT UA_Client_browse(UA_Client *client, UA_BrowseRequest *request);
  37. UA_BrowseNextResponse UA_EXPORT UA_Client_browseNext(UA_Client *client, UA_BrowseNextRequest *request);
  38. UA_TranslateBrowsePathsToNodeIdsResponse UA_EXPORT
  39. UA_Client_translateTranslateBrowsePathsToNodeIds(UA_Client *client,
  40. UA_TranslateBrowsePathsToNodeIdsRequest *request);
  41. /* NodeManagement Service Set */
  42. UA_AddNodesResponse UA_EXPORT UA_Client_addNodes(UA_Client *client, UA_AddNodesRequest *request);
  43. UA_AddReferencesResponse UA_EXPORT
  44. UA_Client_addReferences(UA_Client *client, UA_AddReferencesRequest *request);
  45. UA_DeleteNodesResponse UA_EXPORT UA_Client_deleteNodes(UA_Client *client, UA_DeleteNodesRequest *request);
  46. UA_DeleteReferencesResponse UA_EXPORT
  47. UA_Client_deleteReferences(UA_Client *client, UA_DeleteReferencesRequest *request);
  48. /* Client-Side Macro/Procy functions */
  49. #ifdef ENABLE_METHODCALLS
  50. UA_CallResponse UA_EXPORT UA_Client_call(UA_Client *client, UA_CallRequest *request);
  51. UA_StatusCode UA_EXPORT UA_Client_CallServerMethod(UA_Client *client, UA_NodeId objectNodeId, UA_NodeId methodNodeId,
  52. UA_Int32 inputSize, const UA_Variant *input,
  53. UA_Int32 *outputSize, UA_Variant **output);
  54. #endif
  55. UA_AddNodesResponse UA_EXPORT *UA_Client_createObjectNode( UA_Client *client, UA_ExpandedNodeId reqId, UA_QualifiedName browseName, UA_LocalizedText displayName,
  56. UA_LocalizedText description, UA_ExpandedNodeId parentNodeId, UA_NodeId referenceTypeId,
  57. UA_UInt32 userWriteMask, UA_UInt32 writeMask, UA_ExpandedNodeId typeDefinition);
  58. UA_AddNodesResponse UA_EXPORT *UA_Client_createVariableNode(UA_Client *client, UA_ExpandedNodeId reqId, UA_QualifiedName browseName, UA_LocalizedText displayName,
  59. UA_LocalizedText description, UA_ExpandedNodeId parentNodeId, UA_NodeId referenceTypeId,
  60. UA_UInt32 userWriteMask, UA_UInt32 writeMask, UA_ExpandedNodeId typeDefinition,
  61. UA_NodeId dataType, UA_Variant *value );
  62. UA_AddNodesResponse UA_EXPORT *UA_Client_createReferenceTypeNode(UA_Client *client, UA_ExpandedNodeId reqId, UA_QualifiedName browseName, UA_LocalizedText displayName,
  63. UA_LocalizedText description, UA_ExpandedNodeId parentNodeId, UA_NodeId referenceTypeId,
  64. UA_UInt32 userWriteMask, UA_UInt32 writeMask, UA_ExpandedNodeId typeDefinition,
  65. UA_LocalizedText inverseName );
  66. UA_AddNodesResponse UA_EXPORT *UA_Client_createObjectTypeNode(UA_Client *client, UA_ExpandedNodeId reqId, UA_QualifiedName browseName, UA_LocalizedText displayName,
  67. UA_LocalizedText description, UA_ExpandedNodeId parentNodeId, UA_NodeId referenceTypeId,
  68. UA_UInt32 userWriteMask, UA_UInt32 writeMask, UA_ExpandedNodeId typeDefinition);
  69. #ifdef __cplusplus
  70. } // extern "C"
  71. #endif
  72. #ifdef ENABLE_SUBSCRIPTIONS
  73. typedef struct UA_Client_NotificationsAckNumber_s {
  74. UA_SubscriptionAcknowledgement subAck;
  75. LIST_ENTRY(UA_Client_NotificationsAckNumber_s) listEntry;
  76. } UA_Client_NotificationsAckNumber;
  77. typedef struct UA_Client_MonitoredItem_s {
  78. UA_UInt32 MonitoredItemId;
  79. UA_UInt32 MonitoringMode;
  80. UA_NodeId monitoredNodeId;
  81. UA_UInt32 AttributeID;
  82. UA_UInt32 ClientHandle;
  83. UA_UInt32 SamplingInterval;
  84. UA_UInt32 QueueSize;
  85. UA_Boolean DiscardOldest;
  86. void (*handler)(UA_UInt32 handle, UA_DataValue *value);
  87. LIST_ENTRY(UA_Client_MonitoredItem_s) listEntry;
  88. } UA_Client_MonitoredItem;
  89. typedef struct UA_Client_Subscription_s {
  90. UA_UInt32 LifeTime;
  91. UA_Int32 KeepAliveCount;
  92. UA_DateTime PublishingInterval;
  93. UA_UInt32 SubscriptionID;
  94. UA_Int32 NotificationsPerPublish;
  95. UA_UInt32 Priority;
  96. LIST_ENTRY(UA_Client_Subscription_s) listEntry;
  97. LIST_HEAD(UA_ListOfClientMonitoredItems, UA_Client_MonitoredItem_s) MonitoredItems;
  98. } UA_Client_Subscription;
  99. UA_CreateSubscriptionResponse UA_EXPORT UA_Client_createSubscription(UA_Client *client, UA_CreateSubscriptionRequest *request);
  100. UA_ModifySubscriptionResponse UA_EXPORT UA_Client_modifySubscription(UA_Client *client, UA_ModifySubscriptionRequest *request);
  101. UA_DeleteSubscriptionsResponse UA_EXPORT UA_Client_deleteSubscriptions(UA_Client *client, UA_DeleteSubscriptionsRequest *request);
  102. UA_CreateMonitoredItemsResponse UA_EXPORT UA_Client_createMonitoredItems(UA_Client *client, UA_CreateMonitoredItemsRequest *request);
  103. UA_DeleteMonitoredItemsResponse UA_EXPORT UA_Client_deleteMonitoredItems(UA_Client *client, UA_DeleteMonitoredItemsRequest *request);
  104. UA_PublishResponse UA_EXPORT UA_Client_publish(UA_Client *client, UA_PublishRequest *request);
  105. UA_Int32 UA_EXPORT UA_Client_newSubscription(UA_Client *client, UA_Int32 publishInterval);
  106. UA_StatusCode UA_EXPORT UA_Client_removeSubscription(UA_Client *client, UA_UInt32 subscriptionId);
  107. //void UA_EXPORT UA_Client_modifySubscription(UA_Client *client);
  108. UA_UInt32 UA_EXPORT UA_Client_monitorItemChanges(UA_Client *client, UA_UInt32 subscriptionId,
  109. UA_NodeId nodeId, UA_UInt32 attributeID,
  110. void *handlingFunction);
  111. UA_StatusCode UA_EXPORT UA_Client_unMonitorItemChanges(UA_Client *client, UA_UInt32 subscriptionId,
  112. UA_UInt32 monitoredItemId );
  113. void UA_EXPORT UA_Client_doPublish(UA_Client *client);
  114. UA_Boolean UA_Client_processPublishRx(UA_Client *client, UA_PublishResponse response);
  115. #endif
  116. #endif /* UA_CLIENT_H_ */