@bitpoolos/edge-bacnet 1.6.7 → 1.6.9

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 (48) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/bacnet_client.js +181 -28
  3. package/bacnet_device.js +16 -15
  4. package/bacnet_gateway.html +82 -0
  5. package/bacnet_gateway.js +3 -1
  6. package/bacnet_write.html +2 -1
  7. package/common.js +8 -1
  8. package/package.json +1 -1
  9. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -41
  10. package/resources/node-bacstack-ts/dist/index.js +0 -3
  11. package/resources/node-bacstack-ts/dist/lib/apdu.js +0 -193
  12. package/resources/node-bacstack-ts/dist/lib/asn1.js +0 -1671
  13. package/resources/node-bacstack-ts/dist/lib/bvlc.js +0 -47
  14. package/resources/node-bacstack-ts/dist/lib/client.js +0 -1553
  15. package/resources/node-bacstack-ts/dist/lib/enum.js +0 -2114
  16. package/resources/node-bacstack-ts/dist/lib/npdu.js +0 -112
  17. package/resources/node-bacstack-ts/dist/lib/services/add-list-element.js +0 -58
  18. package/resources/node-bacstack-ts/dist/lib/services/alarm-acknowledge.js +0 -93
  19. package/resources/node-bacstack-ts/dist/lib/services/alarm-summary.js +0 -42
  20. package/resources/node-bacstack-ts/dist/lib/services/atomic-read-file.js +0 -157
  21. package/resources/node-bacstack-ts/dist/lib/services/atomic-write-file.js +0 -136
  22. package/resources/node-bacstack-ts/dist/lib/services/cov-notify.js +0 -119
  23. package/resources/node-bacstack-ts/dist/lib/services/create-object.js +0 -104
  24. package/resources/node-bacstack-ts/dist/lib/services/delete-object.js +0 -21
  25. package/resources/node-bacstack-ts/dist/lib/services/device-communication-control.js +0 -46
  26. package/resources/node-bacstack-ts/dist/lib/services/error.js +0 -27
  27. package/resources/node-bacstack-ts/dist/lib/services/event-information.js +0 -100
  28. package/resources/node-bacstack-ts/dist/lib/services/event-notify-data.js +0 -219
  29. package/resources/node-bacstack-ts/dist/lib/services/get-enrollment-summary.js +0 -172
  30. package/resources/node-bacstack-ts/dist/lib/services/get-event-information.js +0 -135
  31. package/resources/node-bacstack-ts/dist/lib/services/i-am-broadcast.js +0 -59
  32. package/resources/node-bacstack-ts/dist/lib/services/i-have-broadcast.js +0 -34
  33. package/resources/node-bacstack-ts/dist/lib/services/index.js +0 -32
  34. package/resources/node-bacstack-ts/dist/lib/services/life-safety-operation.js +0 -40
  35. package/resources/node-bacstack-ts/dist/lib/services/private-transfer.js +0 -43
  36. package/resources/node-bacstack-ts/dist/lib/services/read-property-multiple.js +0 -44
  37. package/resources/node-bacstack-ts/dist/lib/services/read-property.js +0 -122
  38. package/resources/node-bacstack-ts/dist/lib/services/read-range.js +0 -201
  39. package/resources/node-bacstack-ts/dist/lib/services/reinitialize-device.js +0 -35
  40. package/resources/node-bacstack-ts/dist/lib/services/subscribe-cov.js +0 -55
  41. package/resources/node-bacstack-ts/dist/lib/services/subscribe-property.js +0 -93
  42. package/resources/node-bacstack-ts/dist/lib/services/time-sync.js +0 -31
  43. package/resources/node-bacstack-ts/dist/lib/services/who-has.js +0 -56
  44. package/resources/node-bacstack-ts/dist/lib/services/who-is.js +0 -45
  45. package/resources/node-bacstack-ts/dist/lib/services/write-property-multiple.js +0 -105
  46. package/resources/node-bacstack-ts/dist/lib/services/write-property.js +0 -90
  47. package/resources/node-bacstack-ts/dist/lib/transport.js +0 -86
  48. package/resources/node-bacstack-ts/dist/lib/types.js +0 -2
@@ -1,105 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.encodeObject = exports.decode = exports.encode = void 0;
4
- const baAsn1 = require("../asn1");
5
- const baEnum = require("../enum");
6
- const encode = (buffer, objectId, values) => {
7
- baAsn1.encodeContextObjectId(buffer, 0, objectId.type, objectId.instance);
8
- baAsn1.encodeOpeningTag(buffer, 1);
9
- values.forEach((pValue) => {
10
- baAsn1.encodeContextEnumerated(buffer, 0, pValue.property.id);
11
- if (pValue.property.index !== baEnum.ASN1_ARRAY_ALL) {
12
- baAsn1.encodeContextUnsigned(buffer, 1, pValue.property.index);
13
- }
14
- baAsn1.encodeOpeningTag(buffer, 2);
15
- pValue.value.forEach((value) => baAsn1.bacappEncodeApplicationData(buffer, value));
16
- baAsn1.encodeClosingTag(buffer, 2);
17
- if (pValue.priority !== baEnum.ASN1_NO_PRIORITY) {
18
- baAsn1.encodeContextUnsigned(buffer, 3, pValue.priority);
19
- }
20
- });
21
- baAsn1.encodeClosingTag(buffer, 1);
22
- };
23
- exports.encode = encode;
24
- const decode = (buffer, offset, apduLen) => {
25
- let len = 0;
26
- let result;
27
- let decodedValue;
28
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
29
- len += result.len;
30
- if ((result.tagNumber !== 0) || (apduLen <= len))
31
- return;
32
- apduLen -= len;
33
- if (apduLen < 4)
34
- return;
35
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
36
- len += decodedValue.len;
37
- const objectId = {
38
- type: decodedValue.objectType,
39
- instance: decodedValue.instance
40
- };
41
- if (!baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 1))
42
- return;
43
- len++;
44
- const _values = [];
45
- while ((apduLen - len) > 1) {
46
- const newEntry = {};
47
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
48
- len += result.len;
49
- if (result.tagNumber !== 0)
50
- return;
51
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
52
- len += decodedValue.len;
53
- const propertyId = decodedValue.value;
54
- let arrayIndex = baEnum.ASN1_ARRAY_ALL;
55
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
56
- len += result.len;
57
- if (result.tagNumber === 1) {
58
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
59
- len += decodedValue.len;
60
- arrayIndex = decodedValue.value;
61
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
62
- len += result.len;
63
- }
64
- newEntry.property = { id: propertyId, index: arrayIndex };
65
- if ((result.tagNumber !== 2) || (!baAsn1.decodeIsOpeningTag(buffer, offset + len - 1)))
66
- return;
67
- const values = [];
68
- while ((len + offset) <= buffer.length && !baAsn1.decodeIsClosingTag(buffer, offset + len)) {
69
- const value = baAsn1.bacappDecodeApplicationData(buffer, offset + len, apduLen + offset, objectId.type, propertyId);
70
- if (!value)
71
- return;
72
- len += value.len;
73
- delete value.len;
74
- values.push(value);
75
- }
76
- len++;
77
- newEntry.value = values;
78
- let priority = baEnum.ASN1_NO_PRIORITY;
79
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
80
- len += result.len;
81
- if (result.tagNumber === 3) {
82
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
83
- len += decodedValue.len;
84
- priority = decodedValue.value;
85
- }
86
- else {
87
- len--;
88
- }
89
- newEntry.priority = priority;
90
- _values.push(newEntry);
91
- }
92
- if (!baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 1))
93
- return;
94
- len++;
95
- return {
96
- len: len,
97
- objectId: objectId,
98
- values: _values
99
- };
100
- };
101
- exports.decode = decode;
102
- const encodeObject = (buffer, values) => {
103
- values.forEach((object) => (0, exports.encode)(buffer, object.objectId, object.values));
104
- };
105
- exports.encodeObject = encodeObject;
@@ -1,90 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decode = exports.encode = void 0;
4
- const baAsn1 = require("../asn1");
5
- const baEnum = require("../enum");
6
- const encode = (buffer, objectType, objectInstance, propertyId, arrayIndex, priority, values) => {
7
- baAsn1.encodeContextObjectId(buffer, 0, objectType, objectInstance);
8
- baAsn1.encodeContextEnumerated(buffer, 1, propertyId);
9
- if (arrayIndex !== baEnum.ASN1_ARRAY_ALL) {
10
- baAsn1.encodeContextUnsigned(buffer, 2, arrayIndex);
11
- }
12
- baAsn1.encodeOpeningTag(buffer, 3);
13
- values.forEach((value) => baAsn1.bacappEncodeApplicationData(buffer, value));
14
- baAsn1.encodeClosingTag(buffer, 3);
15
- if (priority !== baEnum.ASN1_NO_PRIORITY) {
16
- baAsn1.encodeContextUnsigned(buffer, 4, priority);
17
- }
18
- };
19
- exports.encode = encode;
20
- const decode = (buffer, offset, apduLen) => {
21
- let len = 0;
22
- const value = {
23
- property: {}
24
- };
25
- let decodedValue;
26
- let result;
27
- if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0))
28
- return;
29
- len++;
30
- decodedValue = baAsn1.decodeObjectId(buffer, offset + len);
31
- const objectId = {
32
- type: decodedValue.objectType,
33
- instance: decodedValue.instance
34
- };
35
- len += decodedValue.len;
36
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
37
- len += result.len;
38
- if (result.tagNumber !== 1)
39
- return;
40
- decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value);
41
- len += decodedValue.len;
42
- value.property.id = decodedValue.value;
43
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
44
- if (result.tagNumber === 2) {
45
- len += result.len;
46
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
47
- len += decodedValue.len;
48
- value.property.index = decodedValue.value;
49
- }
50
- else {
51
- value.property.index = baEnum.ASN1_ARRAY_ALL;
52
- }
53
- if (!baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 3))
54
- return;
55
- len++;
56
- const values = [];
57
- while ((apduLen - len) > 1 && !baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 3)) {
58
- decodedValue = baAsn1.bacappDecodeApplicationData(buffer, offset + len, apduLen + offset, objectId.type, value.property.id);
59
- if (!decodedValue)
60
- return;
61
- len += decodedValue.len;
62
- delete decodedValue.len;
63
- values.push(decodedValue);
64
- }
65
- value.value = values;
66
- if (!baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 3))
67
- return;
68
- len++;
69
- value.priority = baEnum.ASN1_MAX_PRIORITY;
70
- if (len < apduLen) {
71
- result = baAsn1.decodeTagNumberAndValue(buffer, offset + len);
72
- if (result.tagNumber === 4) {
73
- len += result.len;
74
- decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value);
75
- len += decodedValue;
76
- if ((decodedValue.value >= baEnum.ASN1_MIN_PRIORITY) && (decodedValue.value <= baEnum.ASN1_MAX_PRIORITY)) {
77
- value.priority = decodedValue.value;
78
- }
79
- else {
80
- return;
81
- }
82
- }
83
- }
84
- return {
85
- len: len,
86
- objectId: objectId,
87
- value: value
88
- };
89
- };
90
- exports.decode = decode;
@@ -1,86 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Transport = void 0;
4
- const dgram_1 = require("dgram");
5
- const events_1 = require("events");
6
- const DEFAULT_BACNET_PORT = 47808;
7
- class Transport extends events_1.EventEmitter {
8
- constructor(settings) {
9
- super();
10
- try {
11
- this._lastSendMessages = {};
12
- this._settings = settings;
13
- this._portRange = settings.portRangeMatrix;
14
- this.serverList = {};
15
- for (let i = 0; i < this._portRange.length; i++) {
16
- let port = this._portRange[i];
17
- this.serverList[port] = (0, dgram_1.createSocket)({ type: 'udp4', reuseAddr: true });
18
- this.serverList[port].on('message', (msg, rinfo) => this.emit('message', msg, rinfo.address, rinfo.port));
19
- this.serverList[port].on('error', (err) => this.emit('message', err));
20
- };
21
- } catch (e) {
22
- console.log("Transport constructor error: ", e);
23
- }
24
- }
25
- getBroadcastAddress() {
26
- return this._settings.broadcastAddress;
27
- }
28
- getMaxPayload() {
29
- return 1482;
30
- }
31
- send(buffer, offset, receiver, port) {
32
- try {
33
- if (!receiver) {
34
- receiver = this.getBroadcastAddress();
35
- const dataToSend = Buffer.alloc(offset);
36
- // Sort out broadcasted messages that we also receive
37
- // TODO Find a better way?
38
- const hrTime = process.hrtime();
39
- const messageKey = hrTime[0] * 1000000000 + hrTime[1];
40
- buffer.copy(dataToSend, 0, 0, offset);
41
- this._lastSendMessages[messageKey] = dataToSend;
42
- setTimeout(() => {
43
- delete this._lastSendMessages[messageKey];
44
- }, 10000); // delete after 10s, hopefully all cases are handled by that
45
- }
46
-
47
- const [address] = receiver.split(':');
48
-
49
- if (port == null || port == undefined || port == '' || port == 'null' || port == 'undefined') port = DEFAULT_BACNET_PORT;
50
-
51
- let serverExists = Object.keys(this.serverList).findIndex((existingPort) => port.toString() == existingPort);
52
-
53
- if (serverExists !== -1) {
54
- let server = this.serverList[port];
55
- server.send(buffer, 0, offset, port, address);
56
- }
57
- } catch (e) {
58
- console.log("Transport send error: ", e);
59
- }
60
- }
61
- open() {
62
- try {
63
- for (let port in this.serverList) {
64
- let server = this.serverList[port];
65
- if (server) {
66
- server.bind(port, this._settings.interface, () => {
67
- server.setBroadcast(true);
68
- });
69
- }
70
- }
71
- } catch (e) {
72
- console.log("Transport open error: ", e);
73
- }
74
- }
75
- close() {
76
- try {
77
- for (let port in this.serverList) {
78
- let server = this.serverList[port];
79
- if (server) server.close();
80
- }
81
- } catch (e) {
82
- console.log("Transport close error: ", e);
83
- }
84
- }
85
- }
86
- exports.Transport = Transport;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });