open62541 1.4.15
Open source implementation of OPC UA
Loading...
Searching...
No Matches
server_pubsub.h
Go to the documentation of this file.
1/** This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
4 *
5 * Copyright (c) 2017-2022 Fraunhofer IOSB (Author: Andreas Ebner)
6 * Copyright (c) 2019 Kalycito Infotech Private Limited
7 * Copyright (c) 2021 Fraunhofer IOSB (Author: Jan Hermes)
8 * Copyright (c) 2022 Siemens AG (Author: Thomas Fischer)
9 * Copyright (c) 2022 Linutronix GmbH (Author: Muddasir Shakil)
10 */
11
12#ifndef UA_SERVER_PUBSUB_H
13#define UA_SERVER_PUBSUB_H
14
15#include <open62541/common.h>
16#include <open62541/util.h>
17#include <open62541/client.h>
20
22
23#ifdef UA_ENABLE_PUBSUB
24
25
26
34
35
36
37/** Valid PublisherId types from Part 14 */
45
46/** Publisher Id
47 Valid types are defined in Part 14, 7.2.2.2.2 NetworkMessage Layout:
48
49 Bit range 0-2: PublisherId Type
50 000 The PublisherId is of DataType Byte This is the default value if ExtendedFlags1 is omitted
51 001 The PublisherId is of DataType UInt16
52 010 The PublisherId is of DataType UInt32
53 011 The PublisherId is of DataType UInt64
54 100 The PublisherId is of DataType String
55*/
63
64typedef struct {
73
74 UA_EventLoop *eventLoop; /* Use an external EventLoop (use the EventLoop of
75 * the server if this is NULL). Propagates to the
76 * ReaderGroup/WriterGroup attached to the
77 * Connection. */
79
80#ifdef UA_ENABLE_PUBSUB_MONITORING
81
82typedef enum {
83 UA_PUBSUB_MONITORING_MESSAGE_RECEIVE_TIMEOUT
84 // extend as needed
85} UA_PubSubMonitoringType;
86
87/** PubSub monitoring interface */
88typedef struct {
89 UA_StatusCode (*createMonitoring)(UA_Server *server, UA_NodeId Id,
90 UA_PubSubComponentEnumType eComponentType,
91 UA_PubSubMonitoringType eMonitoringType,
92 void *data, UA_ServerCallback callback);
93 UA_StatusCode (*startMonitoring)(UA_Server *server, UA_NodeId Id,
94 UA_PubSubComponentEnumType eComponentType,
95 UA_PubSubMonitoringType eMonitoringType, void *data);
96 UA_StatusCode (*stopMonitoring)(UA_Server *server, UA_NodeId Id,
97 UA_PubSubComponentEnumType eComponentType,
98 UA_PubSubMonitoringType eMonitoringType, void *data);
99 UA_StatusCode (*updateMonitoringInterval)(UA_Server *server, UA_NodeId Id,
100 UA_PubSubComponentEnumType eComponentType,
101 UA_PubSubMonitoringType eMonitoringType,
102 void *data);
103 UA_StatusCode (*deleteMonitoring)(UA_Server *server, UA_NodeId Id,
104 UA_PubSubComponentEnumType eComponentType,
105 UA_PubSubMonitoringType eMonitoringType, void *data);
106} UA_PubSubMonitoringInterface;
107
108#endif /* UA_ENABLE_PUBSUB_MONITORING */
109
110/** General PubSub configuration */
112 /* Callback for PubSub component state changes: If provided this callback
113 * informs the application about PubSub component state changes. E.g. state
114 * change from operational to error in case of a DataSetReader
115 * MessageReceiveTimeout. The status code provides additional
116 * information. */
118 UA_PubSubState state, UA_StatusCode status);
119
121
122#ifdef UA_ENABLE_PUBSUB_INFORMATIONMODEL
123 UA_Boolean enableInformationModelMethods;
124#endif
125
126#ifdef UA_ENABLE_PUBSUB_ENCRYPTION
127 /* PubSub security policies */
128 size_t securityPoliciesSize;
129 UA_PubSubSecurityPolicy *securityPolicies;
130#endif
131
132#ifdef UA_ENABLE_PUBSUB_MONITORING
133 UA_PubSubMonitoringInterface monitoringInterface;
134#endif
135};
136
137/** Add a new PubSub connection to the given server and open it.
138 * @param server The server to add the connection to.
139 * @param connectionConfig The configuration for the newly added connection.
140 * @param connectionIdentifier If not NULL will be set to the identifier of the
141 * newly added connection.
142 * @return UA_STATUSCODE_GOOD if connection was successfully added, otherwise an
143 * error code. */
146 const UA_PubSubConnectionConfig *connectionConfig,
147 UA_NodeId *connectionIdentifier);
148
149/** Returns a deep copy of the config */
152 const UA_NodeId connection,
154
155/** Remove Connection, identified by the NodeId. Deletion of Connection
156 * removes all contained WriterGroups and Writers. */
159
160
161
162/** The UA_PUBSUB_DATASET_PUBLISHEDITEMS has currently no additional members and
163 * thus no dedicated config structure. */
164
171
177
182
190
191/** Configuration structure for PublishedDataSet */
192typedef struct {
195 union {
196 /* The UA_PUBSUB_DATASET_PUBLISHEDITEMS has currently no additional members
197 * and thus no dedicated config structure.*/
201 } config;
203
204void
206
213
216 const UA_PublishedDataSetConfig *publishedDataSetConfig,
217 UA_NodeId *pdsIdentifier);
218
219/** Returns a deep copy of the config */
223
224/** Returns a deep copy of the DataSetMetaData for an specific PDS */
227 UA_DataSetMetaDataType *metaData);
228
229/** Remove PublishedDataSet, identified by the NodeId. Deletion of PDS removes
230 * all contained and linked PDS Fields. Connected WriterGroups will be also
231 * removed. */
234
235
236
237typedef struct{
242
243 /* non std. field */
244 struct {
246 /* If the rtInformationModelNode is set, the nodeid in publishParameter must point
247 * to a node with external data source backend defined
248 * */
250 //TODO -> decide if suppress C++ warnings and use 'UA_DataValue * * const staticValueSource;'
252 } rtValueSource;
254
256
261
262typedef struct {
264 union {
265 /* events need other config later */
267 } field;
269
270void
272
277
280 const UA_NodeId publishedDataSet,
281 const UA_DataSetFieldConfig *fieldConfig,
282 UA_NodeId *fieldIdentifier);
283
284/** Returns a deep copy of the config */
287 UA_DataSetFieldConfig *config);
288
291
292
293
294typedef struct {
295 /* User's callback implementation. The user configured base time and timer policy
296 * will be provided as an argument to this callback so that the user can
297 * implement his callback (thread) considering base time and timer policies */
298 UA_StatusCode (*addCustomCallback)(UA_Server *server, UA_NodeId identifier,
299 UA_ServerCallback callback,
300 void *data, UA_Double interval_ms,
301 UA_DateTime *baseTime, UA_TimerPolicy timerPolicy,
302 UA_UInt64 *callbackId);
303
304 UA_StatusCode (*changeCustomCallback)(UA_Server *server, UA_NodeId identifier,
305 UA_UInt64 callbackId, UA_Double interval_ms,
306 UA_DateTime *baseTime, UA_TimerPolicy timerPolicy);
307
308 void (*removeCustomCallback)(UA_Server *server, UA_NodeId identifier, UA_UInt64 callbackId);
309
311
312
313
319
320
321
328
329typedef struct {
340 /* PubSub Manager Callback */
342 /* non std. config parameter. maximum count of embedded DataSetMessage in
343 * one NetworkMessage */
345 /* non std. field */
347
348 /* Message are encrypted if a SecurityPolicy is configured and the
349 * securityMode set accordingly. The symmetric key is a runtime information
350 * and has to be set via UA_Server_setWriterGroupEncryptionKey. */
351 UA_MessageSecurityMode securityMode; /* via the UA_WriterGroupDataType */
352#ifdef UA_ENABLE_PUBSUB_ENCRYPTION
353 UA_PubSubSecurityPolicy *securityPolicy;
354 UA_String securityGroupId;
355#endif
357
358void
360
361/** Add a new WriterGroup to an existing Connection */
364 const UA_WriterGroupConfig *writerGroupConfig,
365 UA_NodeId *writerGroupIdentifier);
366
367/** Returns a deep copy of the config */
370 UA_WriterGroupConfig *config);
371
374 const UA_WriterGroupConfig *config);
375
376/** Get state of WriterGroup */
379 UA_PubSubState *state);
380
382UA_Server_WriterGroup_publish(UA_Server *server, const UA_NodeId writerGroupIdentifier);
383
386 UA_DateTime *timestamp);
387
390
393
396
399
402
403#ifdef UA_ENABLE_PUBSUB_ENCRYPTION
404/** Set the group key for the message encryption */
406UA_Server_setWriterGroupEncryptionKeys(UA_Server *server, const UA_NodeId writerGroup,
407 UA_UInt32 securityTokenId,
408 const UA_ByteString signingKey,
409 const UA_ByteString encryptingKey,
410 const UA_ByteString keyNonce);
411#endif
412
413
414
425
426void
428
429/** Add a new DataSetWriter to an existing WriterGroup. The DataSetWriter must be
430 * coupled with a PublishedDataSet on creation.
431 *
432 * Part 14, 7.1.5.2.1 defines: The link between the PublishedDataSet and
433 * DataSetWriter shall be created when an instance of the DataSetWriterType is
434 * created. */
437 const UA_NodeId writerGroup, const UA_NodeId dataSet,
438 const UA_DataSetWriterConfig *dataSetWriterConfig,
439 UA_NodeId *writerIdentifier);
440
441/** Returns a deep copy of the config */
444 UA_DataSetWriterConfig *config);
445
446/** Get state of DataSetWriter */
448UA_Server_DataSetWriter_getState(UA_Server *server, UA_NodeId dataSetWriterIdentifier,
449 UA_PubSubState *state);
450
453
454
455
456/** SubscribedDataSetDataType Definition */
461
462typedef struct {
463 /* Standard-defined FieldTargetDataType */
465
466 /* If realtime-handling is required, set this pointer non-NULL and it will be used
467 * to memcpy the value instead of using the Write service.
468 * If the beforeWrite method pointer is set, it will be called before a memcpy update
469 * to the value.
470 * If the afterWrite method pointer is set, it will be called after a memcpy update
471 * to the value. */
473 void *targetVariableContext; /* user-defined pointer */
474 void (*beforeWrite)(UA_Server *server,
475 const UA_NodeId *readerIdentifier,
476 const UA_NodeId *readerGroupIdentifier,
477 const UA_NodeId *targetVariableIdentifier,
478 void *targetVariableContext,
479 UA_DataValue **externalDataValue);
480 void (*afterWrite)(UA_Server *server,
481 const UA_NodeId *readerIdentifier,
482 const UA_NodeId *readerGroupIdentifier,
483 const UA_NodeId *targetVariableIdentifier,
484 void *targetVariableContext,
485 UA_DataValue **externalDataValue);
487
492
493/** Return Status Code after creating TargetVariables in Subscriber AddressSpace */
496 UA_NodeId dataSetReaderIdentifier,
497 size_t targetVariablesSize,
498 const UA_FieldTargetVariable *targetVariables);
499
500/** To Do:Implementation of SubscribedDataSetMirrorType
501 * UA_StatusCode
502 * A_PubSubDataSetReader_createDataSetMirror(UA_Server *server, UA_NodeId dataSetReaderIdentifier,
503 * UA_SubscribedDataSetMirrorDataType* mirror) */
504
505
506
513
514/** Parameters for PubSub DataSetReader Configuration */
535
536/** Copy the configuration of DataSetReader */
537UA_EXPORT UA_StatusCode
540
541/** Clear the configuration of a DataSetReader */
542UA_EXPORT void
544
545/** Update configuration to the DataSetReader */
548 UA_NodeId readerGroupIdentifier,
549 const UA_DataSetReaderConfig *config);
550
551/** Get the configuration (copy) of the DataSetReader */
554 UA_DataSetReaderConfig *config);
555
556/** Get state of DataSetReader */
558UA_Server_DataSetReader_getState(UA_Server *server, UA_NodeId dataSetReaderIdentifier,
559 UA_PubSubState *state);
560
571
572void
574
577 const UA_StandaloneSubscribedDataSetConfig *subscribedDataSetConfig,
578 UA_NodeId *sdsIdentifier);
579
580/** Remove StandaloneSubscribedDataSet, identified by the NodeId. */
583
584
585
586/** ReaderGroup configuration */
587typedef struct {
589
590 /* non std. field */
595
596 /* Messages are decrypted if a SecurityPolicy is configured and the
597 * securityMode set accordingly. The symmetric key is a runtime information
598 * and has to be set via UA_Server_setReaderGroupEncryptionKey. */
600#ifdef UA_ENABLE_PUBSUB_ENCRYPTION
601 UA_PubSubSecurityPolicy *securityPolicy;
602 UA_String securityGroupId;
603#endif
605
606void
608
609/** Add DataSetReader to the ReaderGroup */
611UA_Server_addDataSetReader(UA_Server *server, UA_NodeId readerGroupIdentifier,
612 const UA_DataSetReaderConfig *dataSetReaderConfig,
613 UA_NodeId *readerIdentifier);
614
615/** Remove DataSetReader from ReaderGroup */
618
619/** To Do: Update Configuration of ReaderGroup
620 * UA_StatusCode
621 * UA_Server_ReaderGroup_updateConfig(UA_Server *server, UA_NodeId readerGroupIdentifier,
622 * const UA_ReaderGroupConfig *config);
623 */
624
625/** Get configuraiton of ReaderGroup */
628 UA_ReaderGroupConfig *config);
629
630/** Get state of ReaderGroup */
633 UA_PubSubState *state);
634
635/** Add ReaderGroup to the created connection */
637UA_Server_addReaderGroup(UA_Server *server, UA_NodeId connectionIdentifier,
638 const UA_ReaderGroupConfig *readerGroupConfig,
639 UA_NodeId *readerGroupIdentifier);
640
641/** Remove ReaderGroup from connection */
644
647
650
653
656
657#ifdef UA_ENABLE_PUBSUB_ENCRYPTION
658/** Set the group key for the message encryption */
660UA_Server_setReaderGroupEncryptionKeys(UA_Server *server, UA_NodeId readerGroup,
661 UA_UInt32 securityTokenId,
662 UA_ByteString signingKey,
663 UA_ByteString encryptingKey,
664 UA_ByteString keyNonce);
665#endif
666
667#ifdef UA_ENABLE_PUBSUB_SKS
668
669
670
671typedef struct {
672 UA_String securityGroupName;
673 UA_Duration keyLifeTime;
674 UA_String securityPolicyUri;
675 UA_UInt32 maxFutureKeyCount;
676 UA_UInt32 maxPastKeyCount;
677} UA_SecurityGroupConfig;
678
679
681UA_Server_addSecurityGroup(UA_Server *server, UA_NodeId securityGroupFolderNodeId,
682 const UA_SecurityGroupConfig *securityGroupConfig,
683 UA_NodeId *securityGroupNodeId);
684
685
687UA_Server_removeSecurityGroup(UA_Server *server, const UA_NodeId securityGroup);
688
689
690typedef void
691(*UA_Server_sksPullRequestCallback)(UA_Server *server, UA_StatusCode sksPullRequestStatus, void* context);
692
693
695UA_Server_setSksClient(UA_Server *server, UA_String securityGroupId,
696 UA_ClientConfig *clientConfig, const char *endpointUrl,
697 UA_Server_sksPullRequestCallback callback, void *context);
698
699#endif /* UA_ENABLE_PUBSUB_SKS */
700
701#endif /* UA_ENABLE_PUBSUB */
702
704
705#endif /* UA_SERVER_PUBSUB_H */
void(* UA_ServerCallback)(UA_Server *server, void *data)
Definition common.h:203
struct UA_Server UA_Server
Definition common.h:198
#define _UA_BEGIN_DECLS
#undef UA_DEBUG_DUMP_PKGS
Definition config.h:100
#define UA_THREADSAFE
Definition config.h:413
#define _UA_END_DECLS
Definition config.h:107
UA_TimerPolicy
Definition eventloop.h:33
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_getWriterGroupConfig(UA_Server *server, const UA_NodeId writerGroup, UA_WriterGroupConfig *config)
Returns a deep copy of the config.
UA_StatusCode UA_THREADSAFE UA_Server_removePublishedDataSet(UA_Server *server, const UA_NodeId pds)
Remove PublishedDataSet, identified by the NodeId.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_DataSetReader_getState(UA_Server *server, UA_NodeId dataSetReaderIdentifier, UA_PubSubState *state)
Get state of DataSetReader.
void UA_PublishedDataSetConfig_clear(UA_PublishedDataSetConfig *pdsConfig)
void UA_DataSetWriterConfig_clear(UA_DataSetWriterConfig *pdsConfig)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_setWriterGroupOperational(UA_Server *server, const UA_NodeId writerGroup)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_getDataSetWriterConfig(UA_Server *server, const UA_NodeId dsw, UA_DataSetWriterConfig *config)
Returns a deep copy of the config.
UA_EXPORT UA_StatusCode UA_DataSetReaderConfig_copy(const UA_DataSetReaderConfig *src, UA_DataSetReaderConfig *dst)
Copy the configuration of DataSetReader.
UA_SubscribedDataSetEnumType
SubscribedDataSetDataType Definition.
@ UA_PUBSUB_SDS_MIRROR
@ UA_PUBSUB_SDS_TARGET
UA_EXPORT void UA_DataSetReaderConfig_clear(UA_DataSetReaderConfig *cfg)
Clear the configuration of a DataSetReader.
UA_PubSubEncodingType
@ UA_PUBSUB_ENCODING_JSON
@ UA_PUBSUB_ENCODING_UADP
@ UA_PUBSUB_ENCODING_BINARY
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_unfreezeReaderGroupConfiguration(UA_Server *server, const UA_NodeId readerGroupId)
UA_StatusCode UA_THREADSAFE UA_Server_removePubSubConnection(UA_Server *server, const UA_NodeId connection)
Remove Connection, identified by the NodeId.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_addStandaloneSubscribedDataSet(UA_Server *server, const UA_StandaloneSubscribedDataSetConfig *subscribedDataSetConfig, UA_NodeId *sdsIdentifier)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_addDataSetWriter(UA_Server *server, const UA_NodeId writerGroup, const UA_NodeId dataSet, const UA_DataSetWriterConfig *dataSetWriterConfig, UA_NodeId *writerIdentifier)
Add a new DataSetWriter to an existing WriterGroup.
UA_StatusCode UA_THREADSAFE UA_Server_addPubSubConnection(UA_Server *server, const UA_PubSubConnectionConfig *connectionConfig, UA_NodeId *connectionIdentifier)
Add a new PubSub connection to the given server and open it.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_addDataSetReader(UA_Server *server, UA_NodeId readerGroupIdentifier, const UA_DataSetReaderConfig *dataSetReaderConfig, UA_NodeId *readerIdentifier)
Add DataSetReader to the ReaderGroup.
UA_DataSetFieldType
@ UA_PUBSUB_DATASETFIELD_VARIABLE
@ UA_PUBSUB_DATASETFIELD_EVENT
UA_StatusCode UA_THREADSAFE UA_Server_getPubSubConnectionConfig(UA_Server *server, const UA_NodeId connection, UA_PubSubConnectionConfig *config)
Returns a deep copy of the config.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_setReaderGroupOperational(UA_Server *server, const UA_NodeId readerGroupId)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_setWriterGroupDisabled(UA_Server *server, const UA_NodeId writerGroup)
UA_PubSubRtEncoding
To Do:Implementation of SubscribedDataSetMirrorType UA_StatusCode A_PubSubDataSetReader_createDataSet...
@ UA_PUBSUB_RT_UNKNOWN
@ UA_PUBSUB_RT_VARIANT
@ UA_PUBSUB_RT_DATA_VALUE
@ UA_PUBSUB_RT_RAW
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_freezeReaderGroupConfiguration(UA_Server *server, const UA_NodeId readerGroupId)
UA_PubSubComponentEnumType
This Source Code Form is subject to the terms of the Mozilla Public License, v.
@ UA_PUBSUB_COMPONENT_DATASETWRITER
@ UA_PUBSUB_COMPONENT_DATASETREADER
@ UA_PUBSUB_COMPONENT_WRITERGROUP
@ UA_PUBSUB_COMPONENT_CONNECTION
@ UA_PUBSUB_COMPONENT_READERGROUP
void UA_WriterGroupConfig_clear(UA_WriterGroupConfig *writerGroupConfig)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_addWriterGroup(UA_Server *server, const UA_NodeId connection, const UA_WriterGroupConfig *writerGroupConfig, UA_NodeId *writerGroupIdentifier)
Add a new WriterGroup to an existing Connection.
UA_PubSubRTLevel
@ UA_PUBSUB_RT_DETERMINISTIC
@ UA_PUBSUB_RT_NONE
@ UA_PUBSUB_RT_DIRECT_VALUE_ACCESS
@ UA_PUBSUB_RT_FIXED_SIZE
void UA_DataSetFieldConfig_clear(UA_DataSetFieldConfig *dataSetFieldConfig)
UA_EXPORT UA_DataSetFieldResult UA_THREADSAFE UA_Server_addDataSetField(UA_Server *server, const UA_NodeId publishedDataSet, const UA_DataSetFieldConfig *fieldConfig, UA_NodeId *fieldIdentifier)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_WriterGroup_getState(UA_Server *server, UA_NodeId writerGroupIdentifier, UA_PubSubState *state)
Get state of WriterGroup.
UA_EXPORT UA_DataSetFieldResult UA_THREADSAFE UA_Server_removeDataSetField(UA_Server *server, const UA_NodeId dsf)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_getPublishedDataSetMetaData(UA_Server *server, const UA_NodeId pds, UA_DataSetMetaDataType *metaData)
Returns a deep copy of the DataSetMetaData for an specific PDS.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_ReaderGroup_getState(UA_Server *server, UA_NodeId readerGroupIdentifier, UA_PubSubState *state)
Get state of ReaderGroup.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_removeReaderGroup(UA_Server *server, UA_NodeId groupIdentifier)
Remove ReaderGroup from connection.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_freezeWriterGroupConfiguration(UA_Server *server, const UA_NodeId writerGroup)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_removeStandaloneSubscribedDataSet(UA_Server *server, const UA_NodeId sds)
Remove StandaloneSubscribedDataSet, identified by the NodeId.
UA_PublisherIdType
Valid PublisherId types from Part 14.
@ UA_PUBLISHERIDTYPE_UINT16
@ UA_PUBLISHERIDTYPE_STRING
@ UA_PUBLISHERIDTYPE_UINT64
@ UA_PUBLISHERIDTYPE_BYTE
@ UA_PUBLISHERIDTYPE_UINT32
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_DataSetReader_createTargetVariables(UA_Server *server, UA_NodeId dataSetReaderIdentifier, size_t targetVariablesSize, const UA_FieldTargetVariable *targetVariables)
Return Status Code after creating TargetVariables in Subscriber AddressSpace.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_DataSetWriter_getState(UA_Server *server, UA_NodeId dataSetWriterIdentifier, UA_PubSubState *state)
Get state of DataSetWriter.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_DataSetReader_updateConfig(UA_Server *server, UA_NodeId dataSetReaderIdentifier, UA_NodeId readerGroupIdentifier, const UA_DataSetReaderConfig *config)
Update configuration to the DataSetReader.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_DataSetReader_getConfig(UA_Server *server, UA_NodeId dataSetReaderIdentifier, UA_DataSetReaderConfig *config)
Get the configuration (copy) of the DataSetReader.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_addReaderGroup(UA_Server *server, UA_NodeId connectionIdentifier, const UA_ReaderGroupConfig *readerGroupConfig, UA_NodeId *readerGroupIdentifier)
Add ReaderGroup to the created connection.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_getPublishedDataSetConfig(UA_Server *server, const UA_NodeId pds, UA_PublishedDataSetConfig *config)
Returns a deep copy of the config.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_WriterGroup_publish(UA_Server *server, const UA_NodeId writerGroupIdentifier)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_ReaderGroup_getConfig(UA_Server *server, UA_NodeId readerGroupIdentifier, UA_ReaderGroupConfig *config)
To Do: Update Configuration of ReaderGroup UA_StatusCode UA_Server_ReaderGroup_updateConfig(UA_Server...
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_setReaderGroupDisabled(UA_Server *server, const UA_NodeId readerGroupId)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_updateWriterGroupConfig(UA_Server *server, UA_NodeId writerGroupIdentifier, const UA_WriterGroupConfig *config)
void UA_ReaderGroupConfig_clear(UA_ReaderGroupConfig *readerGroupConfig)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_removeDataSetReader(UA_Server *server, UA_NodeId readerIdentifier)
Remove DataSetReader from ReaderGroup.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_unfreezeWriterGroupConfiguration(UA_Server *server, const UA_NodeId writerGroup)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_WriterGroup_lastPublishTimestamp(UA_Server *server, const UA_NodeId writerGroupId, UA_DateTime *timestamp)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_getDataSetFieldConfig(UA_Server *server, const UA_NodeId dsf, UA_DataSetFieldConfig *config)
Returns a deep copy of the config.
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_removeDataSetWriter(UA_Server *server, const UA_NodeId dsw)
UA_EXPORT UA_StatusCode UA_THREADSAFE UA_Server_removeWriterGroup(UA_Server *server, const UA_NodeId writerGroup)
UA_EXPORT UA_AddPublishedDataSetResult UA_THREADSAFE UA_Server_addPublishedDataSet(UA_Server *server, const UA_PublishedDataSetConfig *publishedDataSetConfig, UA_NodeId *pdsIdentifier)
UA_PublishedDataSetType
The UA_PUBSUB_DATASET_PUBLISHEDITEMS has currently no additional members and thus no dedicated config...
@ UA_PUBSUB_DATASET_PUBLISHEDEVENTS
@ UA_PUBSUB_DATASET_PUBLISHEDITEMS_TEMPLATE
@ UA_PUBSUB_DATASET_PUBLISHEDEVENTS_TEMPLATE
@ UA_PUBSUB_DATASET_PUBLISHEDITEMS
void UA_StandaloneSubscribedDataSetConfig_clear(UA_StandaloneSubscribedDataSetConfig *sdsConfig)
UA_ConfigurationVersionDataType configurationVersion
ConfigurationVersionDataType.
UA_DataSetFieldType dataSetFieldType
UA_DataSetVariableConfig variable
UA_ConfigurationVersionDataType configurationVersion
DataSetMetaDataType.
Parameters for PubSub DataSetReader Configuration.
UA_DataSetMetaDataType dataSetMetaData
UA_ExtensionObject messageSettings
UA_ExtensionObject transportSettings
UA_TargetVariables subscribedDataSetTarget
UA_String linkedStandaloneSubscribedDataSetName
UA_PubSubRtEncoding expectedEncoding
UA_DataSetFieldContentMask dataSetFieldContentMask
UA_SubscribedDataSetEnumType subscribedDataSetType
UA_ConfigurationVersionDataType configurationVersion
UA_PublishedVariableDataType publishParameters
UA_DataValue ** staticValueSource
UA_KeyValueMap dataSetWriterProperties
UA_DataSetFieldContentMask dataSetFieldContentMask
UA_ExtensionObject messageSettings
UA_ExtensionObject transportSettings
FieldTargetDataType.
UA_FieldTargetDataType targetVariable
UA_DataValue ** externalDataValue
General PubSub configuration.
void(* stateChangeCallback)(UA_Server *server, UA_NodeId *id, UA_PubSubState state, UA_StatusCode status)
UA_Variant connectionTransportSettings
UA_PublisherIdType publisherIdType
UA_KeyValueMap connectionProperties
UA_PublishedVariableDataType * variablesToAdd
Configuration structure for PublishedDataSet.
UA_PublishedEventConfig event
UA_PublishedEventTemplateConfig eventTemplate
UA_PublishedDataItemsTemplateConfig itemsTemplate
UA_PublishedDataSetType publishedDataSetType
UA_ContentFilter filter
UA_SimpleAttributeOperand * selectedFields
UA_DataSetMetaDataType metaData
PublishedVariableDataType.
ReaderGroup configuration.
UA_KeyValueMap groupProperties
UA_PubSubRTLevel rtLevel
UA_PubSubEncodingType encodingMimeType
UA_MessageSecurityMode securityMode
UA_ExtensionObject transportSettings
SimpleAttributeOperand.
UA_DataSetMetaDataType dataSetMetaData
UA_TargetVariablesDataType target
UA_SubscribedDataSetEnumType subscribedDataSetType
TargetVariablesDataType.
UA_FieldTargetVariable * targetVariables
UA_KeyValueMap groupProperties
UA_PubSub_CallbackLifecycle pubsubManagerCallback
UA_MessageSecurityMode securityMode
UA_Duration publishingInterval
UA_PubSubEncodingType encodingMimeType
UA_ExtensionObject transportSettings
UA_UInt16 maxEncapsulatedDataSetMessageCount
UA_PubSubRTLevel rtLevel
UA_ExtensionObject messageSettings
_UA_BEGIN_DECLS typedef bool UA_Boolean
This Source Code Form is subject to the terms of the Mozilla Public License, v.
Definition types.h:27
uint16_t UA_UInt16
Definition types.h:47
return id
Definition types.h:341
uint32_t UA_UInt32
Definition types.h:57
void * dst
Definition types.h:948
uint32_t UA_StatusCode
Definition types.h:82
double UA_Double
Definition types.h:77
uint8_t UA_Byte
Definition types.h:37
uint64_t UA_UInt64
Definition types.h:67
UA_MessageSecurityMode
MessageSecurityMode.
UA_UInt32 UA_DataSetFieldContentMask
DataSetFieldContentMask.
UA_Double UA_Duration
Duration.
UA_PubSubState
PubSubState.
Publisher Id Valid types are defined in Part 14, 7.2.2.2.2 NetworkMessage Layout:
UA_UInt64 uint64
UA_UInt32 uint32
UA_UInt16 uint16
UA_String string