@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,130 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../asn1');
4
- const baEnum = require('../enum');
5
-
6
- module.exports.encode = (buffer, objectType, objectInstance, propertyId, arrayIndex) => {
7
- if (objectType <= baEnum.ASN1_MAX_OBJECT) {
8
- baAsn1.encodeContextObjectId(buffer, 0, objectType, objectInstance);
9
- }
10
- if (propertyId <= baEnum.ASN1_MAX_PROPERTY_ID) {
11
- baAsn1.encodeContextEnumerated(buffer, 1, propertyId);
12
- }
13
- if (arrayIndex !== baEnum.ASN1_ARRAY_ALL) {
14
- baAsn1.encodeContextUnsigned(buffer, 2, (arrayIndex || arrayIndex === 0) ? arrayIndex : baEnum.ASN1_ARRAY_ALL);
15
- }
16
- };
17
-
18
- module.exports.decode = (buffer, offset, apduLen) => {
19
- let len = 0;
20
- let result;
21
- let decodedValue;
22
- if (apduLen < 7) {
23
- return undefined;
24
- }
25
- if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) {
26
- return undefined;
27
- }
28
- len++;
29
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
30
- len += decodedValue.len;
31
- let objectId = {type: decodedValue.objectType, instance: decodedValue.instance};
32
- let property = {};
33
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
34
- len += result.len;
35
- if (result.tagNumber !== 1) {
36
- return undefined;
37
- }
38
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
39
- len += decodedValue.len;
40
- property.id = decodedValue.value;
41
- property.index = baEnum.ASN1_ARRAY_ALL;
42
- if (len < apduLen) {
43
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
44
- len += result.len;
45
- if ((result.tagNumber === 2) && (len < apduLen)) {
46
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
47
- len += decodedValue.len;
48
- property.index = decodedValue.value;
49
- } else {
50
- return undefined;
51
- }
52
- }
53
- if (len < apduLen) {
54
- return undefined;
55
- }
56
- return {
57
- len,
58
- objectId,
59
- property
60
- };
61
- };
62
-
63
- module.exports.encodeAcknowledge = (buffer, objectId, propertyId, arrayIndex, values) => {
64
- baAsn1.encodeContextObjectId(buffer, 0, objectId.type, objectId.instance);
65
- baAsn1.encodeContextEnumerated(buffer, 1, propertyId);
66
- if (arrayIndex !== baEnum.ASN1_ARRAY_ALL) {
67
- baAsn1.encodeContextUnsigned(buffer, 2, arrayIndex);
68
- }
69
- baAsn1.encodeOpeningTag(buffer, 3);
70
- values.forEach((value) => {
71
- baAsn1.bacappEncodeApplicationData(buffer, value);
72
- });
73
- baAsn1.encodeClosingTag(buffer, 3);
74
- };
75
-
76
- module.exports.decodeAcknowledge = (buffer, offset, apduLen) => {
77
- let result;
78
- let decodedValue;
79
- let objectId = {};
80
- let property = {};
81
- if (!baAsn1.decodeIsContextTag(buffer, offset, 0)) {
82
- return undefined;
83
- }
84
- let len = 1;
85
- result = baAsn1.decodeObjectId(buffer, offset + len);
86
- len += result.len;
87
- objectId.type = result.objectType;
88
- objectId.instance = result.instance;
89
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
90
- len += result.len;
91
- if (result.tagNumber !== 1) {
92
- return undefined;
93
- }
94
- result = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
95
- len += result.len;
96
- property.id = result.value;
97
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
98
- if (result.tagNumber === 2) {
99
- len += result.len;
100
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
101
- len += decodedValue.len;
102
- property.index = decodedValue.value;
103
- } else {
104
- property.index = baEnum.ASN1_ARRAY_ALL;
105
- }
106
- const values = [];
107
- if (!baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 3)) {
108
- return undefined;
109
- }
110
- len++;
111
- while ((apduLen - len) > 1) {
112
- result = baAsn1.bacappDecodeApplicationData(buffer, offset + len, apduLen + offset, objectId.type, property.id);
113
- if (!result) {
114
- return undefined;
115
- }
116
- len += result.len;
117
- delete result.len;
118
- values.push(result);
119
- }
120
- if (!baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 3)) {
121
- return undefined;
122
- }
123
- len++;
124
- return {
125
- len,
126
- objectId,
127
- property,
128
- values
129
- };
130
- };
@@ -1,201 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../asn1');
4
- const baEnum = require('../enum');
5
-
6
- module.exports.encode = (buffer, objectId, propertyId, arrayIndex, requestType, position, time, count) => {
7
- baAsn1.encodeContextObjectId(buffer, 0, objectId.type, objectId.instance);
8
- baAsn1.encodeContextEnumerated(buffer, 1, propertyId);
9
- if (arrayIndex !== baEnum.ASN1_ARRAY_ALL) {
10
- baAsn1.encodeContextUnsigned(buffer, 2, arrayIndex);
11
- }
12
- switch (requestType) {
13
- case baEnum.ReadRangeType.BY_POSITION:
14
- baAsn1.encodeOpeningTag(buffer, 3);
15
- baAsn1.encodeApplicationUnsigned(buffer, position);
16
- baAsn1.encodeApplicationSigned(buffer, count);
17
- baAsn1.encodeClosingTag(buffer, 3);
18
- break;
19
- case baEnum.ReadRangeType.BY_SEQUENCE_NUMBER:
20
- baAsn1.encodeOpeningTag(buffer, 6);
21
- baAsn1.encodeApplicationUnsigned(buffer, position);
22
- baAsn1.encodeApplicationSigned(buffer, count);
23
- baAsn1.encodeClosingTag(buffer, 6);
24
- break;
25
- case baEnum.ReadRangeType.BY_TIME_REFERENCE_TIME_COUNT:
26
- baAsn1.encodeOpeningTag(buffer, 7);
27
- baAsn1.encodeApplicationDate(buffer, time);
28
- baAsn1.encodeApplicationTime(buffer, time);
29
- baAsn1.encodeApplicationSigned(buffer, count);
30
- baAsn1.encodeClosingTag(buffer, 7);
31
- break;
32
- default:
33
- break;
34
- }
35
- };
36
-
37
- module.exports.decode = (buffer, offset, apduLen) => {
38
- let len = 0;
39
- let result;
40
- let decodedValue;
41
- let requestType;
42
- let position;
43
- let time;
44
- let count;
45
- if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) {
46
- return undefined;
47
- }
48
- len++;
49
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len, 0);
50
- len += decodedValue.len;
51
- let objectId = {type: decodedValue.objectType, instance: decodedValue.instance};
52
- let property = {};
53
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
54
- len += result.len;
55
- if (result.tagNumber !== 1) {
56
- return undefined;
57
- }
58
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
59
- len += decodedValue.len;
60
- property.id = decodedValue.value;
61
- if (len < apduLen && baAsn1.decodeIsContextTag(buffer, offset + len, 2)) {
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
- property.index = decodedValue.value;
67
- } else {
68
- property.index = baEnum.ASN1_ARRAY_ALL;
69
- }
70
- if (len < apduLen) {
71
- result = baAsn1.decodeTagNumber(buffer, offset + len);
72
- len += result.len;
73
- switch (result.tagNumber) {
74
- case 3:
75
- requestType = baEnum.ReadRangeType.BY_POSITION;
76
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
77
- len += result.len;
78
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
79
- len += decodedValue.len;
80
- position = decodedValue.value;
81
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
82
- len += result.len;
83
- decodedValue = baAsn1.decodeSigned(buffer, offset + len, result.value);
84
- len += decodedValue.len;
85
- count = decodedValue.value;
86
- break;
87
- case 6:
88
- requestType = baEnum.ReadRangeType.BY_SEQUENCE_NUMBER;
89
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
90
- len += result.len;
91
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
92
- len += decodedValue.len;
93
- position = decodedValue.value;
94
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
95
- len += result.len;
96
- decodedValue = baAsn1.decodeSigned(buffer, offset + len, result.value);
97
- len += decodedValue.len;
98
- count = decodedValue.value;
99
- break;
100
- case 7:
101
- requestType = baEnum.ReadRangeType.BY_TIME_REFERENCE_TIME_COUNT;
102
- decodedValue = baAsn1.decodeApplicationDate(buffer, offset + len);
103
- len += decodedValue.len;
104
- const tmpDate = decodedValue.value.value;
105
- decodedValue = baAsn1.decodeApplicationTime(buffer, offset + len);
106
- len += decodedValue.len;
107
- const tmpTime = decodedValue.value.value;
108
- time = new Date(tmpDate.getYear(), tmpDate.getMonth(), tmpDate.getDate(), tmpTime.getHours(), tmpTime.getMinutes(), tmpTime.getSeconds(), tmpTime.getMilliseconds());
109
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
110
- len += result.len;
111
- decodedValue = baAsn1.decodeSigned(buffer, offset + len, result.value);
112
- len += decodedValue.len;
113
- count = decodedValue.value;
114
- break;
115
- default:
116
- return undefined;
117
- }
118
- result = baAsn1.decodeTagNumber(buffer, offset + len);
119
- len += result.len;
120
- }
121
- return {
122
- len,
123
- objectId,
124
- property,
125
- requestType,
126
- position,
127
- time,
128
- count
129
- };
130
- };
131
-
132
- module.exports.encodeAcknowledge = (buffer, objectId, propertyId, arrayIndex, resultFlags, itemCount, applicationData, requestType, firstSequence) => {
133
- baAsn1.encodeContextObjectId(buffer, 0, objectId.type, objectId.instance);
134
- baAsn1.encodeContextEnumerated(buffer, 1, propertyId);
135
- if (arrayIndex !== baEnum.ASN1_ARRAY_ALL) {
136
- baAsn1.encodeContextUnsigned(buffer, 2, arrayIndex);
137
- }
138
- baAsn1.encodeContextBitstring(buffer, 3, resultFlags);
139
- baAsn1.encodeContextUnsigned(buffer, 4, itemCount);
140
- baAsn1.encodeOpeningTag(buffer, 5);
141
- if (itemCount !== 0) {
142
- applicationData.copy(buffer.buffer, buffer.offset, 0, applicationData.length);
143
- buffer.offset += applicationData.length;
144
- }
145
- baAsn1.encodeClosingTag(buffer, 5);
146
- if (itemCount !== 0 && requestType && requestType !== baEnum.ReadRangeType.BY_POSITION) {
147
- baAsn1.encodeContextUnsigned(buffer, 6, firstSequence);
148
- }
149
- };
150
-
151
- module.exports.decodeAcknowledge = (buffer, offset, apduLen) => {
152
- let len = 0;
153
- let result;
154
- let decodedValue;
155
- if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) {
156
- return undefined;
157
- }
158
- len++;
159
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
160
- len += decodedValue.len;
161
- const objectId = {type: decodedValue.objectType, instance: decodedValue.instance};
162
- const property = {index: baEnum.ASN1_ARRAY_ALL};
163
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
164
- len += result.len;
165
- if (result.tagNumber !== 1) {
166
- return undefined;
167
- }
168
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
169
- len += decodedValue.len;
170
- property.id = decodedValue.value;
171
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
172
- if ((result.tagNumber === 2) && (len < apduLen)) {
173
- len += result.len;
174
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
175
- len += decodedValue.len;
176
- property.index = decodedValue.value;
177
- }
178
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
179
- len += result.len;
180
- decodedValue = baAsn1.decodeBitstring(buffer, offset + len, result.value);
181
- len += decodedValue.len;
182
- const resultFlag = decodedValue.value;
183
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
184
- len += result.len;
185
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
186
- len += decodedValue.len;
187
- const itemCount = decodedValue.value;
188
- if (!(baAsn1.decodeIsOpeningTag(buffer, offset + len))) {
189
- return undefined;
190
- }
191
- len++;
192
- const rangeBuffer = buffer.slice(offset + len, apduLen - 3);
193
- return {
194
- objectId,
195
- property,
196
- resultFlag,
197
- itemCount,
198
- rangeBuffer,
199
- len
200
- };
201
- };
@@ -1,18 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../asn1');
4
- const baEnum = require('../enum');
5
-
6
- module.exports.encode = (buffer, ttl, length = 2) => {
7
- baAsn1.encodeUnsigned(buffer, ttl, length);
8
- };
9
-
10
- module.exports.decode = (buffer, offset, length = 2) => {
11
- let len = 0;
12
- let result = baAsn1.decodeUnsigned(buffer, offset + len, length);
13
- len += result.len;
14
- return {
15
- len,
16
- ttl: result.value,
17
- };
18
- };
@@ -1,37 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../asn1');
4
- const baEnum = require('../enum');
5
-
6
- module.exports.encode = (buffer, state, password) => {
7
- baAsn1.encodeContextEnumerated(buffer, 0, state);
8
- if (password && password !== '') {
9
- baAsn1.encodeContextCharacterString(buffer, 1, password);
10
- }
11
- };
12
-
13
- module.exports.decode = (buffer, offset, apduLen) => {
14
- let len = 0;
15
- let value = {};
16
- let result;
17
- if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) {
18
- return undefined;
19
- }
20
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
21
- len += result.len;
22
- let decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
23
- value.state = decodedValue.value;
24
- len += decodedValue.len;
25
- if (len < apduLen) {
26
- if (!baAsn1.decodeIsContextTag(buffer, offset + len, 1)) {
27
- return undefined;
28
- }
29
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
30
- len += result.len;
31
- decodedValue = baAsn1.decodeCharacterString(buffer, offset + len, apduLen - (offset + len), result.value);
32
- value.password = decodedValue.value;
33
- len += decodedValue.len;
34
- }
35
- value.len = len;
36
- return value;
37
- };
@@ -1,57 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../asn1');
4
- const baEnum = require('../enum');
5
-
6
- module.exports.encode = (buffer, subscriberProcessId, monitoredObjectId, cancellationRequest, issueConfirmedNotifications, lifetime) => {
7
- baAsn1.encodeContextUnsigned(buffer, 0, subscriberProcessId);
8
- baAsn1.encodeContextObjectId(buffer, 1, monitoredObjectId.type, monitoredObjectId.instance);
9
- if (!cancellationRequest) {
10
- baAsn1.encodeContextBoolean(buffer, 2, issueConfirmedNotifications);
11
- baAsn1.encodeContextUnsigned(buffer, 3, lifetime);
12
- }
13
- };
14
-
15
- module.exports.decode = (buffer, offset, apduLen) => {
16
- let len = 0;
17
- let value = {};
18
- let result;
19
- let decodedValue;
20
- if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) {
21
- return undefined;
22
- }
23
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
24
- len += result.len;
25
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
26
- len += decodedValue.len;
27
- value.subscriberProcessId = decodedValue.value;
28
- if (!baAsn1.decodeIsContextTag(buffer, offset + len, 1)) {
29
- return undefined;
30
- }
31
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
32
- len += result.len;
33
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
34
- len += decodedValue.len;
35
- value.monitoredObjectId = {type: decodedValue.objectType, instance: decodedValue.instance};
36
- value.cancellationRequest = true;
37
- if (len < apduLen) {
38
- value.issueConfirmedNotifications = false;
39
- if (baAsn1.decodeIsContextTag(buffer, offset + len, 2)) {
40
- value.cancellationRequest = false;
41
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
42
- len += result.len;
43
- value.issueConfirmedNotifications = buffer[offset + len] > 0;
44
- len++;
45
- }
46
- value.lifetime = 0;
47
- if (baAsn1.decodeIsContextTag(buffer, offset + len, 3)) {
48
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
49
- len += result.len;
50
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
51
- len += decodedValue.len;
52
- value.lifetime = decodedValue.value;
53
- }
54
- }
55
- value.len = len;
56
- return value;
57
- };
@@ -1,97 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../asn1');
4
- const baEnum = require('../enum');
5
-
6
- module.exports.encode = (buffer, subscriberProcessId, monitoredObjectId, cancellationRequest, issueConfirmedNotifications, lifetime, monitoredProperty, covIncrementPresent, covIncrement) => {
7
- baAsn1.encodeContextUnsigned(buffer, 0, subscriberProcessId);
8
- baAsn1.encodeContextObjectId(buffer, 1, monitoredObjectId.type, monitoredObjectId.instance);
9
- if (!cancellationRequest) {
10
- baAsn1.encodeContextBoolean(buffer, 2, issueConfirmedNotifications);
11
- baAsn1.encodeContextUnsigned(buffer, 3, lifetime);
12
- }
13
- baAsn1.encodeOpeningTag(buffer, 4);
14
- baAsn1.encodeContextEnumerated(buffer, 0, monitoredProperty.id);
15
- if (monitoredProperty.index !== baEnum.ASN1_ARRAY_ALL) {
16
- baAsn1.encodeContextUnsigned(buffer, 1, monitoredProperty.index);
17
- }
18
- baAsn1.encodeClosingTag(buffer, 4);
19
- if (covIncrementPresent) {
20
- baAsn1.encodeContextReal(buffer, 5, covIncrement);
21
- }
22
- };
23
-
24
- module.exports.decode = (buffer, offset) => {
25
- let len = 0;
26
- let value = {};
27
- let result;
28
- let decodedValue;
29
- if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) {
30
- return undefined;
31
- }
32
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
33
- len += result.len;
34
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
35
- len += decodedValue.len;
36
- value.subscriberProcessId = decodedValue.value;
37
- if (!baAsn1.decodeIsContextTag(buffer, offset + len, 1)) {
38
- return undefined;
39
- }
40
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
41
- len += result.len;
42
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
43
- len += decodedValue.len;
44
- value.monitoredObjectId = {type: decodedValue.objectType, instance: decodedValue.instance};
45
- value.cancellationRequest = true;
46
- value.issueConfirmedNotifications = false;
47
- if (baAsn1.decodeIsContextTag(buffer, offset + len, 2)) {
48
- value.cancellationRequest = false;
49
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
50
- len += result.len;
51
- value.issueConfirmedNotifications = buffer[offset + len] > 0;
52
- len++;
53
- }
54
- value.lifetime = 0;
55
- if (baAsn1.decodeIsContextTag(buffer, offset + len, 3)) {
56
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
57
- len += result.len;
58
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
59
- len += decodedValue.len;
60
- value.lifetime = decodedValue.value;
61
- }
62
- if (!baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 4)) {
63
- return undefined;
64
- }
65
- len++;
66
- value.monitoredProperty = {};
67
- if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) {
68
- return undefined;
69
- }
70
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
71
- len += result.len;
72
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
73
- len += decodedValue.len;
74
- value.monitoredProperty.id = decodedValue.value;
75
- value.monitoredProperty.index = baEnum.ASN1_ARRAY_ALL;
76
- if (baAsn1.decodeIsContextTag(buffer, offset + len, 1)) {
77
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
78
- len += result.len;
79
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
80
- len += decodedValue.len;
81
- value.monitoredProperty.index = decodedValue.value;
82
- }
83
- if (!baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 4)) {
84
- return undefined;
85
- }
86
- len++;
87
- value.covIncrement = 0;
88
- if (baAsn1.decodeIsContextTag(buffer, offset + len, 5)) {
89
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
90
- len += result.len;
91
- decodedValue = baAsn1.decodeReal(buffer, offset + len);
92
- len += decodedValue.len;
93
- value.covIncrement = decodedValue.value;
94
- }
95
- value.len = len;
96
- return value;
97
- };
@@ -1,51 +0,0 @@
1
- /**
2
- * The timeSync event represents the request to synchronize the local time to
3
- * the received time.
4
- *
5
- * @event bacnet.timeSync
6
- * @param {date} dateTime - The time to be synchronized to.
7
- *
8
- * @example
9
- * const bacnet = require('node-bacnet');
10
- * const client = new bacnet();
11
- *
12
- * client.on('timeSync', (msg) => {
13
- * console.log(
14
- * 'address: ', msg.header.address,
15
- * ' - dateTime: ', msg.payload.dateTime
16
- * );
17
- * });
18
- */
19
-
20
- 'use strict';
21
-
22
- const baAsn1 = require('../asn1');
23
- const baEnum = require('../enum');
24
-
25
- module.exports.encode = (buffer, time) => {
26
- baAsn1.encodeApplicationDate(buffer, time);
27
- baAsn1.encodeApplicationTime(buffer, time);
28
- };
29
-
30
- module.exports.decode = (buffer, offset, length) => {
31
- let len = 0;
32
- let result;
33
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
34
- len += result.len;
35
- if (result.tagNumber !== baEnum.ApplicationTag.DATE) {
36
- return undefined;
37
- }
38
- const date = baAsn1.decodeDate(buffer, offset + len);
39
- len += date.len;
40
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
41
- len += result.len;
42
- if (result.tagNumber !== baEnum.ApplicationTag.TIME) {
43
- return undefined;
44
- }
45
- const time = baAsn1.decodeBacnetTime(buffer, offset + len);
46
- len += time.len;
47
- return {
48
- len,
49
- value: new Date(date.value.getFullYear(), date.value.getMonth(), date.value.getDate(), time.value.getHours(), time.value.getMinutes(), time.value.getSeconds(), time.value.getMilliseconds())
50
- };
51
- };
@@ -1,54 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../asn1');
4
- const baEnum = require('../enum');
5
-
6
- module.exports.encode = (buffer, lowLimit, highLimit, objectId, objectName) => {
7
- if ((lowLimit >= 0) && (lowLimit <= baEnum.ASN1_MAX_INSTANCE) && (highLimit >= 0) && (highLimit <= baEnum.ASN1_MAX_INSTANCE)) {
8
- baAsn1.encodeContextUnsigned(buffer, 0, lowLimit);
9
- baAsn1.encodeContextUnsigned(buffer, 1, highLimit);
10
- }
11
- if (objectName && objectName !== '') {
12
- baAsn1.encodeContextCharacterString(buffer, 3, objectName);
13
- } else {
14
- baAsn1.encodeContextObjectId(buffer, 2, objectId.type, objectId.instance);
15
- }
16
- };
17
-
18
- module.exports.decode = (buffer, offset, apduLen) => {
19
- let len = 0;
20
- let value = {};
21
- let decodedValue;
22
- let result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
23
- len += result.len;
24
- if (result.tagNumber === 0) {
25
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
26
- len += decodedValue.len;
27
- if (decodedValue.value <= baEnum.ASN1_MAX_INSTANCE) {
28
- value.lowLimit = decodedValue.value;
29
- }
30
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
31
- len += result.len;
32
- }
33
- if (result.tagNumber === 1) {
34
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
35
- len += decodedValue.len;
36
- if (decodedValue.value <= baEnum.ASN1_MAX_INSTANCE) {
37
- value.highLimit = decodedValue.value;
38
- }
39
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
40
- len += result.len;
41
- }
42
- if (result.tagNumber === 2) {
43
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
44
- len += decodedValue.len;
45
- value.objectId = {type: decodedValue.objectType, instance: decodedValue.instance};
46
- }
47
- if (result.tagNumber === 3) {
48
- decodedValue = baAsn1.decodeCharacterString(buffer, offset + len, apduLen - (offset + len), result.value);
49
- len += decodedValue.len;
50
- value.objectName = decodedValue.value;
51
- }
52
- value.len = len;
53
- return value;
54
- };