zigbee-herdsman 0.46.5 → 0.47.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 (261) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +19 -0
  3. package/dist/adapter/adapter.d.ts +7 -7
  4. package/dist/adapter/adapter.d.ts.map +1 -1
  5. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +9 -9
  6. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
  7. package/dist/adapter/deconz/adapter/deconzAdapter.js +4 -4
  8. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
  9. package/dist/adapter/deconz/driver/frameParser.d.ts.map +1 -1
  10. package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
  11. package/dist/adapter/ember/adapter/emberAdapter.d.ts +7 -7
  12. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
  13. package/dist/adapter/ember/adapter/emberAdapter.js +33 -11
  14. package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
  15. package/dist/adapter/ember/adapter/endpoints.js +28 -31
  16. package/dist/adapter/ember/adapter/endpoints.js.map +1 -1
  17. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
  18. package/dist/adapter/ember/ezsp/ezsp.js +8 -6
  19. package/dist/adapter/ember/ezsp/ezsp.js.map +1 -1
  20. package/dist/adapter/ember/uart/ash.d.ts +2 -2
  21. package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
  22. package/dist/adapter/ember/uart/ash.js +7 -13
  23. package/dist/adapter/ember/uart/ash.js.map +1 -1
  24. package/dist/adapter/ember/uart/parser.d.ts.map +1 -1
  25. package/dist/adapter/ember/uart/parser.js +3 -5
  26. package/dist/adapter/ember/uart/parser.js.map +1 -1
  27. package/dist/adapter/events.d.ts +1 -1
  28. package/dist/adapter/events.d.ts.map +1 -1
  29. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +7 -7
  30. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  31. package/dist/adapter/ezsp/adapter/ezspAdapter.js +5 -5
  32. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
  33. package/dist/adapter/ezsp/driver/driver.js +3 -3
  34. package/dist/adapter/ezsp/driver/driver.js.map +1 -1
  35. package/dist/adapter/z-stack/adapter/endpoints.js +4 -4
  36. package/dist/adapter/z-stack/adapter/endpoints.js.map +1 -1
  37. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +7 -7
  38. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  39. package/dist/adapter/z-stack/adapter/zStackAdapter.js +5 -5
  40. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  41. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +7 -7
  42. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
  43. package/dist/adapter/zigate/adapter/zigateAdapter.js +4 -4
  44. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
  45. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +1 -1
  46. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -1
  47. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
  48. package/dist/adapter/zigate/driver/zigate.js.map +1 -1
  49. package/dist/buffalo/buffalo.d.ts +2 -1
  50. package/dist/buffalo/buffalo.d.ts.map +1 -1
  51. package/dist/buffalo/buffalo.js +2 -2
  52. package/dist/buffalo/buffalo.js.map +1 -1
  53. package/dist/controller/controller.d.ts.map +1 -1
  54. package/dist/controller/controller.js +6 -6
  55. package/dist/controller/controller.js.map +1 -1
  56. package/dist/controller/events.d.ts +1 -1
  57. package/dist/controller/events.d.ts.map +1 -1
  58. package/dist/controller/greenPower.d.ts +2 -2
  59. package/dist/controller/greenPower.d.ts.map +1 -1
  60. package/dist/controller/greenPower.js +5 -6
  61. package/dist/controller/greenPower.js.map +1 -1
  62. package/dist/controller/helpers/request.d.ts +3 -3
  63. package/dist/controller/helpers/request.d.ts.map +1 -1
  64. package/dist/controller/helpers/request.js.map +1 -1
  65. package/dist/controller/helpers/requestQueue.js.map +1 -1
  66. package/dist/controller/helpers/zclFrameConverter.d.ts +4 -4
  67. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  68. package/dist/controller/helpers/zclFrameConverter.js +25 -6
  69. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  70. package/dist/controller/model/device.d.ts +4 -4
  71. package/dist/controller/model/device.d.ts.map +1 -1
  72. package/dist/controller/model/device.js +8 -10
  73. package/dist/controller/model/device.js.map +1 -1
  74. package/dist/controller/model/endpoint.d.ts +11 -10
  75. package/dist/controller/model/endpoint.d.ts.map +1 -1
  76. package/dist/controller/model/endpoint.js +9 -9
  77. package/dist/controller/model/endpoint.js.map +1 -1
  78. package/dist/controller/model/group.d.ts +1 -1
  79. package/dist/controller/model/group.d.ts.map +1 -1
  80. package/dist/controller/model/group.js +4 -4
  81. package/dist/controller/model/group.js.map +1 -1
  82. package/dist/controller/touchlink.js +4 -4
  83. package/dist/controller/touchlink.js.map +1 -1
  84. package/dist/index.d.ts +5 -6
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +8 -10
  87. package/dist/index.js.map +1 -1
  88. package/dist/zspec/consts.d.ts +59 -0
  89. package/dist/zspec/consts.d.ts.map +1 -1
  90. package/dist/zspec/consts.js +63 -0
  91. package/dist/zspec/consts.js.map +1 -1
  92. package/dist/zspec/enums.d.ts +5 -3
  93. package/dist/zspec/enums.d.ts.map +1 -1
  94. package/dist/zspec/enums.js +9 -3
  95. package/dist/zspec/enums.js.map +1 -1
  96. package/dist/zspec/index.d.ts +3 -2
  97. package/dist/zspec/index.d.ts.map +1 -1
  98. package/dist/zspec/index.js +40 -3
  99. package/dist/zspec/index.js.map +1 -1
  100. package/dist/zspec/tstypes.d.ts +19 -0
  101. package/dist/zspec/tstypes.d.ts.map +1 -0
  102. package/dist/{zcl/definition/frameControl.js → zspec/tstypes.js} +1 -1
  103. package/dist/zspec/tstypes.js.map +1 -0
  104. package/dist/zspec/utils.d.ts +14 -0
  105. package/dist/zspec/utils.d.ts.map +1 -0
  106. package/dist/zspec/utils.js +29 -0
  107. package/dist/zspec/utils.js.map +1 -0
  108. package/dist/{zcl → zspec/zcl}/buffaloZcl.d.ts +5 -5
  109. package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -0
  110. package/dist/{zcl → zspec/zcl}/buffaloZcl.js +213 -189
  111. package/dist/zspec/zcl/buffaloZcl.js.map +1 -0
  112. package/dist/zspec/zcl/definition/cluster.d.ts +3 -0
  113. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -0
  114. package/dist/zspec/zcl/definition/cluster.js +5500 -0
  115. package/dist/zspec/zcl/definition/cluster.js.map +1 -0
  116. package/dist/zspec/zcl/definition/consts.d.ts +9 -0
  117. package/dist/zspec/zcl/definition/consts.d.ts.map +1 -0
  118. package/dist/zspec/zcl/definition/consts.js +27 -0
  119. package/dist/zspec/zcl/definition/consts.js.map +1 -0
  120. package/dist/{zcl/definition/dataType.d.ts → zspec/zcl/definition/enums.d.ts} +57 -3
  121. package/dist/zspec/zcl/definition/enums.d.ts.map +1 -0
  122. package/dist/{zcl/definition/dataType.js → zspec/zcl/definition/enums.js} +64 -3
  123. package/dist/zspec/zcl/definition/enums.js.map +1 -0
  124. package/dist/{zcl → zspec/zcl}/definition/foundation.d.ts +2 -2
  125. package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -0
  126. package/dist/zspec/zcl/definition/foundation.js +241 -0
  127. package/dist/zspec/zcl/definition/foundation.js.map +1 -0
  128. package/dist/{zcl → zspec/zcl}/definition/manufacturerCode.d.ts +1 -2
  129. package/dist/zspec/zcl/definition/manufacturerCode.d.ts.map +1 -0
  130. package/dist/{zcl → zspec/zcl}/definition/manufacturerCode.js +2 -2
  131. package/dist/zspec/zcl/definition/manufacturerCode.js.map +1 -0
  132. package/dist/{zcl → zspec/zcl}/definition/status.d.ts +1 -2
  133. package/dist/zspec/zcl/definition/status.d.ts.map +1 -0
  134. package/dist/{zcl → zspec/zcl}/definition/status.js +2 -2
  135. package/dist/zspec/zcl/definition/status.js.map +1 -0
  136. package/dist/zspec/zcl/definition/tstype.d.ts +114 -0
  137. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -0
  138. package/dist/zspec/zcl/definition/tstype.js.map +1 -0
  139. package/dist/zspec/zcl/index.d.ts +11 -0
  140. package/dist/zspec/zcl/index.d.ts.map +1 -0
  141. package/dist/zspec/zcl/index.js +47 -0
  142. package/dist/zspec/zcl/index.js.map +1 -0
  143. package/dist/zspec/zcl/utils.d.ts +7 -0
  144. package/dist/zspec/zcl/utils.d.ts.map +1 -0
  145. package/dist/zspec/zcl/utils.js +234 -0
  146. package/dist/zspec/zcl/utils.js.map +1 -0
  147. package/dist/{zcl → zspec/zcl}/zclFrame.d.ts +10 -12
  148. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -0
  149. package/dist/{zcl → zspec/zcl}/zclFrame.js +69 -59
  150. package/dist/zspec/zcl/zclFrame.js.map +1 -0
  151. package/dist/{zcl → zspec/zcl}/zclHeader.d.ts +3 -4
  152. package/dist/zspec/zcl/zclHeader.d.ts.map +1 -0
  153. package/dist/{zcl → zspec/zcl}/zclHeader.js +33 -20
  154. package/dist/zspec/zcl/zclHeader.js.map +1 -0
  155. package/dist/zspec/zcl/zclStatusError.d.ts +6 -0
  156. package/dist/zspec/zcl/zclStatusError.d.ts.map +1 -0
  157. package/dist/zspec/zcl/zclStatusError.js +13 -0
  158. package/dist/zspec/zcl/zclStatusError.js.map +1 -0
  159. package/dist/zspec/zdo/buffaloZdo.d.ts +438 -0
  160. package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -0
  161. package/dist/zspec/zdo/buffaloZdo.js +1892 -0
  162. package/dist/zspec/zdo/buffaloZdo.js.map +1 -0
  163. package/dist/zspec/zdo/definition/clusters.d.ts +624 -0
  164. package/dist/zspec/zdo/definition/clusters.d.ts.map +1 -0
  165. package/dist/zspec/zdo/definition/clusters.js +687 -0
  166. package/dist/zspec/zdo/definition/clusters.js.map +1 -0
  167. package/dist/zspec/zdo/definition/consts.d.ts +13 -0
  168. package/dist/zspec/zdo/definition/consts.d.ts.map +1 -0
  169. package/dist/zspec/zdo/definition/consts.js +16 -0
  170. package/dist/zspec/zdo/definition/consts.js.map +1 -0
  171. package/dist/zspec/zdo/definition/enums.d.ts +75 -0
  172. package/dist/zspec/zdo/definition/enums.d.ts.map +1 -0
  173. package/dist/zspec/zdo/definition/enums.js +97 -0
  174. package/dist/zspec/zdo/definition/enums.js.map +1 -0
  175. package/dist/zspec/zdo/definition/status.d.ts +99 -0
  176. package/dist/zspec/zdo/definition/status.d.ts.map +1 -0
  177. package/dist/zspec/zdo/definition/status.js +109 -0
  178. package/dist/zspec/zdo/definition/status.js.map +1 -0
  179. package/dist/zspec/zdo/definition/tstypes.d.ts +787 -0
  180. package/dist/zspec/zdo/definition/tstypes.d.ts.map +1 -0
  181. package/dist/zspec/zdo/definition/tstypes.js +3 -0
  182. package/dist/zspec/zdo/definition/tstypes.js.map +1 -0
  183. package/dist/zspec/zdo/index.d.ts +7 -0
  184. package/dist/zspec/zdo/index.d.ts.map +1 -0
  185. package/dist/zspec/zdo/index.js +39 -0
  186. package/dist/zspec/zdo/index.js.map +1 -0
  187. package/dist/zspec/zdo/utils.d.ts +25 -0
  188. package/dist/zspec/zdo/utils.d.ts.map +1 -0
  189. package/dist/zspec/zdo/utils.js +75 -0
  190. package/dist/zspec/zdo/utils.js.map +1 -0
  191. package/dist/zspec/zdo/zdoStatusError.d.ts +6 -0
  192. package/dist/zspec/zdo/zdoStatusError.d.ts.map +1 -0
  193. package/dist/zspec/zdo/zdoStatusError.js +13 -0
  194. package/dist/zspec/zdo/zdoStatusError.js.map +1 -0
  195. package/package.json +4 -4
  196. package/dist/zcl/buffaloZcl.d.ts.map +0 -1
  197. package/dist/zcl/buffaloZcl.js.map +0 -1
  198. package/dist/zcl/definition/buffaloZclDataType.d.ts +0 -18
  199. package/dist/zcl/definition/buffaloZclDataType.d.ts.map +0 -1
  200. package/dist/zcl/definition/buffaloZclDataType.js +0 -21
  201. package/dist/zcl/definition/buffaloZclDataType.js.map +0 -1
  202. package/dist/zcl/definition/cluster.d.ts +0 -4
  203. package/dist/zcl/definition/cluster.d.ts.map +0 -1
  204. package/dist/zcl/definition/cluster.js +0 -5504
  205. package/dist/zcl/definition/cluster.js.map +0 -1
  206. package/dist/zcl/definition/dataType.d.ts.map +0 -1
  207. package/dist/zcl/definition/dataType.js.map +0 -1
  208. package/dist/zcl/definition/direction.d.ts +0 -6
  209. package/dist/zcl/definition/direction.d.ts.map +0 -1
  210. package/dist/zcl/definition/direction.js +0 -9
  211. package/dist/zcl/definition/direction.js.map +0 -1
  212. package/dist/zcl/definition/endpointDeviceType.d.ts +0 -5
  213. package/dist/zcl/definition/endpointDeviceType.d.ts.map +0 -1
  214. package/dist/zcl/definition/endpointDeviceType.js +0 -16
  215. package/dist/zcl/definition/endpointDeviceType.js.map +0 -1
  216. package/dist/zcl/definition/foundation.d.ts.map +0 -1
  217. package/dist/zcl/definition/foundation.js +0 -247
  218. package/dist/zcl/definition/foundation.js.map +0 -1
  219. package/dist/zcl/definition/frameControl.d.ts +0 -11
  220. package/dist/zcl/definition/frameControl.d.ts.map +0 -1
  221. package/dist/zcl/definition/frameControl.js.map +0 -1
  222. package/dist/zcl/definition/frameType.d.ts +0 -6
  223. package/dist/zcl/definition/frameType.d.ts.map +0 -1
  224. package/dist/zcl/definition/frameType.js +0 -9
  225. package/dist/zcl/definition/frameType.js.map +0 -1
  226. package/dist/zcl/definition/index.d.ts +0 -14
  227. package/dist/zcl/definition/index.d.ts.map +0 -1
  228. package/dist/zcl/definition/index.js +0 -52
  229. package/dist/zcl/definition/index.js.map +0 -1
  230. package/dist/zcl/definition/manufacturerCode.d.ts.map +0 -1
  231. package/dist/zcl/definition/manufacturerCode.js.map +0 -1
  232. package/dist/zcl/definition/powerSource.d.ts +0 -5
  233. package/dist/zcl/definition/powerSource.d.ts.map +0 -1
  234. package/dist/zcl/definition/powerSource.js +0 -13
  235. package/dist/zcl/definition/powerSource.js.map +0 -1
  236. package/dist/zcl/definition/status.d.ts.map +0 -1
  237. package/dist/zcl/definition/status.js.map +0 -1
  238. package/dist/zcl/definition/tstype.d.ts +0 -35
  239. package/dist/zcl/definition/tstype.d.ts.map +0 -1
  240. package/dist/zcl/definition/tstype.js.map +0 -1
  241. package/dist/zcl/index.d.ts +0 -17
  242. package/dist/zcl/index.d.ts.map +0 -1
  243. package/dist/zcl/index.js +0 -58
  244. package/dist/zcl/index.js.map +0 -1
  245. package/dist/zcl/tstype.d.ts +0 -75
  246. package/dist/zcl/tstype.d.ts.map +0 -1
  247. package/dist/zcl/tstype.js +0 -20
  248. package/dist/zcl/tstype.js.map +0 -1
  249. package/dist/zcl/utils.d.ts +0 -10
  250. package/dist/zcl/utils.d.ts.map +0 -1
  251. package/dist/zcl/utils.js +0 -179
  252. package/dist/zcl/utils.js.map +0 -1
  253. package/dist/zcl/zclFrame.d.ts.map +0 -1
  254. package/dist/zcl/zclFrame.js.map +0 -1
  255. package/dist/zcl/zclHeader.d.ts.map +0 -1
  256. package/dist/zcl/zclHeader.js.map +0 -1
  257. package/dist/zcl/zclStatusError.d.ts +0 -6
  258. package/dist/zcl/zclStatusError.d.ts.map +0 -1
  259. package/dist/zcl/zclStatusError.js +0 -15
  260. package/dist/zcl/zclStatusError.js.map +0 -1
  261. /package/dist/{zcl → zspec/zcl}/definition/tstype.js +0 -0
@@ -23,19 +23,19 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- const buffalo_1 = require("../buffalo");
27
- const utils_1 = require("../utils");
28
- const logger_1 = require("../utils/logger");
29
- const definition_1 = require("./definition");
30
- const tstype_1 = require("./tstype");
26
+ exports.BuffaloZcl = void 0;
27
+ const enums_1 = require("./definition/enums");
28
+ const buffalo_1 = require("../../buffalo");
31
29
  const Utils = __importStar(require("./utils"));
32
- const NS = 'zh:controller:buffalozcl';
30
+ const utils_1 = require("../../utils");
31
+ const logger_1 = require("../../utils/logger");
32
+ const NS = 'zh:zcl:buffalo';
33
33
  const SEC_KEY_LENGTH = 16;
34
- const extensionFieldSetsDateTypeLookup = {
35
- 6: [definition_1.DataType.UINT8],
36
- 8: [definition_1.DataType.UINT8],
37
- 258: [definition_1.DataType.UINT8, definition_1.DataType.UINT8],
38
- 768: [definition_1.DataType.UINT16, definition_1.DataType.UINT16, definition_1.DataType.UINT16, definition_1.DataType.UINT8, definition_1.DataType.UINT8, definition_1.DataType.UINT8, definition_1.DataType.UINT16, definition_1.DataType.UINT16],
34
+ const EXTENSION_FIELD_SETS_DATA_TYPE = {
35
+ 6: [enums_1.DataType.UINT8],
36
+ 8: [enums_1.DataType.UINT8],
37
+ 258: [enums_1.DataType.UINT8, enums_1.DataType.UINT8],
38
+ 768: [enums_1.DataType.UINT16, enums_1.DataType.UINT16, enums_1.DataType.UINT16, enums_1.DataType.UINT8, enums_1.DataType.UINT8, enums_1.DataType.UINT8, enums_1.DataType.UINT16, enums_1.DataType.UINT16],
39
39
  };
40
40
  class BuffaloZcl extends buffalo_1.Buffalo {
41
41
  // TODO: remove read/write int "SB" versions in favor of plain numbers, implemented in buffalo.ts
@@ -58,6 +58,7 @@ class BuffaloZcl extends buffalo_1.Buffalo {
58
58
  return [msb, lsb];
59
59
  }
60
60
  writeUInt56SB(value) {
61
+ // XXX: [uint32, uint32] param not following read return pattern [uint32, uint16, uint8]
61
62
  const temp = Buffer.alloc(8);
62
63
  temp.writeUInt32LE(value[1], 0);
63
64
  temp.writeUInt32LE(value[0], 4);
@@ -74,7 +75,7 @@ class BuffaloZcl extends buffalo_1.Buffalo {
74
75
  return this.readIeeeAddr();
75
76
  }
76
77
  writeUInt64SB(value) {
77
- // XXX: not following pattern, should pass as number[]
78
+ // XXX: not following pattern, should pass as number[uint32, uint32]
78
79
  const msb = parseInt(value.slice(2, 10), 16);
79
80
  const lsb = parseInt(value.slice(10), 16);
80
81
  this.writeUInt32(lsb);
@@ -126,31 +127,13 @@ class BuffaloZcl extends buffalo_1.Buffalo {
126
127
  this.writeUtf8String(value);
127
128
  }
128
129
  else {
130
+ // XXX: value.length not written?
129
131
  this.writeBuffer(value, value.length);
130
132
  }
131
133
  }
132
- readCharStr(options) {
134
+ readCharStr() {
133
135
  const length = this.readUInt8();
134
- // TODO: this workaround should be moved to a custom type
135
- if (options.attrId === 65281) {
136
- const value = {};
137
- if (length === 0xFF) {
138
- return value;
139
- }
140
- // Xiaomi struct parsing
141
- for (let i = 0; i < length; i++) {
142
- const index = this.readUInt8();
143
- const dataType = this.readUInt8();
144
- value[index] = this.read(dataType, {});
145
- if (this.position === this.buffer.length) {
146
- break;
147
- }
148
- }
149
- return value;
150
- }
151
- else {
152
- return (length < 0xFF) ? this.readUtf8String(length) : '';
153
- }
136
+ return (length < 0xFF) ? this.readUtf8String(length) : '';
154
137
  }
155
138
  writeLongOctetStr(value) {
156
139
  // TODO: this does not allow "non-value" 0xFF
@@ -171,7 +154,7 @@ class BuffaloZcl extends buffalo_1.Buffalo {
171
154
  return (length < 0xFFFF) ? this.readUtf8String(length) : ''; // non-value
172
155
  }
173
156
  writeArray(value) {
174
- const elTypeNumeric = typeof value.elementType === 'number' ? value.elementType : definition_1.DataType[value.elementType];
157
+ const elTypeNumeric = typeof value.elementType === 'number' ? value.elementType : enums_1.DataType[value.elementType];
175
158
  this.writeUInt8(elTypeNumeric);
176
159
  // TODO: this does not allow writing "non-value" 0xFFFF
177
160
  this.writeUInt16(value.elements.length);
@@ -225,7 +208,12 @@ class BuffaloZcl extends buffalo_1.Buffalo {
225
208
  const minutes = this.readUInt8();
226
209
  const seconds = this.readUInt8();
227
210
  const hundredths = this.readUInt8();
228
- return { hours, minutes, seconds, hundredths };
211
+ return {
212
+ hours: hours < 0xFF ? hours : null,
213
+ minutes: minutes < 0xFF ? minutes : null,
214
+ seconds: seconds < 0xFF ? seconds : null,
215
+ hundredths: hundredths < 0xFF ? hundredths : null,
216
+ };
229
217
  }
230
218
  writeDate(value) {
231
219
  this.writeUInt8(value.year != null ? (value.year - 1900) : 0xFF);
@@ -234,11 +222,16 @@ class BuffaloZcl extends buffalo_1.Buffalo {
234
222
  this.writeUInt8(value.dayOfWeek ?? 0xFF);
235
223
  }
236
224
  readDate() {
237
- const year = this.readUInt8() + 1900;
225
+ const year = this.readUInt8();
238
226
  const month = this.readUInt8();
239
227
  const dayOfMonth = this.readUInt8();
240
228
  const dayOfWeek = this.readUInt8();
241
- return { year, month, dayOfMonth, dayOfWeek };
229
+ return {
230
+ year: year < 0xFF ? year + 1900 : null,
231
+ month: month < 0xFF ? month : null,
232
+ dayOfMonth: dayOfMonth < 0xFF ? dayOfMonth : null,
233
+ dayOfWeek: dayOfWeek < 0xFF ? dayOfWeek : null,
234
+ };
242
235
  }
243
236
  //--- BuffaloZclDataType
244
237
  writeListZoneInfo(values) {
@@ -261,13 +254,16 @@ class BuffaloZcl extends buffalo_1.Buffalo {
261
254
  for (const value of values) {
262
255
  this.writeUInt16(value.clstId);
263
256
  this.writeUInt8(value.len);
264
- value.extField.forEach((entry, index) => {
265
- this.write(extensionFieldSetsDateTypeLookup[value.clstId][index], entry, {});
266
- });
257
+ let index = 0;
258
+ for (const entry of value.extField) {
259
+ this.write(EXTENSION_FIELD_SETS_DATA_TYPE[value.clstId][index], entry, {});
260
+ index++;
261
+ }
267
262
  }
268
263
  }
269
264
  readExtensionFieldSets() {
270
265
  const value = [];
266
+ // XXX: doesn't work if buffer has more unrelated fields after this one
271
267
  while (this.isMore()) {
272
268
  const clstId = this.readUInt16();
273
269
  const len = this.readUInt8();
@@ -275,7 +271,7 @@ class BuffaloZcl extends buffalo_1.Buffalo {
275
271
  let index = 0;
276
272
  const extField = [];
277
273
  while (this.getPosition() < end) {
278
- extField.push(this.read(extensionFieldSetsDateTypeLookup[clstId][index], {}));
274
+ extField.push(this.read(EXTENSION_FIELD_SETS_DATA_TYPE[clstId][index], {}));
279
275
  index++;
280
276
  }
281
277
  value.push({ extField, clstId, len });
@@ -440,13 +436,14 @@ class BuffaloZcl extends buffalo_1.Buffalo {
440
436
  attribute = cluster.getAttribute(attributeID).name;
441
437
  }
442
438
  catch {
439
+ // this is spammy because of the many manufacturer-specific attributes not currently used
443
440
  logger_1.logger.debug("Unknown attribute " + attributeID + " in cluster " + cluster.name, NS);
444
441
  }
445
442
  frame.attributes[attribute] = this.read(type, options);
446
443
  }
447
444
  return frame;
448
445
  }
449
- else if (this.position != this.buffer.length) {
446
+ else if (this.isMore()) {
450
447
  return { raw: this.buffer.subarray(this.position) };
451
448
  }
452
449
  else {
@@ -456,7 +453,7 @@ class BuffaloZcl extends buffalo_1.Buffalo {
456
453
  writeStructuredSelector(value) {
457
454
  if (value != null) {
458
455
  const indexes = value.indexes || [];
459
- const indicatorType = value.indicatorType || tstype_1.StructuredIndicatorType.Whole;
456
+ const indicatorType = value.indicatorType || enums_1.StructuredIndicatorType.Whole;
460
457
  const indicator = indexes.length + indicatorType;
461
458
  this.writeUInt8(indicator);
462
459
  for (const index of indexes) {
@@ -469,9 +466,9 @@ class BuffaloZcl extends buffalo_1.Buffalo {
469
466
  const indicator = this.readUInt8();
470
467
  if (indicator === 0) {
471
468
  // no indexes, whole attribute value is to be read
472
- return { indicatorType: tstype_1.StructuredIndicatorType.Whole };
469
+ return { indicatorType: enums_1.StructuredIndicatorType.Whole };
473
470
  }
474
- else {
471
+ else if (indicator < enums_1.StructuredIndicatorType.WriteAdd) {
475
472
  const indexes = [];
476
473
  for (let i = 0; i < indicator; i++) {
477
474
  const index = this.readUInt16();
@@ -479,12 +476,16 @@ class BuffaloZcl extends buffalo_1.Buffalo {
479
476
  }
480
477
  return { indexes };
481
478
  }
479
+ else {
480
+ throw new Error(`Read structured selector was outside [0-15] range.`);
481
+ }
482
482
  }
483
483
  writeListTuyaDataPointValues(dpValues) {
484
484
  for (const dpValue of dpValues) {
485
485
  this.writeUInt8(dpValue.dp);
486
486
  this.writeUInt8(dpValue.datatype);
487
487
  const dataLen = dpValue.data.length;
488
+ // UInt16BE
488
489
  this.writeUInt8((dataLen >> 8) & 0xFF);
489
490
  this.writeUInt8(dataLen & 0xFF);
490
491
  this.writeBuffer(dpValue.data, dataLen);
@@ -492,6 +493,7 @@ class BuffaloZcl extends buffalo_1.Buffalo {
492
493
  }
493
494
  readListTuyaDataPointValues() {
494
495
  const value = [];
496
+ // XXX: doesn't work if buffer has more unrelated fields after this one
495
497
  while (this.isMore()) {
496
498
  try {
497
499
  const dp = this.readUInt8();
@@ -518,10 +520,9 @@ class BuffaloZcl extends buffalo_1.Buffalo {
518
520
  const value = [];
519
521
  const len = this.readUInt8();
520
522
  for (let i = 0; i < len; i++) {
521
- value.push({
522
- groupId: this.readUInt16(),
523
- zoneNum: this.readUInt8(),
524
- });
523
+ const groupId = this.readUInt16();
524
+ const zoneNum = this.readUInt8();
525
+ value.push({ groupId, zoneNum });
525
526
  }
526
527
  return value;
527
528
  }
@@ -534,82 +535,101 @@ class BuffaloZcl extends buffalo_1.Buffalo {
534
535
  this.position += 3;
535
536
  return value;
536
537
  }
538
+ // private writeMiStruct(value: Record<number, number | number[]>): {
539
+ // XXX: read only?
540
+ // }
541
+ readMiStruct() {
542
+ const length = this.readUInt8();
543
+ const value = {};
544
+ if (length === 0xFF) {
545
+ return value;
546
+ }
547
+ for (let i = 0; i < length; i++) {
548
+ const index = this.readUInt8();
549
+ const dataType = this.readUInt8();
550
+ value[index] = this.read(dataType, {});
551
+ if (this.position === this.buffer.length) {
552
+ break;
553
+ }
554
+ }
555
+ return value;
556
+ }
537
557
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
538
558
  write(type, value, options) {
539
559
  switch (type) {
540
- case definition_1.DataType.NO_DATA:
541
- case definition_1.DataType.UNKNOWN: {
560
+ case enums_1.DataType.NO_DATA:
561
+ case enums_1.DataType.UNKNOWN: {
542
562
  return; // nothing to write
543
563
  }
544
- case definition_1.DataType.DATA8:
545
- case definition_1.DataType.BOOLEAN:
546
- case definition_1.DataType.BITMAP8:
547
- case definition_1.DataType.UINT8:
548
- case definition_1.DataType.ENUM8: {
564
+ case enums_1.DataType.DATA8:
565
+ case enums_1.DataType.BOOLEAN:
566
+ case enums_1.DataType.BITMAP8:
567
+ case enums_1.DataType.UINT8:
568
+ case enums_1.DataType.ENUM8: {
549
569
  return this.writeUInt8(value);
550
570
  }
551
- case definition_1.DataType.DATA16:
552
- case definition_1.DataType.BITMAP16:
553
- case definition_1.DataType.UINT16:
554
- case definition_1.DataType.ENUM16:
555
- case definition_1.DataType.CLUSTER_ID:
556
- case definition_1.DataType.ATTR_ID: {
571
+ case enums_1.DataType.DATA16:
572
+ case enums_1.DataType.BITMAP16:
573
+ case enums_1.DataType.UINT16:
574
+ case enums_1.DataType.ENUM16:
575
+ case enums_1.DataType.CLUSTER_ID:
576
+ case enums_1.DataType.ATTR_ID: {
557
577
  return this.writeUInt16(value);
558
578
  }
559
- case definition_1.DataType.DATA24:
560
- case definition_1.DataType.BITMAP24:
561
- case definition_1.DataType.UINT24: {
579
+ case enums_1.DataType.DATA24:
580
+ case enums_1.DataType.BITMAP24:
581
+ case enums_1.DataType.UINT24: {
562
582
  return this.writeUInt24(value);
563
583
  }
564
- case definition_1.DataType.DATA32:
565
- case definition_1.DataType.BITMAP32:
566
- case definition_1.DataType.UINT32:
567
- case definition_1.DataType.UTC:
568
- case definition_1.DataType.BAC_OID: {
584
+ case enums_1.DataType.DATA32:
585
+ case enums_1.DataType.BITMAP32:
586
+ case enums_1.DataType.UINT32:
587
+ case enums_1.DataType.UTC:
588
+ case enums_1.DataType.BAC_OID: {
569
589
  return this.writeUInt32(value);
570
590
  }
571
- case definition_1.DataType.DATA40:
572
- case definition_1.DataType.BITMAP40:
573
- case definition_1.DataType.UINT40: {
591
+ case enums_1.DataType.DATA40:
592
+ case enums_1.DataType.BITMAP40:
593
+ case enums_1.DataType.UINT40: {
574
594
  return this.writeUInt40SB(value);
575
595
  }
576
- case definition_1.DataType.DATA48:
577
- case definition_1.DataType.BITMAP48:
578
- case definition_1.DataType.UINT48: {
596
+ case enums_1.DataType.DATA48:
597
+ case enums_1.DataType.BITMAP48:
598
+ case enums_1.DataType.UINT48: {
579
599
  return this.writeUInt48SB(value);
580
600
  }
581
- case definition_1.DataType.DATA56:
582
- case definition_1.DataType.BITMAP56:
583
- case definition_1.DataType.UINT56: {
601
+ case enums_1.DataType.DATA56:
602
+ case enums_1.DataType.BITMAP56:
603
+ case enums_1.DataType.UINT56: {
584
604
  return this.writeUInt56SB(value);
585
605
  }
586
- case definition_1.DataType.DATA64:
587
- case definition_1.DataType.BITMAP64:
588
- case definition_1.DataType.UINT64: {
606
+ case enums_1.DataType.DATA64:
607
+ case enums_1.DataType.BITMAP64:
608
+ case enums_1.DataType.UINT64: {
589
609
  return this.writeUInt64SB(value);
590
610
  }
591
- case definition_1.DataType.INT8: {
611
+ case enums_1.DataType.INT8: {
592
612
  return this.writeInt8(value);
593
613
  }
594
- case definition_1.DataType.INT16: {
614
+ case enums_1.DataType.INT16: {
595
615
  return this.writeInt16(value);
596
616
  }
597
- case definition_1.DataType.INT24: {
617
+ case enums_1.DataType.INT24: {
598
618
  return this.writeInt24(value);
599
619
  }
600
- case definition_1.DataType.INT32: {
620
+ case enums_1.DataType.INT32: {
601
621
  return this.writeInt32(value);
602
622
  }
603
- case definition_1.DataType.INT40: {
623
+ case enums_1.DataType.INT40: {
604
624
  return this.writeInt40SB(value);
605
625
  }
606
- case definition_1.DataType.INT48: {
626
+ case enums_1.DataType.INT48: {
607
627
  return this.writeInt48(value);
608
628
  }
609
- case definition_1.DataType.INT56: {
629
+ case enums_1.DataType.INT56: {
610
630
  return this.writeInt56SB(value);
611
631
  }
612
- case definition_1.DataType.INT64: {
632
+ case enums_1.DataType.INT64: {
613
633
  return this.writeInt64SB(value);
614
634
  }
615
635
  // case DataType.SEMI_PREC: {
@@ -617,45 +637,45 @@ class BuffaloZcl extends buffalo_1.Buffalo {
617
637
  // // not currently used
618
638
  // return this.writeSemiFloatLE(value);
619
639
  // }
620
- case definition_1.DataType.SINGLE_PREC: {
640
+ case enums_1.DataType.SINGLE_PREC: {
621
641
  return this.writeFloatLE(value);
622
642
  }
623
- case definition_1.DataType.DOUBLE_PREC: {
643
+ case enums_1.DataType.DOUBLE_PREC: {
624
644
  return this.writeDoubleLE(value);
625
645
  }
626
- case definition_1.DataType.OCTET_STR: {
646
+ case enums_1.DataType.OCTET_STR: {
627
647
  return this.writeOctetStr(value);
628
648
  }
629
- case definition_1.DataType.CHAR_STR: {
649
+ case enums_1.DataType.CHAR_STR: {
630
650
  return this.writeCharStr(value);
631
651
  }
632
- case definition_1.DataType.LONG_OCTET_STR: {
652
+ case enums_1.DataType.LONG_OCTET_STR: {
633
653
  return this.writeLongOctetStr(value);
634
654
  }
635
- case definition_1.DataType.LONG_CHAR_STR: {
655
+ case enums_1.DataType.LONG_CHAR_STR: {
636
656
  return this.writeLongCharStr(value);
637
657
  }
638
- case definition_1.DataType.ARRAY:
639
- case definition_1.DataType.SET:
640
- case definition_1.DataType.BAG: {
658
+ case enums_1.DataType.ARRAY:
659
+ case enums_1.DataType.SET:
660
+ case enums_1.DataType.BAG: {
641
661
  return this.writeArray(value);
642
662
  }
643
- case definition_1.DataType.STRUCT: {
663
+ case enums_1.DataType.STRUCT: {
644
664
  return this.writeStruct(value);
645
665
  }
646
- case definition_1.DataType.TOD: {
666
+ case enums_1.DataType.TOD: {
647
667
  return this.writeToD(value);
648
668
  }
649
- case definition_1.DataType.DATE: {
669
+ case enums_1.DataType.DATE: {
650
670
  return this.writeDate(value);
651
671
  }
652
- case definition_1.DataType.IEEE_ADDR: {
672
+ case enums_1.DataType.IEEE_ADDR: {
653
673
  return this.writeIeeeAddr(value);
654
674
  }
655
- case definition_1.DataType.SEC_KEY: {
675
+ case enums_1.DataType.SEC_KEY: {
656
676
  return this.writeBuffer(value, SEC_KEY_LENGTH);
657
677
  }
658
- case definition_1.BuffaloZclDataType.USE_DATA_TYPE: {
678
+ case enums_1.BuffaloZclDataType.USE_DATA_TYPE: {
659
679
  if (options.dataType == null) {
660
680
  if (Buffer.isBuffer(value) || (0, utils_1.IsNumberArray)(value)) {
661
681
  return this.writeBuffer(value, value.length);
@@ -666,43 +686,44 @@ class BuffaloZcl extends buffalo_1.Buffalo {
666
686
  }
667
687
  return this.write(options.dataType, value, options);
668
688
  }
669
- case definition_1.BuffaloZclDataType.LIST_UINT8: {
689
+ case enums_1.BuffaloZclDataType.LIST_UINT8: {
670
690
  return this.writeListUInt8(value);
671
691
  }
672
- case definition_1.BuffaloZclDataType.LIST_UINT16: {
692
+ case enums_1.BuffaloZclDataType.LIST_UINT16: {
673
693
  return this.writeListUInt16(value);
674
694
  }
675
- case definition_1.BuffaloZclDataType.LIST_UINT24: {
695
+ case enums_1.BuffaloZclDataType.LIST_UINT24: {
676
696
  return this.writeListUInt24(value);
677
697
  }
678
- case definition_1.BuffaloZclDataType.LIST_UINT32: {
698
+ case enums_1.BuffaloZclDataType.LIST_UINT32: {
679
699
  return this.writeListUInt32(value);
680
700
  }
681
- case definition_1.BuffaloZclDataType.LIST_ZONEINFO: {
701
+ case enums_1.BuffaloZclDataType.LIST_ZONEINFO: {
682
702
  return this.writeListZoneInfo(value);
683
703
  }
684
- case definition_1.BuffaloZclDataType.EXTENSION_FIELD_SETS: {
704
+ case enums_1.BuffaloZclDataType.EXTENSION_FIELD_SETS: {
685
705
  return this.writeExtensionFieldSets(value);
686
706
  }
687
- case definition_1.BuffaloZclDataType.LIST_THERMO_TRANSITIONS: {
707
+ case enums_1.BuffaloZclDataType.LIST_THERMO_TRANSITIONS: {
688
708
  return this.writeListThermoTransitions(value);
689
709
  }
690
- case definition_1.BuffaloZclDataType.BUFFER: {
710
+ case enums_1.BuffaloZclDataType.BUFFER: {
711
+ // XXX: inconsistent with read that allows partial with options.length, here always "whole"
691
712
  return this.writeBuffer(value, value.length);
692
713
  }
693
- case definition_1.BuffaloZclDataType.GDP_FRAME: {
714
+ case enums_1.BuffaloZclDataType.GDP_FRAME: {
694
715
  return this.writeGdpFrame(value);
695
716
  }
696
- case definition_1.BuffaloZclDataType.STRUCTURED_SELECTOR: {
717
+ case enums_1.BuffaloZclDataType.STRUCTURED_SELECTOR: {
697
718
  return this.writeStructuredSelector(value);
698
719
  }
699
- case definition_1.BuffaloZclDataType.LIST_TUYA_DATAPOINT_VALUES: {
720
+ case enums_1.BuffaloZclDataType.LIST_TUYA_DATAPOINT_VALUES: {
700
721
  return this.writeListTuyaDataPointValues(value);
701
722
  }
702
- case definition_1.BuffaloZclDataType.LIST_MIBOXER_ZONES: {
723
+ case enums_1.BuffaloZclDataType.LIST_MIBOXER_ZONES: {
703
724
  return this.writeListMiboxerZones(value);
704
725
  }
705
- case definition_1.BuffaloZclDataType.BIG_ENDIAN_UINT24: {
726
+ case enums_1.BuffaloZclDataType.BIG_ENDIAN_UINT24: {
706
727
  return this.writeBigEndianUInt24(value);
707
728
  }
708
729
  default: {
@@ -718,79 +739,79 @@ class BuffaloZcl extends buffalo_1.Buffalo {
718
739
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
719
740
  read(type, options) {
720
741
  switch (type) {
721
- case definition_1.DataType.NO_DATA:
722
- case definition_1.DataType.UNKNOWN: {
742
+ case enums_1.DataType.NO_DATA:
743
+ case enums_1.DataType.UNKNOWN: {
723
744
  return; // nothing to write
724
745
  }
725
- case definition_1.DataType.DATA8:
726
- case definition_1.DataType.BOOLEAN:
727
- case definition_1.DataType.BITMAP8:
728
- case definition_1.DataType.UINT8:
729
- case definition_1.DataType.ENUM8: {
746
+ case enums_1.DataType.DATA8:
747
+ case enums_1.DataType.BOOLEAN:
748
+ case enums_1.DataType.BITMAP8:
749
+ case enums_1.DataType.UINT8:
750
+ case enums_1.DataType.ENUM8: {
730
751
  return this.readUInt8();
731
752
  }
732
- case definition_1.DataType.DATA16:
733
- case definition_1.DataType.BITMAP16:
734
- case definition_1.DataType.UINT16:
735
- case definition_1.DataType.ENUM16:
736
- case definition_1.DataType.CLUSTER_ID:
737
- case definition_1.DataType.ATTR_ID: {
753
+ case enums_1.DataType.DATA16:
754
+ case enums_1.DataType.BITMAP16:
755
+ case enums_1.DataType.UINT16:
756
+ case enums_1.DataType.ENUM16:
757
+ case enums_1.DataType.CLUSTER_ID:
758
+ case enums_1.DataType.ATTR_ID: {
738
759
  return this.readUInt16();
739
760
  }
740
- case definition_1.DataType.DATA24:
741
- case definition_1.DataType.BITMAP24:
742
- case definition_1.DataType.UINT24: {
761
+ case enums_1.DataType.DATA24:
762
+ case enums_1.DataType.BITMAP24:
763
+ case enums_1.DataType.UINT24: {
743
764
  return this.readUInt24();
744
765
  }
745
- case definition_1.DataType.DATA32:
746
- case definition_1.DataType.BITMAP32:
747
- case definition_1.DataType.UINT32:
748
- case definition_1.DataType.UTC:
749
- case definition_1.DataType.BAC_OID: {
766
+ case enums_1.DataType.DATA32:
767
+ case enums_1.DataType.BITMAP32:
768
+ case enums_1.DataType.UINT32:
769
+ case enums_1.DataType.UTC:
770
+ case enums_1.DataType.BAC_OID: {
750
771
  return this.readUInt32();
751
772
  }
752
- case definition_1.DataType.DATA40:
753
- case definition_1.DataType.BITMAP40:
754
- case definition_1.DataType.UINT40: {
773
+ case enums_1.DataType.DATA40:
774
+ case enums_1.DataType.BITMAP40:
775
+ case enums_1.DataType.UINT40: {
755
776
  return this.readUInt40SB();
756
777
  }
757
- case definition_1.DataType.DATA48:
758
- case definition_1.DataType.BITMAP48:
759
- case definition_1.DataType.UINT48: {
778
+ case enums_1.DataType.DATA48:
779
+ case enums_1.DataType.BITMAP48:
780
+ case enums_1.DataType.UINT48: {
760
781
  return this.readUInt48SB();
761
782
  }
762
- case definition_1.DataType.DATA56:
763
- case definition_1.DataType.BITMAP56:
764
- case definition_1.DataType.UINT56: {
783
+ case enums_1.DataType.DATA56:
784
+ case enums_1.DataType.BITMAP56:
785
+ case enums_1.DataType.UINT56: {
765
786
  return this.readUInt56SB();
766
787
  }
767
- case definition_1.DataType.DATA64:
768
- case definition_1.DataType.BITMAP64:
769
- case definition_1.DataType.UINT64: {
788
+ case enums_1.DataType.DATA64:
789
+ case enums_1.DataType.BITMAP64:
790
+ case enums_1.DataType.UINT64: {
770
791
  return this.readUInt64SB();
771
792
  }
772
- case definition_1.DataType.INT8: {
793
+ case enums_1.DataType.INT8: {
773
794
  return this.readInt8();
774
795
  }
775
- case definition_1.DataType.INT16: {
796
+ case enums_1.DataType.INT16: {
776
797
  return this.readInt16();
777
798
  }
778
- case definition_1.DataType.INT24: {
799
+ case enums_1.DataType.INT24: {
779
800
  return this.readInt24();
780
801
  }
781
- case definition_1.DataType.INT32: {
802
+ case enums_1.DataType.INT32: {
782
803
  return this.readInt32();
783
804
  }
784
- case definition_1.DataType.INT40: {
805
+ case enums_1.DataType.INT40: {
785
806
  return this.readInt40SB();
786
807
  }
787
- case definition_1.DataType.INT48: {
808
+ case enums_1.DataType.INT48: {
788
809
  return this.readInt48();
789
810
  }
790
- case definition_1.DataType.INT56: {
811
+ case enums_1.DataType.INT56: {
791
812
  return this.readInt56SB();
792
813
  }
793
- case definition_1.DataType.INT64: {
814
+ case enums_1.DataType.INT64: {
794
815
  return this.readInt64SB();
795
816
  }
796
817
  // case DataType.SEMI_PREC: {
@@ -798,108 +819,111 @@ class BuffaloZcl extends buffalo_1.Buffalo {
798
819
  // // not currently used
799
820
  // return this.readSemiFloatLE();
800
821
  // }
801
- case definition_1.DataType.SINGLE_PREC: {
822
+ case enums_1.DataType.SINGLE_PREC: {
802
823
  return this.readFloatLE();
803
824
  }
804
- case definition_1.DataType.DOUBLE_PREC: {
825
+ case enums_1.DataType.DOUBLE_PREC: {
805
826
  return this.readDoubleLE();
806
827
  }
807
- case definition_1.DataType.OCTET_STR: {
828
+ case enums_1.DataType.OCTET_STR: {
808
829
  return this.readOctetStr();
809
830
  }
810
- case definition_1.DataType.CHAR_STR: {
811
- return this.readCharStr(options);
831
+ case enums_1.DataType.CHAR_STR: {
832
+ return this.readCharStr();
812
833
  }
813
- case definition_1.DataType.LONG_OCTET_STR: {
834
+ case enums_1.DataType.LONG_OCTET_STR: {
814
835
  return this.readLongOctetStr();
815
836
  }
816
- case definition_1.DataType.LONG_CHAR_STR: {
837
+ case enums_1.DataType.LONG_CHAR_STR: {
817
838
  return this.readLongCharStr();
818
839
  }
819
- case definition_1.DataType.ARRAY:
820
- case definition_1.DataType.SET:
821
- case definition_1.DataType.BAG: {
840
+ case enums_1.DataType.ARRAY:
841
+ case enums_1.DataType.SET:
842
+ case enums_1.DataType.BAG: {
822
843
  return this.readArray();
823
844
  }
824
- case definition_1.DataType.STRUCT: {
845
+ case enums_1.DataType.STRUCT: {
825
846
  return this.readStruct();
826
847
  }
827
- case definition_1.DataType.TOD: {
848
+ case enums_1.DataType.TOD: {
828
849
  return this.readToD();
829
850
  }
830
- case definition_1.DataType.DATE: {
851
+ case enums_1.DataType.DATE: {
831
852
  return this.readDate();
832
853
  }
833
- case definition_1.DataType.IEEE_ADDR: {
854
+ case enums_1.DataType.IEEE_ADDR: {
834
855
  return this.readIeeeAddr();
835
856
  }
836
- case definition_1.DataType.SEC_KEY: {
857
+ case enums_1.DataType.SEC_KEY: {
837
858
  return this.readBuffer(SEC_KEY_LENGTH);
838
859
  }
839
- case definition_1.BuffaloZclDataType.USE_DATA_TYPE: {
860
+ case enums_1.BuffaloZclDataType.USE_DATA_TYPE: {
840
861
  if (options.dataType == null) {
841
862
  return this.readBuffer(options.length ?? this.buffer.length);
842
863
  }
843
864
  return this.read(options.dataType, options);
844
865
  }
845
- case definition_1.BuffaloZclDataType.LIST_UINT8: {
866
+ case enums_1.BuffaloZclDataType.LIST_UINT8: {
846
867
  if (options.length == null) {
847
868
  throw new Error('Cannot read LIST_UINT8 without length option specified');
848
869
  }
849
870
  return this.readListUInt8(options.length);
850
871
  }
851
- case definition_1.BuffaloZclDataType.LIST_UINT16: {
872
+ case enums_1.BuffaloZclDataType.LIST_UINT16: {
852
873
  if (options.length == null) {
853
874
  throw new Error('Cannot read LIST_UINT16 without length option specified');
854
875
  }
855
876
  return this.readListUInt16(options.length);
856
877
  }
857
- case definition_1.BuffaloZclDataType.LIST_UINT24: {
878
+ case enums_1.BuffaloZclDataType.LIST_UINT24: {
858
879
  if (options.length == null) {
859
880
  throw new Error('Cannot read LIST_UINT24 without length option specified');
860
881
  }
861
882
  return this.readListUInt24(options.length);
862
883
  }
863
- case definition_1.BuffaloZclDataType.LIST_UINT32: {
884
+ case enums_1.BuffaloZclDataType.LIST_UINT32: {
864
885
  if (options.length == null) {
865
886
  throw new Error('Cannot read LIST_UINT32 without length option specified');
866
887
  }
867
888
  return this.readListUInt32(options.length);
868
889
  }
869
- case definition_1.BuffaloZclDataType.LIST_ZONEINFO: {
890
+ case enums_1.BuffaloZclDataType.LIST_ZONEINFO: {
870
891
  if (options.length == null) {
871
892
  throw new Error('Cannot read LIST_ZONEINFO without length option specified');
872
893
  }
873
894
  return this.readListZoneInfo(options.length);
874
895
  }
875
- case definition_1.BuffaloZclDataType.EXTENSION_FIELD_SETS: {
896
+ case enums_1.BuffaloZclDataType.EXTENSION_FIELD_SETS: {
876
897
  return this.readExtensionFieldSets();
877
898
  }
878
- case definition_1.BuffaloZclDataType.LIST_THERMO_TRANSITIONS: {
899
+ case enums_1.BuffaloZclDataType.LIST_THERMO_TRANSITIONS: {
879
900
  return this.readListThermoTransitions(options);
880
901
  }
881
- case definition_1.BuffaloZclDataType.BUFFER: {
902
+ case enums_1.BuffaloZclDataType.BUFFER: {
882
903
  // if length option not specified, read the whole buffer
883
904
  return this.readBuffer(options.length ?? this.buffer.length);
884
905
  }
885
- case definition_1.BuffaloZclDataType.GDP_FRAME: {
906
+ case enums_1.BuffaloZclDataType.GDP_FRAME: {
886
907
  return this.readGdpFrame(options);
887
908
  }
888
- case definition_1.BuffaloZclDataType.STRUCTURED_SELECTOR: {
909
+ case enums_1.BuffaloZclDataType.STRUCTURED_SELECTOR: {
889
910
  return this.readStructuredSelector();
890
911
  }
891
- case definition_1.BuffaloZclDataType.LIST_TUYA_DATAPOINT_VALUES: {
912
+ case enums_1.BuffaloZclDataType.LIST_TUYA_DATAPOINT_VALUES: {
892
913
  return this.readListTuyaDataPointValues();
893
914
  }
894
- case definition_1.BuffaloZclDataType.LIST_MIBOXER_ZONES: {
915
+ case enums_1.BuffaloZclDataType.LIST_MIBOXER_ZONES: {
895
916
  return this.readListMiboxerZones();
896
917
  }
897
- case definition_1.BuffaloZclDataType.BIG_ENDIAN_UINT24: {
918
+ case enums_1.BuffaloZclDataType.BIG_ENDIAN_UINT24: {
898
919
  return this.readBigEndianUInt24();
899
920
  }
921
+ case enums_1.BuffaloZclDataType.MI_STRUCT: {
922
+ return this.readMiStruct();
923
+ }
900
924
  }
901
925
  throw new Error(`Read for '${type}' not available`);
902
926
  }
903
927
  }
904
- exports.default = BuffaloZcl;
928
+ exports.BuffaloZcl = BuffaloZcl;
905
929
  //# sourceMappingURL=buffaloZcl.js.map