ua_client.h 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  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. typedef struct UA_ClientConfig {
  14. UA_Int32 timeout; //sync response timeout
  15. UA_Int32 secureChannelLifeTime; // lifetime in ms (then the channel needs to be renewed)
  16. UA_Int32 timeToRenewSecureChannel; //time in ms before expiration to renew the secure channel
  17. UA_ConnectionConfig localConnectionConfig;
  18. } UA_ClientConfig;
  19. extern UA_EXPORT const UA_ClientConfig UA_ClientConfig_standard;
  20. UA_Client UA_EXPORT * UA_Client_new(UA_ClientConfig config, UA_Logger logger);
  21. void UA_EXPORT UA_Client_reset(UA_Client* client);
  22. void UA_EXPORT UA_Client_delete(UA_Client* client);
  23. /*************************/
  24. /* Manage the Connection */
  25. /*************************/
  26. typedef UA_Connection (*UA_ConnectClientConnection)(UA_ConnectionConfig localConf, char *endpointUrl,
  27. UA_Logger logger);
  28. UA_StatusCode UA_EXPORT
  29. 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_manuallyRenewSecureChannel(UA_Client *client);
  32. /****************/
  33. /* Raw Services */
  34. /****************/
  35. /* Don't use this function. There are typed versions. */
  36. void UA_EXPORT
  37. __UA_Client_Service(UA_Client *client, const void *request, const UA_DataType *requestType,
  38. void *response, const UA_DataType *responseType);
  39. /* NodeManagement Service Set */
  40. static UA_INLINE UA_AddNodesResponse
  41. UA_Client_Service_addNodes(UA_Client *client, const UA_AddNodesRequest request) {
  42. UA_AddNodesResponse response;
  43. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_ADDNODESREQUEST],
  44. &response, &UA_TYPES[UA_TYPES_ADDNODESRESPONSE]);
  45. return response; }
  46. static UA_INLINE UA_AddReferencesResponse
  47. UA_Client_Service_addReferences(UA_Client *client, const UA_AddReferencesRequest request) {
  48. UA_AddReferencesResponse response;
  49. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_ADDNODESREQUEST],
  50. &response, &UA_TYPES[UA_TYPES_ADDNODESRESPONSE]);
  51. return response; }
  52. static UA_INLINE UA_DeleteNodesResponse
  53. UA_Client_Service_deleteNodes(UA_Client *client, const UA_DeleteNodesRequest request) {
  54. UA_DeleteNodesResponse response;
  55. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_DELETENODESREQUEST],
  56. &response, &UA_TYPES[UA_TYPES_DELETENODESRESPONSE]);
  57. return response; }
  58. static UA_INLINE UA_DeleteReferencesResponse
  59. UA_Client_Service_deleteReferences(UA_Client *client, const UA_DeleteReferencesRequest request) {
  60. UA_DeleteReferencesResponse response;
  61. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_DELETENODESREQUEST],
  62. &response, &UA_TYPES[UA_TYPES_DELETENODESRESPONSE]);
  63. return response; }
  64. /* View Service Set */
  65. static UA_INLINE UA_BrowseResponse
  66. UA_Client_Service_browse(UA_Client *client, const UA_BrowseRequest request) {
  67. UA_BrowseResponse response;
  68. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_BROWSEREQUEST],
  69. &response, &UA_TYPES[UA_TYPES_BROWSERESPONSE]);
  70. return response; }
  71. static UA_INLINE UA_BrowseNextResponse
  72. UA_Client_Service_browseNext(UA_Client *client, const UA_BrowseNextRequest request) {
  73. UA_BrowseNextResponse response;
  74. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_BROWSENEXTREQUEST],
  75. &response, &UA_TYPES[UA_TYPES_BROWSENEXTRESPONSE]);
  76. return response; }
  77. static UA_INLINE UA_TranslateBrowsePathsToNodeIdsResponse
  78. UA_Client_Service_translateBrowsePathsToNodeIds(UA_Client *client,
  79. const UA_TranslateBrowsePathsToNodeIdsRequest request) {
  80. UA_TranslateBrowsePathsToNodeIdsResponse response;
  81. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_TRANSLATEBROWSEPATHSTONODEIDSREQUEST],
  82. &response, &UA_TYPES[UA_TYPES_TRANSLATEBROWSEPATHSTONODEIDSRESPONSE]);
  83. return response; }
  84. static UA_INLINE UA_RegisterNodesResponse
  85. UA_Client_Service_registerNodes(UA_Client *client, const UA_RegisterNodesRequest request) {
  86. UA_RegisterNodesResponse response;
  87. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_REGISTERNODESREQUEST],
  88. &response, &UA_TYPES[UA_TYPES_REGISTERNODESRESPONSE]);
  89. return response; }
  90. static UA_INLINE UA_UnregisterNodesResponse
  91. UA_Client_Service_unregisterNodes(UA_Client *client, const UA_UnregisterNodesRequest request) {
  92. UA_UnregisterNodesResponse response;
  93. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_UNREGISTERNODESREQUEST],
  94. &response, &UA_TYPES[UA_TYPES_UNREGISTERNODESRESPONSE]);
  95. return response; }
  96. /* Query Service Set */
  97. static UA_INLINE UA_QueryFirstResponse
  98. UA_Client_Service_queryFirst(UA_Client *client, const UA_QueryFirstRequest request) {
  99. UA_QueryFirstResponse response;
  100. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_QUERYFIRSTREQUEST],
  101. &response, &UA_TYPES[UA_TYPES_QUERYFIRSTRESPONSE]);
  102. return response; }
  103. static UA_INLINE UA_QueryNextResponse
  104. UA_Client_Service_queryNext(UA_Client *client, const UA_QueryNextRequest request) {
  105. UA_QueryNextResponse response;
  106. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_QUERYFIRSTREQUEST],
  107. &response, &UA_TYPES[UA_TYPES_QUERYFIRSTRESPONSE]);
  108. return response; }
  109. /* Attribute Service Set */
  110. static UA_INLINE UA_ReadResponse
  111. UA_Client_Service_read(UA_Client *client, const UA_ReadRequest request) {
  112. UA_ReadResponse response;
  113. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_READREQUEST],
  114. &response, &UA_TYPES[UA_TYPES_READRESPONSE]);
  115. return response; }
  116. static UA_INLINE UA_WriteResponse
  117. UA_Client_Service_write(UA_Client *client, const UA_WriteRequest request) {
  118. UA_WriteResponse response;
  119. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_WRITEREQUEST],
  120. &response, &UA_TYPES[UA_TYPES_WRITERESPONSE]);
  121. return response; }
  122. /* Method Service Set */
  123. static UA_INLINE UA_CallResponse
  124. UA_Client_Service_call(UA_Client *client, const UA_CallRequest request) {
  125. UA_CallResponse response;
  126. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_CALLREQUEST],
  127. &response, &UA_TYPES[UA_TYPES_CALLRESPONSE]);
  128. return response; }
  129. #ifdef ENABLE_SUBSCRIPTIONS
  130. /* MonitoredItem Service Set */
  131. static UA_INLINE UA_CreateMonitoredItemsResponse
  132. UA_Client_Service_createMonitoredItems(UA_Client *client, const UA_CreateMonitoredItemsRequest request) {
  133. UA_CreateMonitoredItemsResponse response;
  134. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_CREATEMONITOREDITEMSREQUEST],
  135. &response, &UA_TYPES[UA_TYPES_CREATEMONITOREDITEMSRESPONSE]);
  136. return response; }
  137. static UA_INLINE UA_DeleteMonitoredItemsResponse
  138. UA_Client_Service_deleteMonitoredItems(UA_Client *client, const UA_DeleteMonitoredItemsRequest request) {
  139. UA_DeleteMonitoredItemsResponse response;
  140. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_DELETEMONITOREDITEMSREQUEST],
  141. &response, &UA_TYPES[UA_TYPES_DELETEMONITOREDITEMSRESPONSE]);
  142. return response; }
  143. /* Subscription Service Set */
  144. static UA_INLINE UA_CreateSubscriptionResponse
  145. UA_Client_Service_createSubscription(UA_Client *client, const UA_CreateSubscriptionRequest request) {
  146. UA_CreateSubscriptionResponse response;
  147. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_CREATESUBSCRIPTIONREQUEST],
  148. &response, &UA_TYPES[UA_TYPES_CREATESUBSCRIPTIONRESPONSE]);
  149. return response; }
  150. static UA_INLINE UA_ModifySubscriptionResponse
  151. UA_Client_Service_modifySubscription(UA_Client *client, const UA_ModifySubscriptionRequest request) {
  152. UA_ModifySubscriptionResponse response;
  153. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_MODIFYSUBSCRIPTIONREQUEST],
  154. &response, &UA_TYPES[UA_TYPES_MODIFYSUBSCRIPTIONRESPONSE]);
  155. return response; }
  156. static UA_INLINE UA_DeleteSubscriptionsResponse
  157. UA_Client_Service_deleteSubscriptions(UA_Client *client, const UA_DeleteSubscriptionsRequest request) {
  158. UA_DeleteSubscriptionsResponse response;
  159. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_DELETESUBSCRIPTIONSREQUEST],
  160. &response, &UA_TYPES[UA_TYPES_DELETESUBSCRIPTIONSRESPONSE]);
  161. return response; }
  162. static UA_INLINE UA_PublishResponse
  163. UA_Client_Service_publish(UA_Client *client, const UA_PublishRequest request) {
  164. UA_PublishResponse response;
  165. __UA_Client_Service(client, &request, &UA_TYPES[UA_TYPES_PUBLISHREQUEST],
  166. &response, &UA_TYPES[UA_TYPES_PUBLISHRESPONSE]);
  167. return response; }
  168. #endif
  169. #ifdef __cplusplus
  170. } // extern "C"
  171. #endif
  172. #endif /* UA_CLIENT_H_ */