@bitpoolos/edge-bacnet 1.0.6 → 1.1.0

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 (181) hide show
  1. package/bacnet_client.js +650 -233
  2. package/bacnet_device.js +65 -16
  3. package/bacnet_gateway.html +242 -99
  4. package/bacnet_gateway.js +211 -27
  5. package/bacnet_object.js +1 -1
  6. package/bacnet_read.html +211 -133
  7. package/bacnet_read.js +24 -24
  8. package/bacnet_server.js +321 -0
  9. package/bacnet_write.html +24 -15
  10. package/bacnet_write.js +0 -2
  11. package/common.js +95 -9
  12. package/edge-bacnet-datastore.cfg +0 -0
  13. package/package.json +6 -4
  14. package/resources/confirmationservice.min.js +1 -0
  15. package/resources/confirmdialog.min.js +1 -0
  16. package/resources/fonts/primeicons.woff2 +0 -0
  17. package/resources/node-bacnet/CHANGELOG.md +481 -0
  18. package/resources/{bacstack → node-bacnet}/LICENSE.md +3 -1
  19. package/resources/node-bacnet/README.md +91 -0
  20. package/resources/node-bacnet/docs/Client.html +4422 -0
  21. package/resources/node-bacnet/docs/bacnet-icon-quad.png +0 -0
  22. package/resources/node-bacnet/docs/bacnet-icon-quad128.png +0 -0
  23. package/resources/node-bacnet/docs/bacnet-icon-quad64.png +0 -0
  24. package/resources/node-bacnet/docs/bacnet-icon-small.xcf +0 -0
  25. package/resources/node-bacnet/docs/bacnet-icon.xcf +0 -0
  26. package/resources/node-bacnet/docs/bacnet.html +7032 -0
  27. package/resources/node-bacnet/docs/client.js.html +1759 -0
  28. package/resources/node-bacnet/docs/enum.js.html +2530 -0
  29. package/resources/node-bacnet/docs/global.html +2068 -0
  30. package/resources/node-bacnet/docs/images/mocha-logo.svg +65 -0
  31. package/resources/node-bacnet/docs/index.html +283 -0
  32. package/resources/node-bacnet/docs/scripts/collapse.js +11 -0
  33. package/resources/node-bacnet/docs/scripts/jquery-3.1.1.min.js +4 -0
  34. package/resources/node-bacnet/docs/scripts/linenumber.js +26 -0
  35. package/resources/node-bacnet/docs/scripts/prettify/Apache-License-2.0.txt +202 -0
  36. package/resources/node-bacnet/docs/scripts/prettify/lang-css.js +2 -0
  37. package/resources/node-bacnet/docs/scripts/prettify/prettify.js +28 -0
  38. package/resources/node-bacnet/docs/scripts/search.js +47 -0
  39. package/resources/node-bacnet/docs/services_i-am.js.html +157 -0
  40. package/resources/node-bacnet/docs/services_time-sync.js.html +118 -0
  41. package/resources/node-bacnet/docs/services_who-is.js.html +138 -0
  42. package/resources/node-bacnet/docs/styles/jsdoc.css +683 -0
  43. package/resources/node-bacnet/docs/styles/prettify.css +82 -0
  44. package/resources/node-bacnet/examples/discover-devices.js +66 -0
  45. package/resources/node-bacnet/examples/read-device.js +510 -0
  46. package/resources/node-bacnet/examples/subscribe-cov.js +75 -0
  47. package/resources/{bacstack → node-bacnet}/index.js +3 -0
  48. package/resources/{bacstack → node-bacnet}/lib/apdu.js +56 -39
  49. package/resources/{bacstack → node-bacnet}/lib/asn1.js +550 -532
  50. package/resources/node-bacnet/lib/bvlc.js +90 -0
  51. package/resources/node-bacnet/lib/client.js +1695 -0
  52. package/resources/node-bacnet/lib/enum.js +2463 -0
  53. package/resources/node-bacnet/lib/npdu.js +123 -0
  54. package/resources/{bacstack → node-bacnet}/lib/services/add-list-element.js +12 -6
  55. package/resources/{bacstack → node-bacnet}/lib/services/alarm-acknowledge.js +3 -3
  56. package/resources/{bacstack → node-bacnet}/lib/services/alarm-summary.js +5 -4
  57. package/resources/{bacstack → node-bacnet}/lib/services/atomic-read-file.js +49 -26
  58. package/resources/{bacstack → node-bacnet}/lib/services/atomic-write-file.js +40 -23
  59. package/resources/{bacstack → node-bacnet}/lib/services/cov-notify.js +33 -17
  60. package/resources/{bacstack → node-bacnet}/lib/services/create-object.js +23 -13
  61. package/resources/{bacstack → node-bacnet}/lib/services/delete-object.js +7 -2
  62. package/resources/{bacstack → node-bacnet}/lib/services/device-communication-control.js +8 -3
  63. package/resources/{bacstack → node-bacnet}/lib/services/error.js +7 -0
  64. package/resources/{bacstack → node-bacnet}/lib/services/event-information.js +10 -9
  65. package/resources/{bacstack → node-bacnet}/lib/services/event-notify-data.js +38 -16
  66. package/resources/{bacstack → node-bacnet}/lib/services/get-enrollment-summary.js +24 -11
  67. package/resources/{bacstack → node-bacnet}/lib/services/get-event-information.js +28 -13
  68. package/resources/node-bacnet/lib/services/i-am.js +90 -0
  69. package/resources/{bacstack/lib/services/i-have-broadcast.js → node-bacnet/lib/services/i-have.js} +3 -2
  70. package/resources/{bacstack → node-bacnet}/lib/services/index.js +7 -4
  71. package/resources/{bacstack → node-bacnet}/lib/services/life-safety-operation.js +3 -2
  72. package/resources/{bacstack → node-bacnet}/lib/services/private-transfer.js +3 -2
  73. package/resources/{bacstack → node-bacnet}/lib/services/read-property-multiple.js +11 -6
  74. package/resources/{bacstack → node-bacnet}/lib/services/read-property.js +42 -24
  75. package/resources/{bacstack → node-bacnet}/lib/services/read-range.js +37 -27
  76. package/resources/node-bacnet/lib/services/register-foreign-device.js +18 -0
  77. package/resources/{bacstack → node-bacnet}/lib/services/reinitialize-device.js +9 -4
  78. package/resources/{bacstack → node-bacnet}/lib/services/subscribe-cov.js +9 -4
  79. package/resources/{bacstack → node-bacnet}/lib/services/subscribe-property.js +18 -8
  80. package/resources/{bacstack → node-bacnet}/lib/services/time-sync.js +28 -5
  81. package/resources/{bacstack → node-bacnet}/lib/services/who-has.js +3 -3
  82. package/resources/{bacstack → node-bacnet}/lib/services/who-is.js +42 -9
  83. package/resources/{bacstack → node-bacnet}/lib/services/write-property-multiple.js +33 -16
  84. package/resources/{bacstack → node-bacnet}/lib/services/write-property.js +23 -13
  85. package/resources/node-bacnet/lib/transport.js +82 -0
  86. package/resources/node-bacnet/package.json +92 -0
  87. package/resources/primeicons.css +90 -2
  88. package/resources/bacstack/.codeclimate.yml +0 -15
  89. package/resources/bacstack/.dockerignore +0 -5
  90. package/resources/bacstack/.editorconfig +0 -13
  91. package/resources/bacstack/.eslintrc.yml +0 -13
  92. package/resources/bacstack/.github/ISSUE_TEMPLATE.md +0 -26
  93. package/resources/bacstack/.github/PULL_REQUEST_TEMPLATE.md +0 -14
  94. package/resources/bacstack/.github/workflows/ci.yml +0 -39
  95. package/resources/bacstack/.jscsrc +0 -8
  96. package/resources/bacstack/.jshintrc +0 -50
  97. package/resources/bacstack/.travis.yml +0 -27
  98. package/resources/bacstack/CHANGELOG.md +0 -232
  99. package/resources/bacstack/CODE_OF_CONDUCT.md +0 -74
  100. package/resources/bacstack/CONTRIBUTING.md +0 -77
  101. package/resources/bacstack/Dockerfile +0 -15
  102. package/resources/bacstack/FAQ.md +0 -64
  103. package/resources/bacstack/README.md +0 -157
  104. package/resources/bacstack/docker-compose.yml +0 -9
  105. package/resources/bacstack/lib/adpu.js +0 -190
  106. package/resources/bacstack/lib/bvlc.js +0 -43
  107. package/resources/bacstack/lib/client.js +0 -1028
  108. package/resources/bacstack/lib/enum.js +0 -1314
  109. package/resources/bacstack/lib/npdu.js +0 -119
  110. package/resources/bacstack/lib/services/i-am-broadcast.js +0 -51
  111. package/resources/bacstack/lib/services.js +0 -1963
  112. package/resources/bacstack/lib/transport.js +0 -52
  113. package/resources/bacstack/package-lock.json +0 -7974
  114. package/resources/bacstack/package.json +0 -84
  115. package/resources/bacstack/test/compliance/who-is.spec.js +0 -37
  116. package/resources/bacstack/test/integration/acknowledge-alarm.spec.js +0 -14
  117. package/resources/bacstack/test/integration/add-list-element.spec.js +0 -16
  118. package/resources/bacstack/test/integration/confirmed-event-notification.spec.js +0 -30
  119. package/resources/bacstack/test/integration/confirmed-private-transfer.spec.js +0 -15
  120. package/resources/bacstack/test/integration/create-object.spec.js +0 -16
  121. package/resources/bacstack/test/integration/delete-object.spec.js +0 -14
  122. package/resources/bacstack/test/integration/device-communication-control.spec.js +0 -14
  123. package/resources/bacstack/test/integration/get-alarm-summary.spec.js +0 -14
  124. package/resources/bacstack/test/integration/get-enrollment-summary.spec.js +0 -15
  125. package/resources/bacstack/test/integration/get-event-information.spec.js +0 -14
  126. package/resources/bacstack/test/integration/read-file.spec.js +0 -14
  127. package/resources/bacstack/test/integration/read-property-multiple.spec.js +0 -110
  128. package/resources/bacstack/test/integration/read-property.spec.js +0 -14
  129. package/resources/bacstack/test/integration/read-range.spec.js +0 -14
  130. package/resources/bacstack/test/integration/reinitialize-sevice.spec.js +0 -14
  131. package/resources/bacstack/test/integration/remove-list-element.spec.js +0 -16
  132. package/resources/bacstack/test/integration/subscribe-cov.spec.js +0 -14
  133. package/resources/bacstack/test/integration/subscribe-property.spec.js +0 -14
  134. package/resources/bacstack/test/integration/time-sync-utc.spec.js +0 -10
  135. package/resources/bacstack/test/integration/time-sync.spec.js +0 -10
  136. package/resources/bacstack/test/integration/unconfirmed-event-notification.spec.js +0 -28
  137. package/resources/bacstack/test/integration/unconfirmed-private-transfer.spec.js +0 -11
  138. package/resources/bacstack/test/integration/utils.js +0 -30
  139. package/resources/bacstack/test/integration/who-is.spec.js +0 -17
  140. package/resources/bacstack/test/integration/write-file.spec.js +0 -14
  141. package/resources/bacstack/test/integration/write-property-multiple.spec.js +0 -19
  142. package/resources/bacstack/test/integration/write-property.spec.js +0 -14
  143. package/resources/bacstack/test/unit/apdu.spec.js +0 -162
  144. package/resources/bacstack/test/unit/asn1.spec.js +0 -39
  145. package/resources/bacstack/test/unit/bacnet-apdu.spec.js +0 -161
  146. package/resources/bacstack/test/unit/bacnet-asn1.spec.js +0 -32
  147. package/resources/bacstack/test/unit/bacnet-bvlc.spec.js +0 -57
  148. package/resources/bacstack/test/unit/bacnet-npdu.spec.js +0 -118
  149. package/resources/bacstack/test/unit/bacnet-services.spec.js +0 -2052
  150. package/resources/bacstack/test/unit/bvlc.spec.js +0 -58
  151. package/resources/bacstack/test/unit/npdu.spec.js +0 -119
  152. package/resources/bacstack/test/unit/service-add-list-element.spec.js +0 -24
  153. package/resources/bacstack/test/unit/service-alarm-acknowledge.spec.js +0 -71
  154. package/resources/bacstack/test/unit/service-alarm-summary.spec.js +0 -22
  155. package/resources/bacstack/test/unit/service-atomic-read-file.spec.js +0 -54
  156. package/resources/bacstack/test/unit/service-atomic-write-file.spec.js +0 -56
  157. package/resources/bacstack/test/unit/service-cov-notify.spec.js +0 -98
  158. package/resources/bacstack/test/unit/service-create-object.spec.js +0 -90
  159. package/resources/bacstack/test/unit/service-delete-object.spec.js +0 -17
  160. package/resources/bacstack/test/unit/service-device-communication-control.spec.js +0 -29
  161. package/resources/bacstack/test/unit/service-error.spec.js +0 -17
  162. package/resources/bacstack/test/unit/service-event-information.spec.js +0 -48
  163. package/resources/bacstack/test/unit/service-event-notify-data.spec.js +0 -310
  164. package/resources/bacstack/test/unit/service-get-enrollment-summary.spec.js +0 -45
  165. package/resources/bacstack/test/unit/service-get-event-information.spec.js +0 -62
  166. package/resources/bacstack/test/unit/service-i-am.spec.js +0 -19
  167. package/resources/bacstack/test/unit/service-i-have-broadcast.spec.js +0 -18
  168. package/resources/bacstack/test/unit/service-life-safety-operation.spec.js +0 -19
  169. package/resources/bacstack/test/unit/service-private-transfer.spec.js +0 -18
  170. package/resources/bacstack/test/unit/service-read-property-multiple.spec.js +0 -131
  171. package/resources/bacstack/test/unit/service-read-property.spec.js +0 -541
  172. package/resources/bacstack/test/unit/service-read-range.spec.js +0 -97
  173. package/resources/bacstack/test/unit/service-reinitialize-device.spec.js +0 -27
  174. package/resources/bacstack/test/unit/service-subscribe-cov.spec.js +0 -32
  175. package/resources/bacstack/test/unit/service-subscribe-property.spec.js +0 -50
  176. package/resources/bacstack/test/unit/service-time-sync.spec.js +0 -18
  177. package/resources/bacstack/test/unit/service-who-has.spec.js +0 -33
  178. package/resources/bacstack/test/unit/service-who-is.spec.js +0 -17
  179. package/resources/bacstack/test/unit/service-write-property-multiple.spec.js +0 -143
  180. package/resources/bacstack/test/unit/service-write-property.spec.js +0 -198
  181. package/resources/bacstack/test/unit/utils.js +0 -6
@@ -1,19 +0,0 @@
1
- var expect = require('chai').expect;
2
- var utils = require('./utils');
3
-
4
- describe('bacstack - writePropertyMultiple integration', function() {
5
- it('should return a timeout error if no device is available', function(next) {
6
- var client = new utils.bacnetClient({adpuTimeout: 200});
7
- var values = [
8
- {objectId: {type: 8, instance: 44301}, values: [
9
- {property: {id: 28, index: 12}, value: [{type: 1, value: true}], priority: 8}
10
- ]}
11
- ];
12
- client.writePropertyMultiple('127.0.0.1', values, function(err, value) {
13
- expect(err.message).to.eql('ERR_TIMEOUT');
14
- expect(value).to.eql(undefined);
15
- client.close();
16
- next();
17
- });
18
- });
19
- });
@@ -1,14 +0,0 @@
1
- var expect = require('chai').expect;
2
- var utils = require('./utils');
3
-
4
- describe('bacstack - writeProperty integration', function() {
5
- it('should return a timeout error if no device is available', function(next) {
6
- var client = new utils.bacnetClient({adpuTimeout: 200});
7
- client.writeProperty('127.0.0.1', {type: 8, instance: 44301}, 28, [{type: 4, value: 100}], function(err, value) {
8
- expect(err.message).to.eql('ERR_TIMEOUT');
9
- expect(value).to.eql(undefined);
10
- client.close();
11
- next();
12
- });
13
- });
14
- });
@@ -1,162 +0,0 @@
1
- 'use strict';
2
-
3
- const utils = require('./utils');
4
- const baApdu = require('../../lib/apdu');
5
-
6
- describe('bacstack - APDU layer', () => {
7
- describe('decodedType', () => {
8
- it('should correctly encode and decode a package', () => {
9
- const value = [0, 128, 4, 5];
10
- baApdu.setDecodedType(value, 1, 48);
11
- const result = baApdu.getDecodedInvokeId(value, 1);
12
- expect(result).toEqual(4);
13
- });
14
-
15
- it('should correctly encode and decode a confirmed service package', () => {
16
- const value = [0, 128, 4, 5];
17
- baApdu.setDecodedType(value, 1, 0);
18
- const result = baApdu.getDecodedInvokeId(value, 1);
19
- expect(result).toEqual(5);
20
- });
21
-
22
- it('should fail if decode an invalid package', () => {
23
- const value = [0, 128, 4, 5];
24
- const result = baApdu.getDecodedInvokeId(value, 1);
25
- expect(result).toBeUndefined();
26
- });
27
- });
28
-
29
- describe('confirmedServiceRequest', () => {
30
- it('should correctly encode and decode a package', () => {
31
- const buffer = utils.getBuffer();
32
- baApdu.encodeConfirmedServiceRequest(buffer, 0, 41, 176, 12, 44, 45, 46);
33
- const result = baApdu.decodeConfirmedServiceRequest(buffer.buffer, 0);
34
- expect(result).toEqual({
35
- len: 4,
36
- type: 0,
37
- service: 41,
38
- maxSegments: 176,
39
- maxApdu: 12,
40
- invokeId: 44,
41
- sequencenumber: 0,
42
- proposedWindowNumber: 0
43
- });
44
- });
45
-
46
- it('should correctly encode and decode a segmented package', () => {
47
- const buffer = utils.getBuffer();
48
- baApdu.encodeConfirmedServiceRequest(buffer, 8, 47, 208, 14, 50, 51, 52);
49
- const result = baApdu.decodeConfirmedServiceRequest(buffer.buffer, 0);
50
- expect(result).toEqual({
51
- len: 6,
52
- type: 8,
53
- service: 47,
54
- maxSegments: 208,
55
- maxApdu: 14,
56
- invokeId: 50,
57
- sequencenumber: 51,
58
- proposedWindowNumber: 52
59
- });
60
- });
61
- });
62
-
63
- describe('unconfirmedServiceRequest', () => {
64
- it('should correctly encode and decode a package', () => {
65
- const buffer = utils.getBuffer();
66
- baApdu.encodeUnconfirmedServiceRequest(buffer, 33, 34);
67
- const result = baApdu.decodeUnconfirmedServiceRequest(buffer.buffer, 0);
68
- expect(result).toEqual({
69
- len: 2,
70
- type: 33,
71
- service: 34
72
- });
73
- });
74
- });
75
-
76
- describe('simpleAck', () => {
77
- it('should correctly encode and decode a package', () => {
78
- const buffer = utils.getBuffer();
79
- baApdu.encodeSimpleAck(buffer, 11, 12, 13);
80
- const result = baApdu.decodeSimpleAck(buffer.buffer, 0);
81
- expect(result).toEqual({
82
- len: 3,
83
- type: 11,
84
- service: 12,
85
- invokeId: 13
86
- });
87
- });
88
- });
89
-
90
- describe('complexAck', () => {
91
- it('should correctly encode and decode a package', () => {
92
- const buffer = utils.getBuffer();
93
- baApdu.encodeComplexAck(buffer, 0, 15, 16, 20, 21);
94
- const result = baApdu.decodeComplexAck(buffer.buffer, 0);
95
- expect(result).toEqual({
96
- len: 3,
97
- type: 0,
98
- service: 15,
99
- invokeId: 16,
100
- sequencenumber: 0,
101
- proposedWindowNumber: 0
102
- });
103
- });
104
-
105
- it('should correctly encode and decode a segmented package', () => {
106
- const buffer = utils.getBuffer();
107
- baApdu.encodeComplexAck(buffer, 8, 18, 19, 20, 21);
108
- const result = baApdu.decodeComplexAck(buffer.buffer, 0);
109
- expect(result).toEqual({
110
- len: 5,
111
- type: 8,
112
- service: 18,
113
- invokeId: 19,
114
- sequencenumber: 20,
115
- proposedWindowNumber: 21
116
- });
117
- });
118
- });
119
-
120
- describe('segmentAck', () => {
121
- it('should correctly encode and decode a package', () => {
122
- const buffer = utils.getBuffer();
123
- baApdu.encodeSegmentAck(buffer, 6, 7, 8, 9);
124
- const result = baApdu.decodeSegmentAck(buffer.buffer, 0);
125
- expect(result).toEqual({
126
- len: 4,
127
- type: 6,
128
- originalInvokeId: 7,
129
- sequencenumber: 8,
130
- actualWindowSize: 9
131
- });
132
- });
133
- });
134
-
135
- describe('error', () => {
136
- it('should correctly encode and decode a package', () => {
137
- const buffer = utils.getBuffer();
138
- baApdu.encodeError(buffer, 5, 6, 7);
139
- const result = baApdu.decodeError(buffer.buffer, 0);
140
- expect(result).toEqual({
141
- len: 3,
142
- type: 5,
143
- service: 6,
144
- invokeId: 7
145
- });
146
- });
147
- });
148
-
149
- describe('abort', () => {
150
- it('should correctly encode and decode a package', () => {
151
- const buffer = utils.getBuffer();
152
- baApdu.encodeAbort(buffer, 4, 5, 6);
153
- const result = baApdu.decodeAbort(buffer.buffer, 0);
154
- expect(result).toEqual({
155
- len: 3,
156
- type: 4,
157
- invokeId: 5,
158
- reason: 6
159
- });
160
- });
161
- });
162
- });
@@ -1,39 +0,0 @@
1
- 'use strict';
2
-
3
- const baAsn1 = require('../../lib/asn1');
4
-
5
- describe('bacstack - ASN1 layer', () => {
6
- describe('decodeUnsigned', () => {
7
- it('should fail if unsuport length', () => {
8
- expect(() => baAsn1.decodeUnsigned(Buffer.from([0xFF, 0xFF]), 0, 5)).toThrow('outside buffer bounds');
9
- });
10
-
11
- it('should successfully decode 8-bit unsigned integer', () => {
12
- const result = baAsn1.decodeUnsigned(Buffer.from([0x00, 0xFF, 0xFF, 0xFF, 0xFF]), 1, 1);
13
- expect(result).toEqual({len: 1, value: 255});
14
- });
15
-
16
- it('should successfully decode 16-bit unsigned integer', () => {
17
- const result = baAsn1.decodeUnsigned(Buffer.from([0x00, 0xFF, 0xFF, 0xFF, 0xFF]), 1, 2);
18
- expect(result).toEqual({len: 2, value: 65535});
19
- });
20
-
21
- it('should successfully decode 24-bit unsigned integer', () => {
22
- const result = baAsn1.decodeUnsigned(Buffer.from([0x00, 0xFF, 0xFF, 0xFF, 0xFF]), 1, 3);
23
- expect(result).toEqual({len: 3, value: 16777215});
24
- });
25
-
26
- it('should successfully decode 32-bit unsigned integer', () => {
27
- const result = baAsn1.decodeUnsigned(Buffer.from([0x00, 0xFF, 0xFF, 0xFF, 0xFF]), 1, 4);
28
- expect(result).toEqual({len: 4, value: 4294967295});
29
- });
30
- });
31
-
32
- describe('encodeBacnetObjectId', () => {
33
- it('should successfully encode with object-type > 512', () => {
34
- const buffer = {buffer: Buffer.alloc(4), offset: 0};
35
- baAsn1.encodeBacnetObjectId(buffer, 600, 600);
36
- expect(buffer).toEqual({buffer: Buffer.from([150, 0, 2, 88]), offset: 4});
37
- });
38
- });
39
- });
@@ -1,161 +0,0 @@
1
- var expect = require('chai').expect;
2
- var utils = require('./utils');
3
- var baApdu = require('../../lib/adpu');
4
-
5
- describe('bacstack - APDU layer', function() {
6
- describe('decodedType', function() {
7
- it('should correctly encode and decode a package', function() {
8
- var value = [0, 128, 4, 5];
9
- baApdu.setDecodedType(value, 1, 48);
10
- var result = baApdu.getDecodedInvokeId(value, 1);
11
- expect(result).to.equal(4);
12
- });
13
-
14
- it('should correctly encode and decode a confirmed service package', function() {
15
- var value = [0, 128, 4, 5];
16
- baApdu.setDecodedType(value, 1, 0);
17
- var result = baApdu.getDecodedInvokeId(value, 1);
18
- expect(result).to.equal(5);
19
- });
20
-
21
- it('should fail if decode an invalid package', function() {
22
- var value = [0, 128, 4, 5];
23
- var result = baApdu.getDecodedInvokeId(value, 1);
24
- expect(result).to.equal(undefined);
25
- });
26
- });
27
-
28
- describe('confirmedServiceRequest', function() {
29
- it('should correctly encode and decode a package', function() {
30
- var buffer = utils.getBuffer();
31
- baApdu.encodeConfirmedServiceRequest(buffer, 0, 41, 176, 12, 44, 45, 46);
32
- var result = baApdu.decodeConfirmedServiceRequest(buffer.buffer, 0);
33
- expect(result).to.deep.equal({
34
- len: 4,
35
- type: 0,
36
- service: 41,
37
- maxSegments: 176,
38
- maxAdpu: 12,
39
- invokeId: 44,
40
- sequencenumber: 0,
41
- proposedWindowNumber: 0
42
- });
43
- });
44
-
45
- it('should correctly encode and decode a segmented package', function() {
46
- var buffer = utils.getBuffer();
47
- baApdu.encodeConfirmedServiceRequest(buffer, 8, 47, 208, 14, 50, 51, 52);
48
- var result = baApdu.decodeConfirmedServiceRequest(buffer.buffer, 0);
49
- expect(result).to.deep.equal({
50
- len: 6,
51
- type: 8,
52
- service: 47,
53
- maxSegments: 208,
54
- maxAdpu: 14,
55
- invokeId: 50,
56
- sequencenumber: 51,
57
- proposedWindowNumber: 52
58
- });
59
- });
60
- });
61
-
62
- describe('unconfirmedServiceRequest', function() {
63
- it('should correctly encode and decode a package', function() {
64
- var buffer = utils.getBuffer();
65
- baApdu.encodeUnconfirmedServiceRequest(buffer, 33, 34);
66
- var result = baApdu.decodeUnconfirmedServiceRequest(buffer.buffer, 0);
67
- expect(result).to.deep.equal({
68
- len: 2,
69
- type: 33,
70
- service: 34
71
- });
72
- });
73
- });
74
-
75
- describe('simpleAck', function() {
76
- it('should correctly encode and decode a package', function() {
77
- var buffer = utils.getBuffer();
78
- baApdu.encodeSimpleAck(buffer, 11, 12, 13);
79
- var result = baApdu.decodeSimpleAck(buffer.buffer, 0);
80
- expect(result).to.deep.equal({
81
- len: 3,
82
- type: 11,
83
- service: 12,
84
- invokeId: 13
85
- });
86
- });
87
- });
88
-
89
- describe('complexAck', function() {
90
- it('should correctly encode and decode a package', function() {
91
- var buffer = utils.getBuffer();
92
- baApdu.encodeComplexAck(buffer, 0, 15, 16, 20, 21);
93
- var result = baApdu.decodeComplexAck(buffer.buffer, 0);
94
- expect(result).to.deep.equal({
95
- len: 3,
96
- type: 0,
97
- service: 15,
98
- invokeId: 16,
99
- sequencenumber: 0,
100
- proposedWindowNumber: 0
101
- });
102
- });
103
-
104
- it('should correctly encode and decode a segmented package', function() {
105
- var buffer = utils.getBuffer();
106
- baApdu.encodeComplexAck(buffer, 8, 18, 19, 20, 21);
107
- var result = baApdu.decodeComplexAck(buffer.buffer, 0);
108
- expect(result).to.deep.equal({
109
- len: 5,
110
- type: 8,
111
- service: 18,
112
- invokeId: 19,
113
- sequencenumber: 20,
114
- proposedWindowNumber: 21
115
- });
116
- });
117
- });
118
-
119
- describe('segmentAck', function() {
120
- it('should correctly encode and decode a package', function() {
121
- var buffer = utils.getBuffer();
122
- baApdu.encodeSegmentAck(buffer, 6, 7, 8, 9);
123
- var result = baApdu.decodeSegmentAck(buffer.buffer, 0);
124
- expect(result).to.deep.equal({
125
- len: 4,
126
- type: 6,
127
- originalInvokeId: 7,
128
- sequencenumber: 8,
129
- actualWindowSize: 9
130
- });
131
- });
132
- });
133
-
134
- describe('error', function() {
135
- it('should correctly encode and decode a package', function() {
136
- var buffer = utils.getBuffer();
137
- baApdu.encodeError(buffer, 5, 6, 7);
138
- var result = baApdu.decodeError(buffer.buffer, 0);
139
- expect(result).to.deep.equal({
140
- len: 3,
141
- type: 5,
142
- service: 6,
143
- invokeId: 7
144
- });
145
- });
146
- });
147
-
148
- describe('abort', function() {
149
- it('should correctly encode and decode a package', function() {
150
- var buffer = utils.getBuffer();
151
- baApdu.encodeAbort(buffer, 4, 5, 6);
152
- var result = baApdu.decodeAbort(buffer.buffer, 0);
153
- expect(result).to.deep.equal({
154
- len: 3,
155
- type: 4,
156
- invokeId: 5,
157
- reason: 6
158
- });
159
- });
160
- });
161
- });
@@ -1,32 +0,0 @@
1
- var expect = require('chai').expect;
2
- var utils = require('./utils');
3
- var baAsn1 = require('../../lib/asn1');
4
-
5
- describe('bacstack - ASN1 layer', function() {
6
- describe('decodeUnsigned', function() {
7
- it('should fail if unsuport length', function() {
8
- var result = baAsn1.decodeUnsigned(Buffer.from([0xFF, 0xFF]), 0, 5);
9
- expect(result).to.deep.equal({len: 5, value: NaN});
10
- });
11
-
12
- it('should successfully decode 8-bit unsigned integer', function() {
13
- var result = baAsn1.decodeUnsigned(Buffer.from([0x00, 0xFF, 0xFF, 0xFF, 0xFF]), 1, 1);
14
- expect(result).to.deep.equal({len: 1, value: 255});
15
- });
16
-
17
- it('should successfully decode 16-bit unsigned integer', function() {
18
- var result = baAsn1.decodeUnsigned(Buffer.from([0x00, 0xFF, 0xFF, 0xFF, 0xFF]), 1, 2);
19
- expect(result).to.deep.equal({len: 2, value: 65535});
20
- });
21
-
22
- it('should successfully decode 24-bit unsigned integer', function() {
23
- var result = baAsn1.decodeUnsigned(Buffer.from([0x00, 0xFF, 0xFF, 0xFF, 0xFF]), 1, 3);
24
- expect(result).to.deep.equal({len: 3, value: 16777215});
25
- });
26
-
27
- it('should successfully decode 32-bit unsigned integer', function() {
28
- var result = baAsn1.decodeUnsigned(Buffer.from([0x00, 0xFF, 0xFF, 0xFF, 0xFF]), 1, 4);
29
- expect(result).to.deep.equal({len: 4, value: 4294967295});
30
- });
31
- });
32
- });
@@ -1,57 +0,0 @@
1
- var expect = require('chai').expect;
2
- var utils = require('./utils');
3
- var baBvlc = require('../../lib/bvlc');
4
-
5
- describe('bacstack - BVLC layer', function() {
6
- it('should successfuly encode and decode a package', function() {
7
- var buffer = utils.getBuffer();
8
- baBvlc.encode(buffer.buffer, 10, 1482);
9
- var result = baBvlc.decode(buffer.buffer, 0);
10
- expect(result).to.deep.equal({
11
- len: 4,
12
- func: 10,
13
- msgLength: 1482
14
- });
15
- });
16
-
17
- it('should successfuly encode and decode a forwarded package', function() {
18
- var buffer = utils.getBuffer();
19
- baBvlc.encode(buffer.buffer, 4, 1482);
20
- var result = baBvlc.decode(buffer.buffer, 0);
21
- expect(result).to.deep.equal({
22
- len: 10,
23
- func: 4,
24
- msgLength: 1482
25
- });
26
- });
27
-
28
- it('should fail if invalid BVLC type', function() {
29
- var buffer = utils.getBuffer();
30
- baBvlc.encode(buffer.buffer, 10, 1482);
31
- buffer.buffer[0] = 8;
32
- var result = baBvlc.decode(buffer.buffer, 0);
33
- expect(result).to.equal(undefined);
34
- });
35
-
36
- it('should fail if invalid length', function() {
37
- var buffer = utils.getBuffer();
38
- baBvlc.encode(buffer.buffer, 10, 1481);
39
- buffer.buffer[0] = 8;
40
- var result = baBvlc.decode(buffer.buffer, 0);
41
- expect(result).to.equal(undefined);
42
- });
43
-
44
- it('should fail if invalid function', function() {
45
- var buffer = utils.getBuffer();
46
- baBvlc.encode(buffer.buffer, 100, 1482);
47
- var result = baBvlc.decode(buffer.buffer, 0);
48
- expect(result).to.equal(undefined);
49
- });
50
-
51
- it('should fail if unsuported function', function() {
52
- var buffer = utils.getBuffer();
53
- baBvlc.encode(buffer.buffer, 5, 1482);
54
- var result = baBvlc.decode(buffer.buffer, 0);
55
- expect(result).to.equal(undefined);
56
- });
57
- });
@@ -1,118 +0,0 @@
1
- var expect = require('chai').expect;
2
- var utils = require('./utils');
3
- var baNpdu = require('../../lib/npdu');
4
-
5
- describe('bacstack - NPDU layer', function() {
6
- it('should successfully decode the NPDU function', function() {
7
- var result = baNpdu.decodeFunction([0, 1, 12], 1);
8
- expect(result).to.equal(12);
9
- });
10
-
11
- it('should fail decoding the NPDU function if invalid version', function() {
12
- var result = baNpdu.decodeFunction([0, 2, 12], 1);
13
- expect(result).to.equal(undefined);
14
- });
15
-
16
- it('should successfully encode and decode a basic NPDU package', function() {
17
- var buffer = utils.getBuffer();
18
- baNpdu.encode(buffer, 1);
19
- var result = baNpdu.decode(buffer.buffer, 0);
20
- expect(result).to.deep.equal({
21
- len: 2,
22
- funct: 1,
23
- destination: undefined,
24
- source: undefined,
25
- hopCount: 0,
26
- networkMsgType: 0,
27
- vendorId: 0
28
- });
29
- });
30
-
31
- it('should successfully encode and decode a NPDU package with destination', function() {
32
- var buffer = utils.getBuffer();
33
- var destination = {net: 1000, adr: [1, 2, 3]};
34
- baNpdu.encode(buffer, 1, destination, undefined, 11, 5, 7);
35
- var result = baNpdu.decode(buffer.buffer, 0);
36
- expect(result).to.deep.equal({
37
- len: 9,
38
- funct: 33,
39
- destination: {type: 0, net: 1000, adr: [1, 2, 3]},
40
- source: undefined,
41
- hopCount: 11,
42
- networkMsgType: 0,
43
- vendorId: 0
44
- });
45
- });
46
-
47
- it('should successfully encode and decode a NPDU package with destination and source', function() {
48
- var buffer = utils.getBuffer();
49
- var destination = {net: 1000, adr: [1, 2, 3]};
50
- var source = {net: 1000, adr: [1, 2, 3]};
51
- baNpdu.encode(buffer, 1, destination, source, 13, 10, 11);
52
- var result = baNpdu.decode(buffer.buffer, 0);
53
- expect(result).to.deep.equal({
54
- len: 15,
55
- funct: 41,
56
- destination: {type: 0, net: 1000, adr: [1, 2, 3]},
57
- source: {type: 0, net: 1000, adr: [1, 2, 3]},
58
- hopCount: 13,
59
- networkMsgType: 0,
60
- vendorId: 0
61
- });
62
- });
63
-
64
- it('should successfully encode and decode a NPDU package with broadcast destination and source', function() {
65
- var buffer = utils.getBuffer();
66
- var destination = {net: 65535};
67
- var source = {net: 1000};
68
- baNpdu.encode(buffer, 1, destination, source, 12, 8, 9);
69
- var result = baNpdu.decode(buffer.buffer, 0);
70
- expect(result).to.deep.equal({
71
- len: 9,
72
- funct: 41,
73
- destination: {type: 0, net: 65535},
74
- source: {type: 0, net: 1000},
75
- hopCount: 12,
76
- networkMsgType: 0,
77
- vendorId: 0
78
- });
79
- });
80
-
81
- it('should successfully encode and decode a network layer NPDU package', function() {
82
- var buffer = utils.getBuffer();
83
- baNpdu.encode(buffer, 128, undefined, undefined, 1, 128, 7777);
84
- var result = baNpdu.decode(buffer.buffer, 0);
85
- expect(result).to.deep.equal({
86
- len: 5,
87
- funct: 128,
88
- destination: undefined,
89
- source: undefined,
90
- hopCount: 0,
91
- networkMsgType: 128,
92
- vendorId: 7777
93
- });
94
- });
95
-
96
- it('should successfully encode and decode a who is router to network layer NPDU package', function() {
97
- var buffer = utils.getBuffer();
98
- baNpdu.encode(buffer, 128, undefined, undefined, 1, 0, 7777);
99
- var result = baNpdu.decode(buffer.buffer, 0);
100
- expect(result).to.deep.equal({
101
- len: 5,
102
- funct: 128,
103
- destination: undefined,
104
- source: undefined,
105
- hopCount: 0,
106
- networkMsgType: 0,
107
- vendorId: 0
108
- });
109
- });
110
-
111
- it('should fail if invalid BACNET version', function() {
112
- var buffer = utils.getBuffer();
113
- baNpdu.encode(buffer, 12, undefined, undefined, 1, 2, 3);
114
- buffer.buffer[0] = 2;
115
- var result = baNpdu.decode(buffer.buffer, 0);
116
- expect(result).to.equal(undefined);
117
- });
118
- });