opaque_type_mapping.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. # Opaque types are in general defined as simple byte strings. For the base opaque types there is a corresponding node id definition
  2. # in the nodeset. E.g. Opc.Ua.Types.bsd contains the simple definition for OpaqueType LocaleId. In Opc.Ua.NodeSet2.xml the LocaleId
  3. # is defined as a Subtype of String(i=12) thus LocaleId is a String object.
  4. # TODO we can automate this mapping by loading the NodeSet2.xml and read those mappings automatically. For now we just use this map
  5. opaque_type_mapping = {
  6. 'Image': {
  7. 'ns': 0,
  8. 'id': 15,
  9. 'name': 'ByteString'
  10. },
  11. 'Number': {
  12. 'ns': 0,
  13. 'id': 24,
  14. 'name': 'BaseDataType'
  15. },
  16. 'UInteger': {
  17. 'ns': 0,
  18. 'id': 24,
  19. 'name': 'BaseDataType'
  20. },
  21. 'ImageBMP': {
  22. 'ns': 0,
  23. 'id': 15,
  24. 'name': 'ByteString'
  25. },
  26. 'ImageGIF': {
  27. 'ns': 0,
  28. 'id': 15,
  29. 'name': 'ByteString'
  30. },
  31. 'ImageJPG': {
  32. 'ns': 0,
  33. 'id': 15,
  34. 'name': 'ByteString'
  35. },
  36. 'ImagePNG': {
  37. 'ns': 0,
  38. 'id': 15,
  39. 'name': 'ByteString'
  40. },
  41. 'BitFieldMaskDataType': {
  42. 'ns': 0,
  43. 'id': 9,
  44. 'name': 'UInt64'
  45. },
  46. 'NormalizedString': {
  47. 'ns': 0,
  48. 'id': 12,
  49. 'name': 'String'
  50. },
  51. 'DecimalString': {
  52. 'ns': 0,
  53. 'id': 12,
  54. 'name': 'String'
  55. },
  56. 'DurationString': {
  57. 'ns': 0,
  58. 'id': 12,
  59. 'name': 'String'
  60. },
  61. 'TimeString': {
  62. 'ns': 0,
  63. 'id': 12,
  64. 'name': 'String'
  65. },
  66. 'DateString': {
  67. 'ns': 0,
  68. 'id': 12,
  69. 'name': 'String'
  70. },
  71. 'Duration': {
  72. 'ns': 0,
  73. 'id': 11,
  74. 'name': 'Double'
  75. },
  76. 'UtcTime': {
  77. 'ns': 0,
  78. 'id': 13,
  79. 'name': 'DateTime'
  80. },
  81. 'LocaleId': {
  82. 'ns': 0,
  83. 'id': 12,
  84. 'name': 'String'
  85. },
  86. 'IntegerId': {
  87. 'ns': 0,
  88. 'id': 7,
  89. 'name': 'UInt32'
  90. },
  91. 'ApplicationInstanceCertificate': {
  92. 'ns': 0,
  93. 'id': 15,
  94. 'name': 'ByteString'
  95. },
  96. 'SessionAuthenticationToken': {
  97. 'ns': 0,
  98. 'id': 17,
  99. 'name': 'NodeId'
  100. },
  101. 'ContinuationPoint': {
  102. 'ns': 0,
  103. 'id': 15,
  104. 'name': 'ByteString'
  105. },
  106. 'Counter': {
  107. 'ns': 0,
  108. 'id': 7,
  109. 'name': 'UInt32'
  110. },
  111. 'NumericRange': {
  112. 'ns': 0,
  113. 'id': 12,
  114. 'name': 'String'
  115. },
  116. 'Time': {
  117. 'ns': 0,
  118. 'id': 12,
  119. 'name': 'String'
  120. },
  121. 'Date': {
  122. 'ns': 0,
  123. 'id': 13,
  124. 'name': 'DateTime'
  125. }
  126. }
  127. def get_base_type_for_opaque(opaqueTypeName):
  128. if opaqueTypeName in opaque_type_mapping:
  129. return opaque_type_mapping[opaqueTypeName]
  130. # Default if not in mapping is ByteString
  131. return {
  132. 'ns': 0,
  133. 'id': 15,
  134. 'name': 'ByteString'
  135. }