ua_nodes.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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. #define UA_STANDARD_NODEMEMBERS \
  7. UA_NodeId nodeId; \
  8. UA_NodeClass nodeClass; \
  9. UA_QualifiedName browseName; \
  10. UA_LocalizedText displayName; \
  11. UA_LocalizedText description; \
  12. UA_UInt32 writeMask; \
  13. UA_UInt32 userWriteMask; \
  14. UA_Int32 referencesSize; \
  15. UA_ReferenceNode *references;
  16. typedef struct {
  17. UA_STANDARD_NODEMEMBERS
  18. } UA_Node;
  19. /**************/
  20. /* ObjectNode */
  21. /**************/
  22. typedef struct {
  23. UA_STANDARD_NODEMEMBERS
  24. UA_Byte eventNotifier;
  25. } UA_ObjectNode;
  26. UA_TYPE_HANDLING_FUNCTIONS(UA_ObjectNode)
  27. /******************/
  28. /* ObjectTypeNode */
  29. /******************/
  30. typedef struct {
  31. UA_STANDARD_NODEMEMBERS
  32. UA_Boolean isAbstract;
  33. } UA_ObjectTypeNode;
  34. UA_TYPE_HANDLING_FUNCTIONS(UA_ObjectTypeNode)
  35. typedef enum {
  36. UA_VALUESOURCE_VARIANT,
  37. UA_VALUESOURCE_DATASOURCE
  38. } UA_ValueSource;
  39. /****************/
  40. /* VariableNode */
  41. /****************/
  42. typedef struct {
  43. UA_STANDARD_NODEMEMBERS
  44. UA_Int32 valueRank; /**< n >= 1: the value is an array with the specified number of dimensions.
  45. n = 0: the value is an array with one or more dimensions.
  46. n = -1: the value is a scalar.
  47. n = -2: the value can be a scalar or an array with any number of dimensions.
  48. n = -3: the value can be a scalar or a one dimensional array. */
  49. UA_ValueSource valueSource;
  50. union {
  51. UA_Variant variant;
  52. UA_DataSource dataSource;
  53. } value;
  54. /* <--- similar to variabletypenodes up to there--->*/
  55. UA_Byte accessLevel;
  56. UA_Byte userAccessLevel;
  57. UA_Double minimumSamplingInterval;
  58. UA_Boolean historizing;
  59. } UA_VariableNode;
  60. UA_TYPE_HANDLING_FUNCTIONS(UA_VariableNode)
  61. /** Make a copy but leave out the references and the variable */
  62. UA_StatusCode UA_VariableNode_copyWithoutRefsAndVariable(const UA_VariableNode *src, UA_VariableNode *dst);
  63. /********************/
  64. /* VariableTypeNode */
  65. /********************/
  66. typedef struct {
  67. UA_STANDARD_NODEMEMBERS
  68. UA_Int32 valueRank;
  69. UA_ValueSource valueSource;
  70. union {
  71. UA_Variant variant;
  72. UA_DataSource dataSource;
  73. } value;
  74. /* <--- similar to variablenodes up to there--->*/
  75. UA_Boolean isAbstract;
  76. } UA_VariableTypeNode;
  77. UA_TYPE_HANDLING_FUNCTIONS(UA_VariableTypeNode)
  78. /*********************/
  79. /* ReferenceTypeNode */
  80. /*********************/
  81. typedef struct {
  82. UA_STANDARD_NODEMEMBERS
  83. UA_Boolean isAbstract;
  84. UA_Boolean symmetric;
  85. UA_LocalizedText inverseName;
  86. } UA_ReferenceTypeNode;
  87. UA_TYPE_HANDLING_FUNCTIONS(UA_ReferenceTypeNode)
  88. /***********************/
  89. /* ReferenceMethodNode */
  90. /***********************/
  91. typedef struct {
  92. UA_STANDARD_NODEMEMBERS
  93. UA_Boolean executable;
  94. UA_Boolean userExecutable;
  95. #ifdef ENABLE_METHODCALLS
  96. UA_MethodCallback attachedMethod;
  97. #endif
  98. } UA_MethodNode;
  99. UA_TYPE_HANDLING_FUNCTIONS(UA_MethodNode)
  100. /************/
  101. /* ViewNode */
  102. /************/
  103. typedef struct {
  104. UA_STANDARD_NODEMEMBERS
  105. UA_Boolean containsNoLoops;
  106. UA_Byte eventNotifier;
  107. } UA_ViewNode;
  108. UA_TYPE_HANDLING_FUNCTIONS(UA_ViewNode)
  109. /****************/
  110. /* DataTypeNode */
  111. /****************/
  112. typedef struct {
  113. UA_STANDARD_NODEMEMBERS
  114. UA_Boolean isAbstract;
  115. } UA_DataTypeNode;
  116. UA_TYPE_HANDLING_FUNCTIONS(UA_DataTypeNode)
  117. #endif /* UA_NODES_H_ */