@bitpoolos/edge-bacnet 1.1.7 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +2 -2
  2. package/bacnet_client.js +331 -168
  3. package/bacnet_device.js +50 -16
  4. package/bacnet_gateway.html +119 -15
  5. package/bacnet_gateway.js +388 -395
  6. package/bacnet_read.html +32 -11
  7. package/bacnet_read.js +1 -1
  8. package/bacnet_server.js +86 -24
  9. package/common.js +26 -19
  10. package/examples/1-Discover-Read.json +1 -1
  11. package/examples/2-Discover-Write.json +1 -1
  12. package/examples/3-Discover-Read-Write.json +1 -1
  13. package/package.json +3 -3
  14. package/resources/{node-bacnet/LICENSE.md → node-bacstack-ts/LICENSE} +3 -4
  15. package/resources/node-bacstack-ts/README.md +75 -0
  16. package/resources/{node-bacnet → node-bacstack-ts/dist}/index.js +0 -2
  17. package/resources/node-bacstack-ts/dist/lib/apdu.js +193 -0
  18. package/resources/node-bacstack-ts/dist/lib/asn1.js +1660 -0
  19. package/resources/node-bacstack-ts/dist/lib/bvlc.js +47 -0
  20. package/resources/node-bacstack-ts/dist/lib/client.js +1454 -0
  21. package/resources/node-bacstack-ts/dist/lib/enum.js +2114 -0
  22. package/resources/node-bacstack-ts/dist/lib/npdu.js +112 -0
  23. package/resources/node-bacstack-ts/dist/lib/services/add-list-element.js +58 -0
  24. package/resources/node-bacstack-ts/dist/lib/services/alarm-acknowledge.js +93 -0
  25. package/resources/node-bacstack-ts/dist/lib/services/alarm-summary.js +42 -0
  26. package/resources/node-bacstack-ts/dist/lib/services/atomic-read-file.js +157 -0
  27. package/resources/node-bacstack-ts/dist/lib/services/atomic-write-file.js +136 -0
  28. package/resources/node-bacstack-ts/dist/lib/services/cov-notify.js +119 -0
  29. package/resources/node-bacstack-ts/dist/lib/services/create-object.js +104 -0
  30. package/resources/node-bacstack-ts/dist/lib/services/delete-object.js +21 -0
  31. package/resources/node-bacstack-ts/dist/lib/services/device-communication-control.js +46 -0
  32. package/resources/node-bacstack-ts/dist/lib/services/error.js +27 -0
  33. package/resources/node-bacstack-ts/dist/lib/services/event-information.js +100 -0
  34. package/resources/node-bacstack-ts/dist/lib/services/event-notify-data.js +219 -0
  35. package/resources/node-bacstack-ts/dist/lib/services/get-enrollment-summary.js +172 -0
  36. package/resources/node-bacstack-ts/dist/lib/services/get-event-information.js +135 -0
  37. package/resources/node-bacstack-ts/dist/lib/services/i-am-broadcast.js +59 -0
  38. package/resources/node-bacstack-ts/dist/lib/services/i-have-broadcast.js +34 -0
  39. package/resources/node-bacstack-ts/dist/lib/services/index.js +32 -0
  40. package/resources/node-bacstack-ts/dist/lib/services/life-safety-operation.js +40 -0
  41. package/resources/node-bacstack-ts/dist/lib/services/private-transfer.js +43 -0
  42. package/resources/node-bacstack-ts/dist/lib/services/read-property-multiple.js +44 -0
  43. package/resources/node-bacstack-ts/dist/lib/services/read-property.js +122 -0
  44. package/resources/node-bacstack-ts/dist/lib/services/read-range.js +201 -0
  45. package/resources/node-bacstack-ts/dist/lib/services/reinitialize-device.js +35 -0
  46. package/resources/node-bacstack-ts/dist/lib/services/subscribe-cov.js +55 -0
  47. package/resources/node-bacstack-ts/dist/lib/services/subscribe-property.js +93 -0
  48. package/resources/node-bacstack-ts/dist/lib/services/time-sync.js +31 -0
  49. package/resources/node-bacstack-ts/dist/lib/services/who-has.js +56 -0
  50. package/resources/node-bacstack-ts/dist/lib/services/who-is.js +45 -0
  51. package/resources/node-bacstack-ts/dist/lib/services/write-property-multiple.js +105 -0
  52. package/resources/node-bacstack-ts/dist/lib/services/write-property.js +90 -0
  53. package/resources/node-bacstack-ts/dist/lib/transport.js +49 -0
  54. package/resources/node-bacstack-ts/dist/lib/types.js +2 -0
  55. package/resources/node-bacstack-ts/package.json +94 -0
  56. package/resources/node-bacnet/CHANGELOG.md +0 -481
  57. package/resources/node-bacnet/README.md +0 -91
  58. package/resources/node-bacnet/docs/Client.html +0 -4422
  59. package/resources/node-bacnet/docs/bacnet-icon-quad.png +0 -0
  60. package/resources/node-bacnet/docs/bacnet-icon-quad128.png +0 -0
  61. package/resources/node-bacnet/docs/bacnet-icon-quad64.png +0 -0
  62. package/resources/node-bacnet/docs/bacnet-icon-small.xcf +0 -0
  63. package/resources/node-bacnet/docs/bacnet-icon.xcf +0 -0
  64. package/resources/node-bacnet/docs/bacnet.html +0 -7032
  65. package/resources/node-bacnet/docs/client.js.html +0 -1759
  66. package/resources/node-bacnet/docs/enum.js.html +0 -2530
  67. package/resources/node-bacnet/docs/global.html +0 -2068
  68. package/resources/node-bacnet/docs/images/mocha-logo.svg +0 -65
  69. package/resources/node-bacnet/docs/index.html +0 -283
  70. package/resources/node-bacnet/docs/scripts/collapse.js +0 -11
  71. package/resources/node-bacnet/docs/scripts/jquery-3.1.1.min.js +0 -4
  72. package/resources/node-bacnet/docs/scripts/linenumber.js +0 -26
  73. package/resources/node-bacnet/docs/scripts/prettify/Apache-License-2.0.txt +0 -202
  74. package/resources/node-bacnet/docs/scripts/prettify/lang-css.js +0 -2
  75. package/resources/node-bacnet/docs/scripts/prettify/prettify.js +0 -28
  76. package/resources/node-bacnet/docs/scripts/search.js +0 -47
  77. package/resources/node-bacnet/docs/services_i-am.js.html +0 -157
  78. package/resources/node-bacnet/docs/services_time-sync.js.html +0 -118
  79. package/resources/node-bacnet/docs/services_who-is.js.html +0 -138
  80. package/resources/node-bacnet/docs/styles/jsdoc.css +0 -683
  81. package/resources/node-bacnet/docs/styles/prettify.css +0 -82
  82. package/resources/node-bacnet/examples/discover-devices.js +0 -66
  83. package/resources/node-bacnet/examples/read-device.js +0 -510
  84. package/resources/node-bacnet/examples/subscribe-cov.js +0 -75
  85. package/resources/node-bacnet/lib/apdu.js +0 -209
  86. package/resources/node-bacnet/lib/asn1.js +0 -1733
  87. package/resources/node-bacnet/lib/bvlc.js +0 -90
  88. package/resources/node-bacnet/lib/client.js +0 -1695
  89. package/resources/node-bacnet/lib/enum.js +0 -2463
  90. package/resources/node-bacnet/lib/npdu.js +0 -123
  91. package/resources/node-bacnet/lib/services/add-list-element.js +0 -64
  92. package/resources/node-bacnet/lib/services/alarm-acknowledge.js +0 -90
  93. package/resources/node-bacnet/lib/services/alarm-summary.js +0 -42
  94. package/resources/node-bacnet/lib/services/atomic-read-file.js +0 -162
  95. package/resources/node-bacnet/lib/services/atomic-write-file.js +0 -138
  96. package/resources/node-bacnet/lib/services/cov-notify.js +0 -126
  97. package/resources/node-bacnet/lib/services/create-object.js +0 -106
  98. package/resources/node-bacnet/lib/services/delete-object.js +0 -23
  99. package/resources/node-bacnet/lib/services/device-communication-control.js +0 -48
  100. package/resources/node-bacnet/lib/services/error.js +0 -33
  101. package/resources/node-bacnet/lib/services/event-information.js +0 -99
  102. package/resources/node-bacnet/lib/services/event-notify-data.js +0 -229
  103. package/resources/node-bacnet/lib/services/get-enrollment-summary.js +0 -178
  104. package/resources/node-bacnet/lib/services/get-event-information.js +0 -144
  105. package/resources/node-bacnet/lib/services/i-am.js +0 -90
  106. package/resources/node-bacnet/lib/services/i-have.js +0 -34
  107. package/resources/node-bacnet/lib/services/index.js +0 -34
  108. package/resources/node-bacnet/lib/services/life-safety-operation.js +0 -40
  109. package/resources/node-bacnet/lib/services/private-transfer.js +0 -43
  110. package/resources/node-bacnet/lib/services/read-property-multiple.js +0 -50
  111. package/resources/node-bacnet/lib/services/read-property.js +0 -130
  112. package/resources/node-bacnet/lib/services/read-range.js +0 -201
  113. package/resources/node-bacnet/lib/services/register-foreign-device.js +0 -18
  114. package/resources/node-bacnet/lib/services/reinitialize-device.js +0 -37
  115. package/resources/node-bacnet/lib/services/subscribe-cov.js +0 -57
  116. package/resources/node-bacnet/lib/services/subscribe-property.js +0 -97
  117. package/resources/node-bacnet/lib/services/time-sync.js +0 -51
  118. package/resources/node-bacnet/lib/services/who-has.js +0 -54
  119. package/resources/node-bacnet/lib/services/who-is.js +0 -71
  120. package/resources/node-bacnet/lib/services/write-property-multiple.js +0 -117
  121. package/resources/node-bacnet/lib/services/write-property.js +0 -94
  122. package/resources/node-bacnet/lib/transport.js +0 -82
  123. package/resources/node-bacnet/package.json +0 -92
@@ -1,178 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../asn1');
4
- const baEnum = require('../enum');
5
-
6
- module.exports.encode = (buffer, acknowledgmentFilter, enrollmentFilter, eventStateFilter, eventTypeFilter, priorityFilter, notificationClassFilter) => {
7
- baAsn1.encodeContextEnumerated(buffer, 0, acknowledgmentFilter);
8
- if (enrollmentFilter) {
9
- baAsn1.encodeOpeningTag(buffer, 1);
10
- baAsn1.encodeOpeningTag(buffer, 0);
11
- baAsn1.encodeContextObjectId(buffer, 0, enrollmentFilter.objectId.type, enrollmentFilter.objectId.instance);
12
- baAsn1.encodeClosingTag(buffer, 0);
13
- baAsn1.encodeContextUnsigned(buffer, 1, enrollmentFilter.processId);
14
- baAsn1.encodeClosingTag(buffer, 1);
15
- }
16
- if (eventStateFilter) {
17
- baAsn1.encodeOpeningTag(buffer, 2);
18
- baAsn1.encodeContextEnumerated(buffer, 0, eventStateFilter);
19
- baAsn1.encodeClosingTag(buffer, 2);
20
- }
21
- if (eventTypeFilter) {
22
- baAsn1.encodeOpeningTag(buffer, 3);
23
- baAsn1.encodeContextEnumerated(buffer, 0, eventTypeFilter);
24
- baAsn1.encodeClosingTag(buffer, 3);
25
- }
26
- if (priorityFilter) {
27
- baAsn1.encodeOpeningTag(buffer, 4);
28
- baAsn1.encodeContextUnsigned(buffer, 0, priorityFilter.min);
29
- baAsn1.encodeContextUnsigned(buffer, 1, priorityFilter.max);
30
- baAsn1.encodeClosingTag(buffer, 4);
31
- }
32
- if (notificationClassFilter) {
33
- baAsn1.encodeOpeningTag(buffer, 5);
34
- baAsn1.encodeContextUnsigned(buffer, 0, notificationClassFilter);
35
- baAsn1.encodeClosingTag(buffer, 5);
36
- }
37
- };
38
-
39
- module.exports.decode = (buffer, offset, apduLen) => {
40
- let len = 0;
41
- let result;
42
- let decodedValue;
43
- let value = {};
44
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
45
- len += result.len;
46
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
47
- len += decodedValue.len;
48
- value.acknowledgmentFilter = decodedValue.value;
49
- if (baAsn1.decodeIsContextTag(buffer, offset + len, 1)) {
50
- len++;
51
- value.enrollmentFilter = {};
52
- if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) {
53
- return undefined;
54
- }
55
- len++;
56
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
57
- len += result.len;
58
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
59
- len += decodedValue.len;
60
- value.enrollmentFilter.objectId = {type: decodedValue.objectType, instance: decodedValue.instance};
61
- len++;
62
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
63
- len += result.len;
64
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
65
- len += decodedValue.len;
66
- value.enrollmentFilter.processId = decodedValue.value;
67
- len++;
68
- }
69
- if (baAsn1.decodeIsContextTag(buffer, offset + len, 2)) {
70
- len++;
71
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
72
- len += result.len;
73
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
74
- len += decodedValue.len;
75
- value.eventStateFilter = decodedValue.value;
76
- len++;
77
- }
78
- if (baAsn1.decodeIsContextTag(buffer, offset + len, 3)) {
79
- len++;
80
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
81
- len += result.len;
82
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
83
- len += decodedValue.len;
84
- value.eventTypeFilter = decodedValue.value;
85
- len++;
86
- }
87
- if (baAsn1.decodeIsContextTag(buffer, offset + len, 4)) {
88
- len++;
89
- value.priorityFilter = {};
90
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
91
- len += result.len;
92
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
93
- len += decodedValue.len;
94
- value.priorityFilter.min = decodedValue.value;
95
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
96
- len += result.len;
97
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
98
- len += decodedValue.len;
99
- value.priorityFilter.max = decodedValue.value;
100
- len++;
101
- }
102
- if (baAsn1.decodeIsContextTag(buffer, offset + len, 5)) {
103
- len++;
104
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
105
- len += result.len;
106
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
107
- len += decodedValue.len;
108
- value.notificationClassFilter = decodedValue.value;
109
- len++;
110
- }
111
- value.len = len;
112
- return value;
113
- };
114
-
115
- module.exports.encodeAcknowledge = (buffer, enrollmentSummaries) => {
116
- enrollmentSummaries.forEach((enrollmentSummary) => {
117
- baAsn1.encodeApplicationObjectId(buffer, enrollmentSummary.objectId.type, enrollmentSummary.objectId.instance);
118
- baAsn1.encodeApplicationEnumerated(buffer, enrollmentSummary.eventType);
119
- baAsn1.encodeApplicationEnumerated(buffer, enrollmentSummary.eventState);
120
- baAsn1.encodeApplicationUnsigned(buffer, enrollmentSummary.priority);
121
- baAsn1.encodeApplicationUnsigned(buffer, enrollmentSummary.notificationClass);
122
- });
123
- };
124
-
125
- module.exports.decodeAcknowledge = (buffer, offset, apduLen) => {
126
- let len = 0;
127
- let result;
128
- let decodedValue;
129
- const enrollmentSummaries = [];
130
- while ((apduLen - len) > 0) {
131
- const enrollmentSummary = {};
132
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
133
- len += result.len;
134
- if (result.tagNumber !== baEnum.ApplicationTag.OBJECTIDENTIFIER) {
135
- return undefined;
136
- }
137
- result = baAsn1.decodeObjectId(buffer, offset + len);
138
- len += result.len;
139
- enrollmentSummary.objectId = {type: result.objectType, instance: result.instance};
140
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
141
- len += result.len;
142
- if (result.tagNumber !== baEnum.ApplicationTag.ENUMERATED) {
143
- return undefined;
144
- }
145
- result = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
146
- len += result.len;
147
- enrollmentSummary.eventType = result.value;
148
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
149
- len += result.len;
150
- if (result.tagNumber !== baEnum.ApplicationTag.ENUMERATED) {
151
- return undefined;
152
- }
153
- result = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
154
- len += result.len;
155
- enrollmentSummary.eventState = result.value;
156
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
157
- len += result.len;
158
- if (result.tagNumber !== baEnum.ApplicationTag.UNSIGNED_INTEGER) {
159
- return undefined;
160
- }
161
- result = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
162
- len += result.len;
163
- enrollmentSummary.priority = result.value;
164
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
165
- len += result.len;
166
- if (result.tagNumber !== baEnum.ApplicationTag.UNSIGNED_INTEGER) {
167
- return undefined;
168
- }
169
- result = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
170
- len += result.len;
171
- enrollmentSummary.notificationClass = result.value;
172
- enrollmentSummaries.push(enrollmentSummary);
173
- }
174
- return {
175
- enrollmentSummaries,
176
- len
177
- };
178
- };
@@ -1,144 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../asn1');
4
- const baEnum = require('../enum');
5
-
6
- module.exports.encode = (buffer, lastReceivedObjectId) => {
7
- baAsn1.encodeContextObjectId(buffer, 0, lastReceivedObjectId.type, lastReceivedObjectId.instance);
8
- };
9
-
10
- module.exports.decode = (buffer, offset) => {
11
- let len = 0;
12
- let result;
13
- let decodedValue;
14
- let value = {};
15
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
16
- len += result.len;
17
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
18
- len += decodedValue.len;
19
- value.lastReceivedObjectId = {type: decodedValue.objectType, instance: decodedValue.instance};
20
- value.len = len;
21
- return value;
22
- };
23
-
24
- module.exports.encodeAcknowledge = (buffer, events, moreEvents) => {
25
- baAsn1.encodeOpeningTag(buffer, 0);
26
- events.forEach((eventData) => {
27
- baAsn1.encodeContextObjectId(buffer, 0, eventData.objectId.type, eventData.objectId.instance);
28
- baAsn1.encodeContextEnumerated(buffer, 1, eventData.eventState);
29
- baAsn1.encodeContextBitstring(buffer, 2, eventData.acknowledgedTransitions);
30
- baAsn1.encodeOpeningTag(buffer, 3);
31
- for (let i = 0; i < 3; i++) {
32
- baAsn1.bacappEncodeTimestamp(buffer, eventData.eventTimeStamps[i]);
33
- }
34
- baAsn1.encodeClosingTag(buffer, 3);
35
- baAsn1.encodeContextEnumerated(buffer, 4, eventData.notifyType);
36
- baAsn1.encodeContextBitstring(buffer, 5, eventData.eventEnable);
37
- baAsn1.encodeOpeningTag(buffer, 6);
38
- for (let i = 0; i < 3; i++) {
39
- baAsn1.encodeApplicationUnsigned(buffer, eventData.eventPriorities[i]);
40
- }
41
- baAsn1.encodeClosingTag(buffer, 6);
42
- });
43
- baAsn1.encodeClosingTag(buffer, 0);
44
- baAsn1.encodeContextBoolean(buffer, 1, moreEvents);
45
- };
46
-
47
- module.exports.decodeAcknowledge = (buffer, offset, apduLen) => {
48
- let len = 0;
49
- let result;
50
- let decodedValue;
51
- let value = {};
52
- if (!baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 0)) {
53
- return undefined;
54
- }
55
- len++;
56
- value.events = [];
57
- while ((apduLen - len) > 3) {
58
- let event = {};
59
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
60
- len += result.len;
61
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
62
- len += decodedValue.len;
63
- event.objectId = {type: decodedValue.objectType, instance: decodedValue.instance};
64
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
65
- len += result.len;
66
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
67
- len += decodedValue.len;
68
- event.eventState = decodedValue.value;
69
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
70
- len += result.len;
71
- decodedValue = baAsn1.decodeBitstring(buffer, offset + len, result.value);
72
- len += decodedValue.len;
73
- event.acknowledgedTransitions = decodedValue.value;
74
- if (!baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 3)) {
75
- return undefined;
76
- }
77
- len++;
78
- event.eventTimeStamps = [];
79
- for (let i = 0; i < 3; i++) {
80
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
81
- len += result.len;
82
- if (result.tagNumber === baEnum.TimeStamp.TIME) {
83
- decodedValue = baAsn1.decodeBacnetTime(buffer, offset + len, result.value);
84
- len += decodedValue.len;
85
- event.eventTimeStamps[i] = {value: decodedValue.value, type: baEnum.TimeStamp.TIME};
86
-
87
- } else if (result.tagNumber === baEnum.TimeStamp.SEQUENCE_NUMBER) {
88
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
89
- len += decodedValue.len;
90
- event.eventTimeStamps[i] = {value: decodedValue.value, type: baEnum.TimeStamp.SEQUENCE_NUMBER};
91
- } else if (result.tagNumber === baEnum.TimeStamp.DATETIME) {
92
- let date = baAsn1.decodeApplicationDate(buffer, offset + len);
93
- len += date.len;
94
- date = date.value.value;
95
- let time = baAsn1.decodeApplicationTime(buffer, offset + len);
96
- len += time.len;
97
- time = time.value.value;
98
- event.eventTimeStamps[i] = {value: new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()), type: baEnum.TimeStamp.DATETIME};
99
- len++;
100
- }
101
- }
102
- if (!baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 3)) {
103
- return undefined;
104
- }
105
- len++;
106
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
107
- len += result.len;
108
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
109
- len += decodedValue.len;
110
- event.notifyType = decodedValue.value;
111
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
112
- len += result.len;
113
- decodedValue = baAsn1.decodeBitstring(buffer, offset + len, result.value);
114
- len += decodedValue.len;
115
- event.eventEnable = decodedValue.value;
116
- if (!baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 6)) {
117
- return undefined;
118
- }
119
- len++;
120
- event.eventPriorities = [];
121
- for (let i = 0; i < 3; i++) {
122
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
123
- len += result.len;
124
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
125
- len += decodedValue.len;
126
- event.eventPriorities[i] = decodedValue.value;
127
- }
128
- if (!baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 6)) {
129
- return undefined;
130
- }
131
- len++;
132
- value.events.push(event);
133
- }
134
- if (!baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 0)) {
135
- return undefined;
136
- }
137
- len++;
138
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
139
- len += result.len;
140
- value.moreEvents = buffer[offset + len] > 0;
141
- len++;
142
- value.len = len;
143
- return value;
144
- };
@@ -1,90 +0,0 @@
1
- /**
2
- * The iAm event represents the response to a whoIs request to detect all
3
- * devices in a BACNET network.
4
- *
5
- * @event bacnet.iAm
6
- * @param {number} deviceId - The BACNET device-id of the detected device.
7
- * @param {number} maxApdu - The max APDU size the detected device supports.
8
- * @param {number} segmentation - The type of segmentation the detected device supports.
9
- * @param {number} vendorId - The BACNET vendor-id of the detected device.
10
- *
11
- * @example
12
- * const bacnet = require('node-bacnet');
13
- * const client = new bacnet();
14
- *
15
- * client.on('iAm', (msg) => {
16
- * console.log(
17
- * 'address: ', msg.header.address,
18
- * ' - deviceId: ', msg.payload.deviceId,
19
- * ' - maxApdu: ', msg.payload.maxApdu,
20
- * ' - segmentation: ', msg.payload.segmentation,
21
- * ' - vendorId: ', msg.payload.vendorId
22
- * );
23
- * });
24
- */
25
-
26
- 'use strict';
27
-
28
- const baAsn1 = require('../asn1');
29
- const baEnum = require('../enum');
30
-
31
- module.exports.encode = (buffer, deviceId, maxApdu, segmentation, vendorId) => {
32
- baAsn1.encodeApplicationObjectId(buffer, baEnum.ObjectType.DEVICE, deviceId);
33
- baAsn1.encodeApplicationUnsigned(buffer, maxApdu);
34
- baAsn1.encodeApplicationEnumerated(buffer, segmentation);
35
- baAsn1.encodeApplicationUnsigned(buffer, vendorId);
36
- };
37
-
38
- module.exports.decode = (buffer, offset) => {
39
- let result;
40
- let apduLen = 0;
41
- const orgOffset = offset;
42
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + apduLen);
43
- apduLen += result.len;
44
- if (result.tagNumber !== baEnum.ApplicationTag.OBJECTIDENTIFIER) {
45
- return undefined;
46
- }
47
- result = baAsn1.decodeObjectId(buffer, offset + apduLen);
48
- apduLen += result.len;
49
- if (result.objectType !== baEnum.ObjectType.DEVICE) {
50
- return undefined;
51
- }
52
- const deviceId = result.instance;
53
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + apduLen);
54
- apduLen += result.len;
55
- if (result.tagNumber !== baEnum.ApplicationTag.UNSIGNED_INTEGER) {
56
- return undefined;
57
- }
58
- result = baAsn1.decodeUnsigned(buffer, offset + apduLen, result.value);
59
- apduLen += result.len;
60
- const maxApdu = result.value;
61
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + apduLen);
62
- apduLen += result.len;
63
- if (result.tagNumber !== baEnum.ApplicationTag.ENUMERATED) {
64
- return undefined;
65
- }
66
- result = baAsn1.decodeEnumerated(buffer, offset + apduLen, result.value);
67
- apduLen += result.len;
68
- if (result.value > baEnum.Segmentation.NO_SEGMENTATION) {
69
- return undefined;
70
- }
71
- const segmentation = result.value;
72
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + apduLen);
73
- apduLen += result.len;
74
- if (result.tagNumber !== baEnum.ApplicationTag.UNSIGNED_INTEGER) {
75
- return undefined;
76
- }
77
- result = baAsn1.decodeUnsigned(buffer, offset + apduLen, result.value);
78
- apduLen += result.len;
79
- if (result.value > 0xFFFF) {
80
- return undefined;
81
- }
82
- const vendorId = result.value;
83
- return {
84
- len: offset - orgOffset,
85
- deviceId,
86
- maxApdu,
87
- segmentation,
88
- vendorId
89
- };
90
- };
@@ -1,34 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../asn1');
4
- const baEnum = require('../enum');
5
-
6
- module.exports.encode = (buffer, deviceId, objectId, objectName) => {
7
- baAsn1.encodeApplicationObjectId(buffer, deviceId.type, deviceId.instance);
8
- baAsn1.encodeApplicationObjectId(buffer, objectId.type, objectId.instance);
9
- baAsn1.encodeApplicationCharacterString(buffer, objectName);
10
- };
11
-
12
- module.exports.decode = (buffer, offset, apduLen) => {
13
- let len = 0;
14
- let result;
15
- let decodedValue;
16
- let value = {};
17
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
18
- len += result.len;
19
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
20
- len += decodedValue.len;
21
- value.deviceId = {type: decodedValue.objectType, instance: decodedValue.instance};
22
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
23
- len += result.len;
24
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
25
- len += decodedValue.len;
26
- value.objectId = {type: decodedValue.objectType, instance: decodedValue.instance};
27
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
28
- len += result.len;
29
- decodedValue = baAsn1.decodeCharacterString(buffer, offset + len, apduLen - (offset + len), result.value);
30
- len += decodedValue.len;
31
- value.objectName = decodedValue.value;
32
- value.len = len;
33
- return value;
34
- };
@@ -1,34 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports.addListElement = require('./add-list-element');
4
- module.exports.alarmAcknowledge = require('./alarm-acknowledge');
5
- module.exports.alarmSummary = require('./alarm-summary');
6
- module.exports.atomicReadFile = require('./atomic-read-file');
7
- module.exports.atomicWriteFile = require('./atomic-write-file');
8
- module.exports.covNotify = require('./cov-notify');
9
- module.exports.covNotifyUnconfirmed = module.exports.covNotify;
10
- module.exports.createObject = require('./create-object');
11
- module.exports.deleteObject = require('./delete-object');
12
- module.exports.deviceCommunicationControl = require('./device-communication-control');
13
- module.exports.error = require('./error');
14
- module.exports.eventInformation = require('./event-information');
15
- module.exports.eventNotifyData = require('./event-notify-data');
16
- module.exports.getEnrollmentSummary = require('./get-enrollment-summary');
17
- module.exports.getEventInformation = require('./get-event-information');
18
- module.exports.iAm = require('./i-am');
19
- module.exports.iHave = require('./i-have');
20
- module.exports.lifeSafetyOperation = require('./life-safety-operation');
21
- module.exports.privateTransfer = require('./private-transfer');
22
- module.exports.readProperty = require('./read-property');
23
- module.exports.readPropertyMultiple = require('./read-property-multiple');
24
- module.exports.readRange = require('./read-range');
25
- module.exports.registerForeignDevice = require('./register-foreign-device');
26
- module.exports.reinitializeDevice = require('./reinitialize-device');
27
- module.exports.subscribeCov = require('./subscribe-cov');
28
- module.exports.subscribeProperty = require('./subscribe-property');
29
- module.exports.timeSync = require('./time-sync');
30
- module.exports.timeSyncUTC = module.exports.timeSync;
31
- module.exports.whoHas = require('./who-has');
32
- module.exports.whoIs = require('./who-is');
33
- module.exports.writeProperty = require('./write-property');
34
- module.exports.writePropertyMultiple = require('./write-property-multiple');
@@ -1,40 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../asn1');
4
- const baEnum = require('../enum');
5
-
6
- module.exports.encode = (buffer, processId, requestingSource, operation, targetObjectId) => {
7
- baAsn1.encodeContextUnsigned(buffer, 0, processId);
8
- baAsn1.encodeContextCharacterString(buffer, 1, requestingSource);
9
- baAsn1.encodeContextEnumerated(buffer, 2, operation);
10
- baAsn1.encodeContextObjectId(buffer, 3, targetObjectId.type, targetObjectId.instance);
11
- };
12
-
13
- module.exports.decode = (buffer, offset, apduLen) => {
14
- let len = 0;
15
- let result;
16
- let decodedValue;
17
- let value = {};
18
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
19
- len += result.len;
20
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
21
- len += decodedValue.len;
22
- value.processId = decodedValue.value;
23
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
24
- len += result.len;
25
- decodedValue = baAsn1.decodeCharacterString(buffer, offset + len, apduLen - (offset + len), result.value);
26
- len += decodedValue.len;
27
- value.requestingSource = decodedValue.value;
28
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
29
- len += result.len;
30
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
31
- len += decodedValue.len;
32
- value.operation = decodedValue.value;
33
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
34
- len += result.len;
35
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
36
- len += decodedValue.len;
37
- value.targetObjectId = {type: decodedValue.objectType, instance: decodedValue.instance};
38
- value.len = len;
39
- return value;
40
- };
@@ -1,43 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../asn1');
4
- const baEnum = require('../enum');
5
-
6
- module.exports.encode = (buffer, vendorId, serviceNumber, data) => {
7
- baAsn1.encodeContextUnsigned(buffer, 0, vendorId);
8
- baAsn1.encodeContextUnsigned(buffer, 1, serviceNumber);
9
- baAsn1.encodeOpeningTag(buffer, 2);
10
- for (let i = 0; i < data.length; i++) {
11
- buffer.buffer[buffer.offset++] = data[i];
12
- }
13
- baAsn1.encodeClosingTag(buffer, 2);
14
- };
15
-
16
- module.exports.decode = (buffer, offset, apduLen) => {
17
- let len = 0;
18
- let result;
19
- let decodedValue;
20
- let value = {};
21
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
22
- len += result.len;
23
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
24
- len += decodedValue.len;
25
- value.vendorId = decodedValue.value;
26
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
27
- len += result.len;
28
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
29
- len += decodedValue.len;
30
- value.serviceNumber = decodedValue.value;
31
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
32
- len += result.len;
33
- const size = apduLen - (offset + len + 1);
34
- const data = [];
35
- for (let i = 0; i < size; i++) {
36
- data.push(buffer[offset + len++]);
37
- }
38
- value.data = data;
39
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
40
- len += result.len;
41
- value.len = len;
42
- return value;
43
- };
@@ -1,50 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../asn1');
4
- const baEnum = require('../enum');
5
-
6
- module.exports.encode = (buffer, properties) => {
7
- properties.forEach((value) => {
8
- baAsn1.encodeReadAccessSpecification(buffer, value);
9
- });
10
- };
11
-
12
- module.exports.decode = (buffer, offset, apduLen) => {
13
- let len = 0;
14
- const values = [];
15
- while ((apduLen - len) > 0) {
16
- const decodedValue = baAsn1.decodeReadAccessSpecification(buffer, offset + len, apduLen - len);
17
- if (!decodedValue) {
18
- return undefined;
19
- }
20
- len += decodedValue.len;
21
- values.push(decodedValue.value);
22
- }
23
- return {
24
- len,
25
- properties: values
26
- };
27
- };
28
-
29
- module.exports.encodeAcknowledge = (buffer, values) => {
30
- values.forEach((value) => {
31
- baAsn1.encodeReadAccessResult(buffer, value);
32
- });
33
- };
34
-
35
- module.exports.decodeAcknowledge = (buffer, offset, apduLen) => {
36
- let len = 0;
37
- const values = [];
38
- while ((apduLen - len) > 0) {
39
- const result = baAsn1.decodeReadAccessResult(buffer, offset + len, apduLen - len);
40
- if (!result) {
41
- return undefined;
42
- }
43
- len += result.len;
44
- values.push(result.value);
45
- }
46
- return {
47
- len,
48
- values
49
- };
50
- };