ua_nodes.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. #ifndef UA_NODES_H_
  2. #define UA_NODES_H_
  3. #include "ua_server.h"
  4. #include "ua_types_generated.h"
  5. #include "ua_types_encoding_binary.h"
  6. /*
  7. * Most APIs take and return UA_EditNode and UA_ConstNode. By looking up the
  8. * nodeclass, nodes can be cast to their "true" class, i.e. UA_VariableNode,
  9. * UA_ObjectNode, and so on.
  10. */
  11. #define UA_STANDARD_NODEMEMBERS \
  12. UA_NodeId nodeId; \
  13. UA_NodeClass nodeClass; \
  14. UA_QualifiedName browseName; \
  15. UA_LocalizedText displayName; \
  16. UA_LocalizedText description; \
  17. UA_UInt32 writeMask; \
  18. UA_UInt32 userWriteMask; \
  19. size_t referencesSize; \
  20. UA_ReferenceNode *references;
  21. typedef struct {
  22. UA_STANDARD_NODEMEMBERS
  23. } UA_Node;
  24. void UA_Node_deleteMembersAnyNodeClass(UA_Node *node);
  25. UA_StatusCode UA_Node_copyAnyNodeClass(const UA_Node *src, UA_Node *dst);
  26. /**************/
  27. /* ObjectNode */
  28. /**************/
  29. typedef struct {
  30. UA_STANDARD_NODEMEMBERS
  31. UA_Byte eventNotifier;
  32. void *instanceHandle;
  33. } UA_ObjectNode;
  34. /******************/
  35. /* ObjectTypeNode */
  36. /******************/
  37. typedef struct {
  38. UA_STANDARD_NODEMEMBERS
  39. UA_Boolean isAbstract;
  40. UA_ObjectLifecycleManagement lifecycleManagement;
  41. } UA_ObjectTypeNode;
  42. typedef enum {
  43. UA_VALUESOURCE_VARIANT,
  44. UA_VALUESOURCE_DATASOURCE
  45. } UA_ValueSource;
  46. /****************/
  47. /* VariableNode */
  48. /****************/
  49. typedef struct {
  50. UA_STANDARD_NODEMEMBERS
  51. UA_Int32 valueRank; /**< n >= 1: the value is an array with the specified number of dimensions.
  52. n = 0: the value is an array with one or more dimensions.
  53. n = -1: the value is a scalar.
  54. n = -2: the value can be a scalar or an array with any number of dimensions.
  55. n = -3: the value can be a scalar or a one dimensional array. */
  56. UA_ValueSource valueSource;
  57. union {
  58. struct {
  59. UA_Variant value;
  60. UA_ValueCallback callback;
  61. } variant;
  62. UA_DataSource dataSource;
  63. } value;
  64. /* <--- similar to variabletypenodes up to there--->*/
  65. UA_Byte accessLevel;
  66. UA_Byte userAccessLevel;
  67. UA_Double minimumSamplingInterval;
  68. UA_Boolean historizing;
  69. } UA_VariableNode;
  70. /********************/
  71. /* VariableTypeNode */
  72. /********************/
  73. typedef struct {
  74. UA_STANDARD_NODEMEMBERS
  75. UA_Int32 valueRank;
  76. UA_ValueSource valueSource;
  77. union {
  78. struct {
  79. UA_Variant value;
  80. UA_ValueCallback callback;
  81. } variant;
  82. UA_DataSource dataSource;
  83. } value;
  84. /* <--- similar to variablenodes up to there--->*/
  85. UA_Boolean isAbstract;
  86. } UA_VariableTypeNode;
  87. /*********************/
  88. /* ReferenceTypeNode */
  89. /*********************/
  90. typedef struct {
  91. UA_STANDARD_NODEMEMBERS
  92. UA_Boolean isAbstract;
  93. UA_Boolean symmetric;
  94. UA_LocalizedText inverseName;
  95. } UA_ReferenceTypeNode;
  96. /**************/
  97. /* MethodNode */
  98. /**************/
  99. typedef struct {
  100. UA_STANDARD_NODEMEMBERS
  101. UA_Boolean executable;
  102. UA_Boolean userExecutable;
  103. void *methodHandle;
  104. UA_MethodCallback attachedMethod;
  105. } UA_MethodNode;
  106. /************/
  107. /* ViewNode */
  108. /************/
  109. typedef struct {
  110. UA_STANDARD_NODEMEMBERS
  111. UA_Byte eventNotifier;
  112. /* <-- the same as objectnode until here --> */
  113. UA_Boolean containsNoLoops;
  114. } UA_ViewNode;
  115. /****************/
  116. /* DataTypeNode */
  117. /****************/
  118. typedef struct {
  119. UA_STANDARD_NODEMEMBERS
  120. UA_Boolean isAbstract;
  121. } UA_DataTypeNode;
  122. #endif /* UA_NODES_H_ */