@willieee802/zigbee-herdsman 0.49.4 → 0.50.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 (209) hide show
  1. package/.github/dependabot.yml +0 -3
  2. package/.github/workflows/ci.yml +1 -2
  3. package/.github/workflows/release-please.yml +1 -1
  4. package/.github/workflows/typedoc.yaml +3 -3
  5. package/.release-please-manifest.json +1 -1
  6. package/CHANGELOG.md +143 -0
  7. package/biome.json +1 -1
  8. package/dist/adapter/adapter.d.ts +14 -1
  9. package/dist/adapter/adapter.d.ts.map +1 -1
  10. package/dist/adapter/adapter.js +17 -0
  11. package/dist/adapter/adapter.js.map +1 -1
  12. package/dist/adapter/adapterDiscovery.d.ts.map +1 -1
  13. package/dist/adapter/adapterDiscovery.js.map +1 -1
  14. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +1 -3
  15. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
  16. package/dist/adapter/deconz/adapter/deconzAdapter.js +14 -29
  17. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
  18. package/dist/adapter/deconz/driver/constants.d.ts +1 -1
  19. package/dist/adapter/deconz/driver/constants.d.ts.map +1 -1
  20. package/dist/adapter/ember/adapter/emberAdapter.d.ts +1 -1
  21. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
  22. package/dist/adapter/ember/adapter/emberAdapter.js +19 -10
  23. package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
  24. package/dist/adapter/ember/adapter/oneWaitress.d.ts +2 -0
  25. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
  26. package/dist/adapter/ember/adapter/oneWaitress.js +13 -5
  27. package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
  28. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +1 -3
  29. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  30. package/dist/adapter/ezsp/adapter/ezspAdapter.js +17 -30
  31. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
  32. package/dist/adapter/ezsp/driver/index.d.ts +1 -1
  33. package/dist/adapter/ezsp/driver/index.d.ts.map +1 -1
  34. package/dist/adapter/ezsp/driver/index.js +1 -1
  35. package/dist/adapter/ezsp/driver/index.js.map +1 -1
  36. package/dist/adapter/ezsp/driver/types/index.d.ts +1 -1
  37. package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
  38. package/dist/adapter/ezsp/driver/types/index.js +3 -3
  39. package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
  40. package/dist/adapter/serialPort.d.ts.map +1 -1
  41. package/dist/adapter/serialPort.js +7 -0
  42. package/dist/adapter/serialPort.js.map +1 -1
  43. package/dist/adapter/z-stack/adapter/adapter-backup.js +1 -1
  44. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  45. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +1 -1
  46. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
  47. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
  48. package/dist/adapter/z-stack/adapter/manager.js +12 -2
  49. package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
  50. package/dist/adapter/z-stack/adapter/tstype.d.ts.map +1 -1
  51. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +1 -3
  52. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  53. package/dist/adapter/z-stack/adapter/zStackAdapter.js +20 -34
  54. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  55. package/dist/adapter/z-stack/constants/index.d.ts +1 -1
  56. package/dist/adapter/z-stack/constants/index.d.ts.map +1 -1
  57. package/dist/adapter/z-stack/constants/index.js +1 -1
  58. package/dist/adapter/z-stack/constants/index.js.map +1 -1
  59. package/dist/adapter/z-stack/unpi/constants.d.ts +1 -1
  60. package/dist/adapter/z-stack/unpi/constants.d.ts.map +1 -1
  61. package/dist/adapter/z-stack/unpi/constants.js +1 -1
  62. package/dist/adapter/z-stack/unpi/constants.js.map +1 -1
  63. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts +7 -8
  64. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts.map +1 -1
  65. package/dist/adapter/zboss/adapter/zbossAdapter.js +12 -30
  66. package/dist/adapter/zboss/adapter/zbossAdapter.js.map +1 -1
  67. package/dist/adapter/zboss/driver.d.ts.map +1 -1
  68. package/dist/adapter/zboss/driver.js +8 -1
  69. package/dist/adapter/zboss/driver.js.map +1 -1
  70. package/dist/adapter/zboss/uart.d.ts.map +1 -1
  71. package/dist/adapter/zboss/uart.js +14 -2
  72. package/dist/adapter/zboss/uart.js.map +1 -1
  73. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +1 -3
  74. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
  75. package/dist/adapter/zigate/adapter/zigateAdapter.js +8 -29
  76. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
  77. package/dist/adapter/zoh/adapter/zohAdapter.d.ts +1 -3
  78. package/dist/adapter/zoh/adapter/zohAdapter.d.ts.map +1 -1
  79. package/dist/adapter/zoh/adapter/zohAdapter.js +18 -33
  80. package/dist/adapter/zoh/adapter/zohAdapter.js.map +1 -1
  81. package/dist/controller/controller.d.ts.map +1 -1
  82. package/dist/controller/controller.js +10 -2
  83. package/dist/controller/controller.js.map +1 -1
  84. package/dist/controller/greenPower.d.ts.map +1 -1
  85. package/dist/controller/greenPower.js +15 -9
  86. package/dist/controller/greenPower.js.map +1 -1
  87. package/dist/controller/helpers/ota.d.ts +4 -4
  88. package/dist/controller/helpers/ota.d.ts.map +1 -1
  89. package/dist/controller/helpers/ota.js +28 -9
  90. package/dist/controller/helpers/ota.js.map +1 -1
  91. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  92. package/dist/controller/helpers/zclFrameConverter.js +17 -16
  93. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  94. package/dist/controller/model/device.d.ts +14 -3
  95. package/dist/controller/model/device.d.ts.map +1 -1
  96. package/dist/controller/model/device.js +155 -68
  97. package/dist/controller/model/device.js.map +1 -1
  98. package/dist/controller/model/endpoint.d.ts +7 -3
  99. package/dist/controller/model/endpoint.d.ts.map +1 -1
  100. package/dist/controller/model/endpoint.js +34 -21
  101. package/dist/controller/model/endpoint.js.map +1 -1
  102. package/dist/controller/model/group.js +4 -4
  103. package/dist/controller/model/group.js.map +1 -1
  104. package/dist/controller/touchlink.js +3 -3
  105. package/dist/controller/touchlink.js.map +1 -1
  106. package/dist/utils/timeService.js +2 -2
  107. package/dist/utils/timeService.js.map +1 -1
  108. package/dist/zspec/zcl/buffaloZcl.d.ts +3 -3
  109. package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -1
  110. package/dist/zspec/zcl/buffaloZcl.js +198 -96
  111. package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
  112. package/dist/zspec/zcl/definition/cluster.d.ts +2 -2
  113. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
  114. package/dist/zspec/zcl/definition/cluster.js +2699 -2808
  115. package/dist/zspec/zcl/definition/cluster.js.map +1 -1
  116. package/dist/zspec/zcl/definition/clusters-types.d.ts +63 -1109
  117. package/dist/zspec/zcl/definition/clusters-types.d.ts.map +1 -1
  118. package/dist/zspec/zcl/definition/enums.d.ts +0 -1
  119. package/dist/zspec/zcl/definition/enums.d.ts.map +1 -1
  120. package/dist/zspec/zcl/definition/enums.js +0 -1
  121. package/dist/zspec/zcl/definition/enums.js.map +1 -1
  122. package/dist/zspec/zcl/definition/foundation.d.ts +306 -7
  123. package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
  124. package/dist/zspec/zcl/definition/foundation.js +552 -207
  125. package/dist/zspec/zcl/definition/foundation.js.map +1 -1
  126. package/dist/zspec/zcl/definition/status.d.ts +21 -10
  127. package/dist/zspec/zcl/definition/status.d.ts.map +1 -1
  128. package/dist/zspec/zcl/definition/status.js +11 -0
  129. package/dist/zspec/zcl/definition/status.js.map +1 -1
  130. package/dist/zspec/zcl/definition/tstype.d.ts +57 -48
  131. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
  132. package/dist/zspec/zcl/utils.d.ts +7 -4
  133. package/dist/zspec/zcl/utils.d.ts.map +1 -1
  134. package/dist/zspec/zcl/utils.js +133 -240
  135. package/dist/zspec/zcl/utils.js.map +1 -1
  136. package/dist/zspec/zcl/zclFrame.d.ts +4 -4
  137. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
  138. package/dist/zspec/zcl/zclFrame.js +19 -103
  139. package/dist/zspec/zcl/zclFrame.js.map +1 -1
  140. package/dist/zspec/zcl/zclStatusError.d.ts +1 -1
  141. package/dist/zspec/zcl/zclStatusError.d.ts.map +1 -1
  142. package/dist/zspec/zcl/zclStatusError.js +2 -2
  143. package/dist/zspec/zcl/zclStatusError.js.map +1 -1
  144. package/package.json +1 -1
  145. package/scripts/clusters-typegen.ts +44 -139
  146. package/src/adapter/adapter.ts +38 -3
  147. package/src/adapter/adapterDiscovery.ts +2 -1
  148. package/src/adapter/deconz/adapter/deconzAdapter.ts +24 -51
  149. package/src/adapter/deconz/driver/constants.ts +1 -1
  150. package/src/adapter/ember/adapter/emberAdapter.ts +23 -10
  151. package/src/adapter/ember/adapter/oneWaitress.ts +16 -6
  152. package/src/adapter/ezsp/adapter/ezspAdapter.ts +27 -48
  153. package/src/adapter/ezsp/driver/index.ts +1 -1
  154. package/src/adapter/ezsp/driver/types/index.ts +99 -99
  155. package/src/adapter/serialPort.ts +9 -0
  156. package/src/adapter/z-stack/adapter/adapter-backup.ts +1 -1
  157. package/src/adapter/z-stack/adapter/adapter-nv-memory.ts +1 -1
  158. package/src/adapter/z-stack/adapter/manager.ts +16 -2
  159. package/src/adapter/z-stack/adapter/tstype.ts +1 -0
  160. package/src/adapter/z-stack/adapter/zStackAdapter.ts +34 -81
  161. package/src/adapter/z-stack/constants/index.ts +1 -1
  162. package/src/adapter/z-stack/unpi/constants.ts +1 -1
  163. package/src/adapter/zboss/adapter/zbossAdapter.ts +23 -54
  164. package/src/adapter/zboss/driver.ts +8 -1
  165. package/src/adapter/zboss/uart.ts +14 -1
  166. package/src/adapter/zigate/adapter/zigateAdapter.ts +17 -48
  167. package/src/adapter/zoh/adapter/zohAdapter.ts +27 -50
  168. package/src/controller/controller.ts +12 -2
  169. package/src/controller/greenPower.ts +16 -9
  170. package/src/controller/helpers/ota.ts +37 -11
  171. package/src/controller/helpers/zclFrameConverter.ts +20 -17
  172. package/src/controller/model/device.ts +192 -79
  173. package/src/controller/model/endpoint.ts +36 -24
  174. package/src/controller/model/group.ts +4 -4
  175. package/src/controller/touchlink.ts +3 -3
  176. package/src/utils/timeService.ts +2 -2
  177. package/src/zspec/zcl/buffaloZcl.ts +226 -100
  178. package/src/zspec/zcl/definition/cluster.ts +2713 -2822
  179. package/src/zspec/zcl/definition/clusters-types.ts +80 -1135
  180. package/src/zspec/zcl/definition/enums.ts +0 -1
  181. package/src/zspec/zcl/definition/foundation.ts +703 -216
  182. package/src/zspec/zcl/definition/status.ts +22 -11
  183. package/src/zspec/zcl/definition/tstype.ts +59 -58
  184. package/src/zspec/zcl/utils.ts +137 -264
  185. package/src/zspec/zcl/zclFrame.ts +25 -130
  186. package/src/zspec/zcl/zclStatusError.ts +2 -2
  187. package/test/adapter/ember/emberAdapter.test.ts +191 -4
  188. package/test/adapter/ezsp/uart.test.ts +10 -10
  189. package/test/adapter/z-stack/adapter.test.ts +88 -32
  190. package/test/adapter/zoh/zohAdapter.test.ts +4 -4
  191. package/test/controller.test.ts +822 -248
  192. package/test/device-ota.test.ts +141 -16
  193. package/test/device.test.ts +731 -0
  194. package/test/requests.bench.ts +2 -0
  195. package/test/zcl.test.ts +70 -95
  196. package/test/zspec/zcl/buffalo.test.ts +251 -11
  197. package/test/zspec/zcl/foundation.test.ts +990 -0
  198. package/test/zspec/zcl/frame.test.ts +84 -69
  199. package/test/zspec/zcl/utils.test.ts +105 -81
  200. package/tsconfig.json +0 -1
  201. package/scripts/check-clusters-changes.ts +0 -328
  202. package/scripts/clusters-changes.log +0 -584
  203. package/scripts/utils.ts +0 -88
  204. package/scripts/zap-update-clusters-report.json +0 -303
  205. package/scripts/zap-update-clusters.ts +0 -1520
  206. package/scripts/zap-update-types.ts +0 -707
  207. package/scripts/zap-xml-clusters-overrides-data.ts +0 -52
  208. package/scripts/zap-xml-clusters-overrides.ts +0 -400
  209. package/scripts/zap-xml-types.ts +0 -146
@@ -1,11 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDataTypeClass = getDataTypeClass;
3
+ exports.isAnalogDataType = isAnalogDataType;
4
4
  exports.getCluster = getCluster;
5
+ exports.getClusterAttribute = getClusterAttribute;
6
+ exports.getClusterCommand = getClusterCommand;
7
+ exports.getClusterCommandResponse = getClusterCommandResponse;
5
8
  exports.getGlobalCommand = getGlobalCommand;
6
9
  exports.isClusterName = isClusterName;
7
10
  exports.getFoundationCommand = getFoundationCommand;
8
- exports.isFoundationDiscoverRsp = isFoundationDiscoverRsp;
11
+ exports.getFoundationCommandByName = getFoundationCommandByName;
9
12
  exports.processAttributeWrite = processAttributeWrite;
10
13
  exports.processAttributePreRead = processAttributePreRead;
11
14
  exports.processAttributePostRead = processAttributePostRead;
@@ -15,68 +18,8 @@ const cluster_1 = require("./definition/cluster");
15
18
  const datatypes_1 = require("./definition/datatypes");
16
19
  const enums_1 = require("./definition/enums");
17
20
  const foundation_1 = require("./definition/foundation");
18
- const DATA_TYPE_CLASS_DISCRETE = [
19
- enums_1.DataType.DATA8,
20
- enums_1.DataType.DATA16,
21
- enums_1.DataType.DATA24,
22
- enums_1.DataType.DATA32,
23
- enums_1.DataType.DATA40,
24
- enums_1.DataType.DATA48,
25
- enums_1.DataType.DATA56,
26
- enums_1.DataType.DATA64,
27
- enums_1.DataType.BOOLEAN,
28
- enums_1.DataType.BITMAP8,
29
- enums_1.DataType.BITMAP16,
30
- enums_1.DataType.BITMAP24,
31
- enums_1.DataType.BITMAP32,
32
- enums_1.DataType.BITMAP40,
33
- enums_1.DataType.BITMAP48,
34
- enums_1.DataType.BITMAP56,
35
- enums_1.DataType.BITMAP64,
36
- enums_1.DataType.ENUM8,
37
- enums_1.DataType.ENUM16,
38
- enums_1.DataType.OCTET_STR,
39
- enums_1.DataType.CHAR_STR,
40
- enums_1.DataType.LONG_OCTET_STR,
41
- enums_1.DataType.LONG_CHAR_STR,
42
- enums_1.DataType.ARRAY,
43
- enums_1.DataType.STRUCT,
44
- enums_1.DataType.SET,
45
- enums_1.DataType.BAG,
46
- enums_1.DataType.CLUSTER_ID,
47
- enums_1.DataType.ATTR_ID,
48
- enums_1.DataType.BAC_OID,
49
- enums_1.DataType.IEEE_ADDR,
50
- enums_1.DataType.SEC_KEY,
51
- ];
52
- const DATA_TYPE_CLASS_ANALOG = [
53
- enums_1.DataType.UINT8,
54
- enums_1.DataType.UINT16,
55
- enums_1.DataType.UINT24,
56
- enums_1.DataType.UINT32,
57
- enums_1.DataType.UINT40,
58
- enums_1.DataType.UINT48,
59
- enums_1.DataType.UINT56,
60
- enums_1.DataType.INT8,
61
- enums_1.DataType.INT16,
62
- enums_1.DataType.INT24,
63
- enums_1.DataType.INT32,
64
- enums_1.DataType.INT40,
65
- enums_1.DataType.INT48,
66
- enums_1.DataType.INT56,
67
- enums_1.DataType.SEMI_PREC,
68
- enums_1.DataType.SINGLE_PREC,
69
- enums_1.DataType.DOUBLE_PREC,
70
- enums_1.DataType.TOD,
71
- enums_1.DataType.DATE,
72
- enums_1.DataType.UTC,
73
- ];
74
- const FOUNDATION_DISCOVER_RSP_IDS = [
75
- foundation_1.Foundation.discoverRsp.ID,
76
- foundation_1.Foundation.discoverCommandsRsp.ID,
77
- foundation_1.Foundation.discoverCommandsGenRsp.ID,
78
- foundation_1.Foundation.discoverExtRsp.ID,
79
- ];
21
+ const status_1 = require("./definition/status");
22
+ const zclStatusError_1 = require("./zclStatusError");
80
23
  /** Runtime fast lookup */
81
24
  const ZCL_CLUSTERS_ID_TO_NAMES = (() => {
82
25
  const map = new Map();
@@ -86,184 +29,138 @@ const ZCL_CLUSTERS_ID_TO_NAMES = (() => {
86
29
  }
87
30
  return map;
88
31
  })();
89
- function getDataTypeClass(dataType) {
90
- if (DATA_TYPE_CLASS_DISCRETE.includes(dataType)) {
91
- return enums_1.DataTypeClass.DISCRETE;
92
- }
93
- if (DATA_TYPE_CLASS_ANALOG.includes(dataType)) {
94
- return enums_1.DataTypeClass.ANALOG;
95
- }
96
- throw new Error(`Don't know value type for '${enums_1.DataType[dataType]}'`);
32
+ function isAnalogDataType(dataType) {
33
+ return (dataType === enums_1.DataType.UINT8 ||
34
+ dataType === enums_1.DataType.UINT16 ||
35
+ dataType === enums_1.DataType.UINT24 ||
36
+ dataType === enums_1.DataType.UINT32 ||
37
+ dataType === enums_1.DataType.UINT40 ||
38
+ dataType === enums_1.DataType.UINT48 ||
39
+ dataType === enums_1.DataType.UINT56 ||
40
+ dataType === enums_1.DataType.INT8 ||
41
+ dataType === enums_1.DataType.INT16 ||
42
+ dataType === enums_1.DataType.INT24 ||
43
+ dataType === enums_1.DataType.INT32 ||
44
+ dataType === enums_1.DataType.INT40 ||
45
+ dataType === enums_1.DataType.INT48 ||
46
+ dataType === enums_1.DataType.INT56 ||
47
+ dataType === enums_1.DataType.SEMI_PREC ||
48
+ dataType === enums_1.DataType.SINGLE_PREC ||
49
+ dataType === enums_1.DataType.DOUBLE_PREC ||
50
+ dataType === enums_1.DataType.TOD ||
51
+ dataType === enums_1.DataType.DATE ||
52
+ dataType === enums_1.DataType.UTC);
97
53
  }
98
- function hasCustomClusters(customClusters) {
99
- // XXX: was there a good reason to not set the parameter `customClusters` optional? it would allow simple undefined check
100
- // below is twice faster than checking `Object.keys(customClusters).length`
101
- for (const _k in customClusters)
102
- return true;
103
- return false;
104
- }
105
- function findClusterNameByID(id, manufacturerCode, clusters, zcl) {
106
- let name;
107
- // if manufacturer code is given, consider partial match if didn't match against manufacturer code
108
- let partialMatch = Boolean(manufacturerCode);
109
- if (zcl) {
110
- const zclName = ZCL_CLUSTERS_ID_TO_NAMES.get(id);
111
- if (zclName) {
112
- const cluster = clusters[zclName];
113
- // priority on first match when matching only ID
114
- if (name === undefined) {
115
- name = zclName;
116
- }
117
- if (manufacturerCode && cluster.manufacturerCode === manufacturerCode) {
118
- name = zclName;
119
- partialMatch = false;
120
- }
121
- else if (!cluster.manufacturerCode) {
122
- name = zclName;
123
- }
124
- }
125
- }
126
- else {
127
- for (const clusterName in clusters) {
128
- const cluster = clusters[clusterName];
129
- if (cluster.ID === id) {
54
+ function getCluster(key, manufacturerCode = undefined, customClusters = {}) {
55
+ let cluster;
56
+ if (typeof key === "number") {
57
+ // custom clusters have priority over Zcl clusters, except in case of better match (see below)
58
+ for (const clusterName in customClusters) {
59
+ const foundCluster = customClusters[clusterName];
60
+ if (foundCluster.ID === key) {
130
61
  // priority on first match when matching only ID
131
- if (name === undefined) {
132
- name = clusterName;
62
+ if (cluster === undefined) {
63
+ cluster = foundCluster;
133
64
  }
134
- if (manufacturerCode && cluster.manufacturerCode === manufacturerCode) {
135
- name = clusterName;
136
- partialMatch = false;
65
+ if (manufacturerCode && foundCluster.manufacturerCode === manufacturerCode) {
66
+ cluster = foundCluster;
137
67
  break;
138
68
  }
139
- if (!cluster.manufacturerCode) {
140
- name = clusterName;
69
+ if (!foundCluster.manufacturerCode) {
70
+ cluster = foundCluster;
141
71
  break;
142
72
  }
143
73
  }
144
74
  }
145
- }
146
- return [name, partialMatch];
147
- }
148
- function getClusterDefinition(key, manufacturerCode, customClusters) {
149
- let name;
150
- if (typeof key === "number") {
151
- let partialMatch;
152
- // custom clusters have priority over Zcl clusters, except in case of better match (see below)
153
- [name, partialMatch] = findClusterNameByID(key, manufacturerCode, customClusters, false);
154
- if (!name) {
155
- [name, partialMatch] = findClusterNameByID(key, manufacturerCode, cluster_1.Clusters, true);
156
- }
157
- else if (partialMatch) {
158
- let zclName;
159
- [zclName, partialMatch] = findClusterNameByID(key, manufacturerCode, cluster_1.Clusters, true);
160
- // Zcl clusters contain a better match, use that one
161
- if (zclName !== undefined && !partialMatch) {
162
- name = zclName;
75
+ if (!cluster) {
76
+ const zclName = ZCL_CLUSTERS_ID_TO_NAMES.get(key);
77
+ if (zclName) {
78
+ const foundCluster = cluster_1.Clusters[zclName];
79
+ // TODO: can remove all below once all manuf-specific moved to ZHC
80
+ // priority on first match when matching only ID
81
+ if (cluster === undefined) {
82
+ cluster = foundCluster;
83
+ }
84
+ if (manufacturerCode && foundCluster.manufacturerCode === manufacturerCode) {
85
+ cluster = foundCluster;
86
+ }
87
+ else if (foundCluster.manufacturerCode === undefined) {
88
+ cluster = foundCluster;
89
+ }
163
90
  }
164
91
  }
92
+ // TODO: cluster.ID can't be undefined?
93
+ if (!cluster || cluster.ID === undefined) {
94
+ cluster = { name: `${key}`, ID: key, attributes: {}, commands: {}, commandsResponse: {} };
95
+ // XXX: align behavior with string key?
96
+ // throw new ZclStatusError(Status.UNSUPPORTED_CLUSTER, `${key}`);
97
+ }
165
98
  }
166
99
  else {
167
- name = key;
168
- }
169
- let cluster = name !== undefined && hasCustomClusters(customClusters)
170
- ? {
171
- ...cluster_1.Clusters[name],
172
- ...customClusters[name], // should override Zcl clusters
173
- }
174
- : cluster_1.Clusters[name];
175
- if (!cluster || cluster.ID === undefined) {
176
- if (typeof key === "number") {
177
- name = key.toString();
178
- cluster = { attributes: {}, commands: {}, commandsResponse: {}, manufacturerCode: undefined, ID: key };
100
+ cluster = key in customClusters ? customClusters[key] : cluster_1.Clusters[key];
101
+ // TODO: cluster.ID can't be undefined?
102
+ if (!cluster || cluster.ID === undefined) {
103
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.UNSUPPORTED_CLUSTER, key);
179
104
  }
180
- else {
181
- name = undefined;
182
- }
183
- }
184
- if (!name) {
185
- throw new Error(`Cluster with name '${key}' does not exist`);
186
- }
187
- return { name, cluster };
188
- }
189
- function cloneClusterEntriesWithName(entries) {
190
- const clone = {};
191
- for (const key in entries) {
192
- clone[key] = { ...entries[key], name: key };
193
105
  }
194
- return clone;
106
+ return cluster;
195
107
  }
196
- function createCluster(name, cluster, manufacturerCode) {
197
- const attributes = cloneClusterEntriesWithName(cluster.attributes);
198
- const commands = cloneClusterEntriesWithName(cluster.commands);
199
- const commandsResponse = cloneClusterEntriesWithName(cluster.commandsResponse);
200
- const getAttribute = (key) => {
201
- if (typeof key === "number") {
202
- let partialMatchAttr;
203
- for (const attrKey in attributes) {
204
- const attr = attributes[attrKey];
205
- if (attr.ID === key) {
206
- if (manufacturerCode && attr.manufacturerCode === manufacturerCode) {
207
- return attr;
208
- }
209
- if (attr.manufacturerCode === undefined) {
210
- partialMatchAttr = attr;
211
- }
108
+ function getClusterAttribute(cluster, key, manufacturerCode) {
109
+ const attributes = cluster.attributes;
110
+ if (typeof key === "number") {
111
+ let partialMatchAttr;
112
+ for (const attrKey in attributes) {
113
+ const attr = attributes[attrKey];
114
+ if (attr.ID === key) {
115
+ if (manufacturerCode !== undefined && attr.manufacturerCode === manufacturerCode) {
116
+ return attr;
212
117
  }
213
- }
214
- return partialMatchAttr;
215
- }
216
- return attributes[key];
217
- };
218
- const getCommand = (key) => {
219
- if (typeof key === "number") {
220
- for (const cmdKey in commands) {
221
- const cmd = commands[cmdKey];
222
- if (cmd.ID === key) {
223
- return cmd;
118
+ if (attr.manufacturerCode === undefined) {
119
+ partialMatchAttr = attr;
224
120
  }
225
121
  }
226
122
  }
227
- else {
228
- const cmd = commands[key];
229
- if (cmd) {
123
+ return partialMatchAttr;
124
+ }
125
+ return attributes[key];
126
+ // XXX: align behavior with cmds?
127
+ // throw new ZclStatusError(Status.UNSUPPORTED_ATTRIBUTE, `${cluster.name}:${key}`);
128
+ }
129
+ function getClusterCommand(cluster, key) {
130
+ const commands = cluster.commands;
131
+ if (typeof key === "number") {
132
+ for (const cmdKey in commands) {
133
+ const cmd = commands[cmdKey];
134
+ if (cmd.ID === key) {
230
135
  return cmd;
231
136
  }
232
137
  }
233
- throw new Error(`Cluster '${name}' has no command '${key}'`);
234
- };
235
- const getCommandResponse = (key) => {
236
- if (typeof key === "number") {
237
- for (const cmdKey in commandsResponse) {
238
- const cmd = commandsResponse[cmdKey];
239
- if (cmd.ID === key) {
240
- return cmd;
241
- }
242
- }
138
+ }
139
+ else {
140
+ const cmd = commands[key];
141
+ if (cmd) {
142
+ return cmd;
243
143
  }
244
- else {
245
- const cmd = commandsResponse[key];
246
- if (cmd) {
144
+ }
145
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.UNSUP_COMMAND, `${cluster.name}:${key}`);
146
+ }
147
+ function getClusterCommandResponse(cluster, key) {
148
+ const commandResponses = cluster.commandsResponse;
149
+ if (typeof key === "number") {
150
+ for (const cmdKey in commandResponses) {
151
+ const cmd = commandResponses[cmdKey];
152
+ if (cmd.ID === key) {
247
153
  return cmd;
248
154
  }
249
155
  }
250
- throw new Error(`Cluster '${name}' has no command response '${key}'`);
251
- };
252
- return {
253
- ID: cluster.ID,
254
- attributes,
255
- manufacturerCode: cluster.manufacturerCode,
256
- name,
257
- commands,
258
- commandsResponse,
259
- getAttribute,
260
- getCommand,
261
- getCommandResponse,
262
- };
263
- }
264
- function getCluster(key, manufacturerCode = undefined, customClusters = {}) {
265
- const { name, cluster } = getClusterDefinition(key, manufacturerCode, customClusters);
266
- return createCluster(name, cluster, manufacturerCode);
156
+ }
157
+ else {
158
+ const cmd = commandResponses[key];
159
+ if (cmd) {
160
+ return cmd;
161
+ }
162
+ }
163
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.UNSUP_COMMAND, `response ${cluster.name}:${key}`);
267
164
  }
268
165
  function getGlobalCommandNameById(id) {
269
166
  for (const commandName in foundation_1.Foundation) {
@@ -271,23 +168,15 @@ function getGlobalCommandNameById(id) {
271
168
  return commandName;
272
169
  }
273
170
  }
274
- throw new Error(`Global command with id '${id}' does not exist.`);
171
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.UNSUP_COMMAND, `foundation:${id}`);
275
172
  }
276
173
  function getGlobalCommand(key) {
277
174
  const name = typeof key === "number" ? getGlobalCommandNameById(key) : key;
278
175
  const command = foundation_1.Foundation[name];
279
176
  if (!command) {
280
- throw new Error(`Global command with key '${key}' does not exist`);
177
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.UNSUP_COMMAND, `foundation:${key}`);
281
178
  }
282
- const result = {
283
- ID: command.ID,
284
- name,
285
- parameters: command.parameters,
286
- };
287
- if (command.response !== undefined) {
288
- result.response = command.response;
289
- }
290
- return result;
179
+ return command;
291
180
  }
292
181
  function isClusterName(name) {
293
182
  return name in cluster_1.Clusters;
@@ -299,10 +188,14 @@ function getFoundationCommand(id) {
299
188
  return command;
300
189
  }
301
190
  }
302
- throw new Error(`Foundation command '${id}' does not exist.`);
191
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.UNSUP_COMMAND, `foundation:${id}`);
303
192
  }
304
- function isFoundationDiscoverRsp(id) {
305
- return FOUNDATION_DISCOVER_RSP_IDS.includes(id);
193
+ function getFoundationCommandByName(name) {
194
+ const command = foundation_1.Foundation[name];
195
+ if (command === undefined) {
196
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.UNSUP_COMMAND, `foundation:${name}`);
197
+ }
198
+ return command;
306
199
  }
307
200
  /** Check if value is equal to either min, max, minRef or maxRef */
308
201
  function isMinOrMax(entry, value) {
@@ -313,30 +206,30 @@ function isMinOrMax(entry, value) {
313
206
  }
314
207
  function processRestrictions(entry, value) {
315
208
  if (entry.min !== undefined && value < entry.min) {
316
- throw new Error(`${entry.name} requires min of ${entry.min}`);
209
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.INVALID_VALUE, `${entry.name} requires min of ${entry.min}`);
317
210
  }
318
211
  if (entry.minExcl !== undefined && value <= entry.minExcl) {
319
- throw new Error(`${entry.name} requires min exclusive of ${entry.minExcl}`);
212
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.INVALID_VALUE, `${entry.name} requires min exclusive of ${entry.minExcl}`);
320
213
  }
321
214
  if (entry.max !== undefined && value > entry.max) {
322
- throw new Error(`${entry.name} requires max of ${entry.max}`);
215
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.INVALID_VALUE, `${entry.name} requires max of ${entry.max}`);
323
216
  }
324
217
  if (entry.maxExcl !== undefined && value >= entry.maxExcl) {
325
- throw new Error(`${entry.name} requires max exclusive of ${entry.maxExcl}`);
218
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.INVALID_VALUE, `${entry.name} requires max exclusive of ${entry.maxExcl}`);
326
219
  }
327
220
  if (entry.length !== undefined && value.length !== entry.length) {
328
- throw new Error(`${entry.name} requires length of ${entry.length}`);
221
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.INVALID_VALUE, `${entry.name} requires length of ${entry.length}`);
329
222
  }
330
223
  if (entry.minLen !== undefined && value.length < entry.minLen) {
331
- throw new Error(`${entry.name} requires min length of ${entry.minLen}`);
224
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.INVALID_VALUE, `${entry.name} requires min length of ${entry.minLen}`);
332
225
  }
333
226
  if (entry.maxLen !== undefined && value.length > entry.maxLen) {
334
- throw new Error(`${entry.name} requires max length of ${entry.maxLen}`);
227
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.INVALID_VALUE, `${entry.name} requires max length of ${entry.maxLen}`);
335
228
  }
336
229
  }
337
230
  function processAttributeWrite(attribute, value) {
338
231
  if (attribute.write !== true) {
339
- throw new Error(`Attribute ${attribute.name} (${attribute.ID}) is not writable`);
232
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.NOT_AUTHORIZED, `${attribute.name} (${attribute.ID}) is not writable`);
340
233
  }
341
234
  if (value == null) {
342
235
  return attribute.default !== undefined ? attribute.default : value /* XXX: dangerous fallback */;
@@ -349,7 +242,7 @@ function processAttributeWrite(attribute, value) {
349
242
  if (attribute.default === undefined) {
350
243
  const nonValue = datatypes_1.ZCL_TYPE_INVALID_BY_TYPE[attribute.type];
351
244
  if (nonValue === undefined) {
352
- throw new Error(`Attribute ${attribute.name} (${attribute.ID}) does not have a default nor a non-value`);
245
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.INVALID_FIELD, `${attribute.name} (${attribute.ID}) does not have a default nor a non-value`);
353
246
  }
354
247
  return nonValue;
355
248
  }
@@ -360,7 +253,7 @@ function processAttributeWrite(attribute, value) {
360
253
  }
361
254
  function processAttributePreRead(attribute) {
362
255
  if (attribute.read === false) {
363
- throw new Error(`Attribute ${attribute.name} (${attribute.ID}) is not readable`);
256
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.NOT_AUTHORIZED, `${attribute.name} (${attribute.ID}) is not readable`);
364
257
  }
365
258
  }
366
259
  function processAttributePostRead(attribute, value) {
@@ -392,7 +285,7 @@ function processParameterWrite(parameter, value) {
392
285
  if (Number.isNaN(value)) {
393
286
  const nonValue = datatypes_1.ZCL_TYPE_INVALID_BY_TYPE[parameter.type];
394
287
  if (nonValue === undefined) {
395
- throw new Error(`Parameter ${parameter.name} does not have a non-value`);
288
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.INVALID_FIELD, `${parameter.name} does not have a non-value`);
396
289
  }
397
290
  return nonValue;
398
291
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/zspec/zcl/utils.ts"],"names":[],"mappings":";;AAmFA,4CAUC;AAgND,gCAGC;AAYD,4CAmBC;AAED,sCAEC;AAED,oDAUC;AAED,0DAEC;AAyCD,sDA+BC;AAED,0DAIC;AAED,4DAyBC;AAED,sDAmBC;AAED,oDAoBC;AAvfD,kDAA8C;AAC9C,sDAAgE;AAChE,8CAA2D;AAC3D,wDAA0G;AAG1G,MAAM,wBAAwB,GAAG;IAC7B,gBAAQ,CAAC,KAAK;IACd,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,OAAO;IAChB,gBAAQ,CAAC,OAAO;IAChB,gBAAQ,CAAC,QAAQ;IACjB,gBAAQ,CAAC,QAAQ;IACjB,gBAAQ,CAAC,QAAQ;IACjB,gBAAQ,CAAC,QAAQ;IACjB,gBAAQ,CAAC,QAAQ;IACjB,gBAAQ,CAAC,QAAQ;IACjB,gBAAQ,CAAC,QAAQ;IACjB,gBAAQ,CAAC,KAAK;IACd,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,SAAS;IAClB,gBAAQ,CAAC,QAAQ;IACjB,gBAAQ,CAAC,cAAc;IACvB,gBAAQ,CAAC,aAAa;IACtB,gBAAQ,CAAC,KAAK;IACd,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,GAAG;IACZ,gBAAQ,CAAC,GAAG;IACZ,gBAAQ,CAAC,UAAU;IACnB,gBAAQ,CAAC,OAAO;IAChB,gBAAQ,CAAC,OAAO;IAChB,gBAAQ,CAAC,SAAS;IAClB,gBAAQ,CAAC,OAAO;CACnB,CAAC;AACF,MAAM,sBAAsB,GAAG;IAC3B,gBAAQ,CAAC,KAAK;IACd,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,MAAM;IACf,gBAAQ,CAAC,IAAI;IACb,gBAAQ,CAAC,KAAK;IACd,gBAAQ,CAAC,KAAK;IACd,gBAAQ,CAAC,KAAK;IACd,gBAAQ,CAAC,KAAK;IACd,gBAAQ,CAAC,KAAK;IACd,gBAAQ,CAAC,KAAK;IACd,gBAAQ,CAAC,SAAS;IAClB,gBAAQ,CAAC,WAAW;IACpB,gBAAQ,CAAC,WAAW;IACpB,gBAAQ,CAAC,GAAG;IACZ,gBAAQ,CAAC,IAAI;IACb,gBAAQ,CAAC,GAAG;CACf,CAAC;AAEF,MAAM,2BAA2B,GAAG;IAChC,uBAAU,CAAC,WAAW,CAAC,EAAE;IACzB,uBAAU,CAAC,mBAAmB,CAAC,EAAE;IACjC,uBAAU,CAAC,sBAAsB,CAAC,EAAE;IACpC,uBAAU,CAAC,cAAc,CAAC,EAAE;CAC/B,CAAC;AAEF,0BAA0B;AAC1B,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE;IACnC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE3C,KAAK,MAAM,WAAW,IAAI,kBAAQ,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,kBAAQ,CAAC,WAA0B,CAAC,CAAC;QAErD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,WAA0B,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC,CAAC,EAAE,CAAC;AAEL,SAAgB,gBAAgB,CAAC,QAAkB;IAC/C,IAAI,wBAAwB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,OAAO,qBAAa,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,IAAI,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,OAAO,qBAAa,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,8BAA8B,gBAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,iBAAiB,CAAC,cAA8B;IACrD,yHAAyH;IACzH,2EAA2E;IAC3E,KAAK,MAAM,EAAE,IAAI,cAAc;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CACxB,EAAU,EACV,gBAAoC,EACpC,QAA0C,EAC1C,GAAY;IAEZ,IAAI,IAAwB,CAAC;IAC7B,kGAAkG;IAClG,IAAI,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE7C,IAAI,GAAG,EAAE,CAAC;QACN,MAAM,OAAO,GAAG,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEjD,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAElC,gDAAgD;YAChD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACrB,IAAI,GAAG,OAAO,CAAC;YACnB,CAAC;YAED,IAAI,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,KAAK,gBAAgB,EAAE,CAAC;gBACpE,IAAI,GAAG,OAAO,CAAC;gBACf,YAAY,GAAG,KAAK,CAAC;YACzB,CAAC;iBAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBACnC,IAAI,GAAG,OAAO,CAAC;YACnB,CAAC;QACL,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,KAAK,MAAM,WAAW,IAAI,QAAQ,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,WAA0B,CAAC,CAAC;YAErD,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;gBACpB,gDAAgD;gBAChD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACrB,IAAI,GAAG,WAAW,CAAC;gBACvB,CAAC;gBAED,IAAI,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,KAAK,gBAAgB,EAAE,CAAC;oBACpE,IAAI,GAAG,WAAW,CAAC;oBACnB,YAAY,GAAG,KAAK,CAAC;oBACrB,MAAM;gBACV,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;oBAC5B,IAAI,GAAG,WAAW,CAAC;oBACnB,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,oBAAoB,CACzB,GAAoB,EACpB,gBAAoC,EACpC,cAA8B;IAE9B,IAAI,IAAwB,CAAC;IAE7B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,YAAqB,CAAC;QAE1B,8FAA8F;QAC9F,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;QAEzF,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,EAAE,kBAAQ,EAAE,IAAI,CAAC,CAAC;QACtF,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACtB,IAAI,OAA2B,CAAC;YAChC,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,EAAE,kBAAQ,EAAE,IAAI,CAAC,CAAC;YAErF,oDAAoD;YACpD,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;gBACzC,IAAI,GAAG,OAAO,CAAC;YACnB,CAAC;QACL,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,GAAG,GAAG,CAAC;IACf,CAAC;IAED,IAAI,OAAO,GACP,IAAI,KAAK,SAAS,IAAI,iBAAiB,CAAC,cAAc,CAAC;QACnD,CAAC,CAAC;YACI,GAAG,kBAAQ,CAAC,IAAmB,CAAC;YAChC,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,+BAA+B;SAC3D;QACH,CAAC,CAAC,kBAAQ,CAAC,IAAmB,CAAC,CAAC;IAExC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,GAAG,EAAC,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAC,CAAC;QACzG,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,kBAAkB,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;AAC3B,CAAC;AAED,SAAS,2BAA2B,CAAoC,OAA0B;IAC9F,MAAM,KAAK,GAAuC,EAAE,CAAC;IAErD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC;IAC9C,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,OAA0B,EAAE,gBAAyB;IACtF,MAAM,UAAU,GAA8B,2BAA2B,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9F,MAAM,QAAQ,GAA4B,2BAA2B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxF,MAAM,gBAAgB,GAA4B,2BAA2B,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAExG,MAAM,YAAY,GAAG,CAAC,GAAoB,EAAyB,EAAE;QACjE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,gBAAuC,CAAC;YAE5C,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBAEjC,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;oBAClB,IAAI,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,EAAE,CAAC;wBACjE,OAAO,IAAI,CAAC;oBAChB,CAAC;oBAED,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;wBACtC,gBAAgB,GAAG,IAAI,CAAC;oBAC5B,CAAC;gBACL,CAAC;YACL,CAAC;YAED,OAAO,gBAAgB,CAAC;QAC5B,CAAC;QAED,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,GAAoB,EAAW,EAAE;QACjD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAE7B,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;oBACjB,OAAO,GAAG,CAAC;gBACf,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAE1B,IAAI,GAAG,EAAE,CAAC;gBACN,OAAO,GAAG,CAAC;YACf,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,qBAAqB,GAAG,GAAG,CAAC,CAAC;IACjE,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,GAAoB,EAAW,EAAE;QACzD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;gBACpC,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAErC,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;oBACjB,OAAO,GAAG,CAAC;gBACf,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAElC,IAAI,GAAG,EAAE,CAAC;gBACN,OAAO,GAAG,CAAC;YACf,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,8BAA8B,GAAG,GAAG,CAAC,CAAC;IAC1E,CAAC,CAAC;IAEF,OAAO;QACH,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,UAAU;QACV,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,IAAI;QACJ,QAAQ;QACR,gBAAgB;QAChB,YAAY;QACZ,UAAU;QACV,kBAAkB;KACrB,CAAC;AACN,CAAC;AAED,SAAgB,UAAU,CAAC,GAAoB,EAAE,mBAAuC,SAAS,EAAE,iBAAiC,EAAE;IAClI,MAAM,EAAC,IAAI,EAAE,OAAO,EAAC,GAAG,oBAAoB,CAAC,GAAG,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACpF,OAAO,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,wBAAwB,CAAC,EAAU;IACxC,KAAK,MAAM,WAAW,IAAI,uBAAU,EAAE,CAAC;QACnC,IAAI,uBAAU,CAAC,WAAoC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YAC7D,OAAO,WAAoC,CAAC;QAChD,CAAC;IACL,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,mBAAmB,CAAC,CAAC;AACtE,CAAC;AAED,SAAgB,gBAAgB,CAAC,GAAoB;IACjD,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAA6B,CAAC;IACtG,MAAM,OAAO,GAAG,uBAAU,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,kBAAkB,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,MAAM,GAAY;QACpB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI;QACJ,UAAU,EAAE,OAAO,CAAC,UAAU;KACjC,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACtC,OAAO,IAAI,IAAI,kBAAQ,CAAC;AAC5B,CAAC;AAED,SAAgB,oBAAoB,CAAC,EAAU;IAC3C,KAAK,MAAM,WAAW,IAAI,uBAAU,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,uBAAU,CAAC,WAAoC,CAAC,CAAC;QAEjE,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC;QACnB,CAAC;IACL,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,uBAAuB,CAAC,EAAU;IAC9C,OAAO,2BAA2B,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,mEAAmE;AACnE,SAAS,UAAU,CAAI,KAA4B,EAAE,KAAQ;IACzD,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAI,KAA4B,EAAE,KAAQ;IAClE,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAK,KAAgB,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,oBAAoB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAK,KAAgB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAK,KAAgB,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,oBAAoB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAK,KAAgB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAK,KAAqC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/F,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,uBAAuB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAK,KAAqC,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC7F,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,2BAA2B,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAK,KAAqC,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC7F,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,2BAA2B,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC;AACL,CAAC;AAED,SAAgB,qBAAqB,CAAI,SAAoB,EAAE,KAAQ;IACnE,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,aAAa,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,mBAAmB,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAE,SAAS,CAAC,OAAa,CAAC,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC;IAC5G,CAAC;IAED,2BAA2B;IAC3B,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,oCAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAE1D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,aAAa,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,2CAA2C,CAAC,CAAC;YAC7G,CAAC;YAED,OAAO,QAAa,CAAC;QACzB,CAAC;QAED,OAAO,SAAS,CAAC,OAAY,CAAC;IAClC,CAAC;IAED,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,uBAAuB,CAAC,SAAoB;IACxD,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,aAAa,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,mBAAmB,CAAC,CAAC;IACrF,CAAC;AACL,CAAC;AAED,SAAgB,wBAAwB,CAAI,SAAoB,EAAE,KAAQ;IACtE,uBAAuB;IACvB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,2BAA2B;IAC3B,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,6FAA6F;IAC7F,IAAI,KAAK,KAAK,oCAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,0DAA0D;QAC1D,IAAI,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,+DAA+D;QAC/D,OAAO,MAAM,CAAC,GAAQ,CAAC;IAC3B,CAAC;IAED,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,qBAAqB,CAAI,SAAoB,EAAE,KAAQ;IACnE,uBAAuB;IACvB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,oCAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE1D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,aAAa,SAAS,CAAC,IAAI,4BAA4B,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,QAAa,CAAC;IACzB,CAAC;IAED,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,oBAAoB,CAAI,SAAoB,EAAE,KAAQ;IAClE,uBAAuB;IACvB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,6FAA6F;IAC7F,IAAI,KAAK,KAAK,oCAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,0DAA0D;QAC1D,IAAI,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,+DAA+D;QAC/D,OAAO,MAAM,CAAC,GAAQ,CAAC;IAC3B,CAAC;IAED,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,KAAK,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/zspec/zcl/utils.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import "../../utils/patchBigIntSerialization";
2
2
  import type { TClusterPayload, TFoundationPayload } from "./definition/clusters-types";
3
3
  import { Direction, FrameType } from "./definition/enums";
4
- import type { FoundationCommandName } from "./definition/foundation";
4
+ import type { FoundationCommandName, FoundationDefinition } from "./definition/foundation";
5
5
  import type { Cluster, ClusterName, Command, CustomClusters, Parameter } from "./definition/tstype";
6
6
  import { ZclHeader } from "./zclHeader";
7
7
  type ZclPayload = any;
@@ -9,13 +9,13 @@ export declare class ZclFrame {
9
9
  readonly header: ZclHeader;
10
10
  readonly payload: ZclPayload;
11
11
  readonly cluster: Cluster;
12
- readonly command: Command;
12
+ readonly command: Command | FoundationDefinition;
13
13
  private constructor();
14
14
  toString(): string;
15
15
  /**
16
16
  * Creating
17
17
  */
18
- static create(frameType: FrameType, direction: Direction, disableDefaultResponse: boolean, manufacturerCode: number | undefined, transactionSequenceNumber: number, commandKey: number | string | Command, clusterKey: number | string | Cluster, payload: ZclPayload, customClusters: CustomClusters, reservedBits?: number): ZclFrame;
18
+ static create(frameType: FrameType, direction: Direction, disableDefaultResponse: boolean, manufacturerCode: number | undefined, transactionSequenceNumber: number, commandKey: number | string | Command | FoundationDefinition, clusterKey: number | string | Cluster, payload: ZclPayload, customClusters: CustomClusters, reservedBits?: number): ZclFrame;
19
19
  toBuffer(): Buffer;
20
20
  private writePayloadGlobal;
21
21
  private writePayloadCluster;
@@ -43,7 +43,7 @@ export interface TFoundationZclFrame<Co extends string> {
43
43
  readonly header: ZclHeader;
44
44
  readonly payload: TFoundationPayload<Co>;
45
45
  readonly cluster: Cluster;
46
- readonly command: Command;
46
+ readonly command: FoundationDefinition;
47
47
  }
48
48
  export {};
49
49
  //# sourceMappingURL=zclFrame.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"zclFrame.d.ts","sourceRoot":"","sources":["../../../src/zspec/zcl/zclFrame.ts"],"names":[],"mappings":"AAAA,OAAO,sCAAsC,CAAC;AAG9C,OAAO,KAAK,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAA+B,SAAS,EAAE,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AAC1G,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAoB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAErH,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAGtC,KAAK,UAAU,GAAG,GAAG,CAAC;AAUtB,qBAAa,QAAQ;IACjB,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,SAAgB,OAAO,EAAE,UAAU,CAAC;IACpC,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,OAAO;IAOA,QAAQ,IAAI,MAAM;IAIzB;;OAEG;WACW,MAAM,CAChB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,sBAAsB,EAAE,OAAO,EAC/B,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,yBAAyB,EAAE,MAAM,EACjC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EACrC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EACrC,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,cAAc,EAC9B,YAAY,SAAI,GACjB,QAAQ;IAqBJ,QAAQ,IAAI,MAAM;IAezB,OAAO,CAAC,kBAAkB;IAuC1B,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;WACW,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,QAAQ;IAiBpI,OAAO,CAAC,MAAM,CAAC,YAAY;IAY3B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAkClC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA6EjC;;OAEG;WAEW,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IA4DlH,SAAS,CAAC,WAAW,EAAE,qBAAqB,GAAG,WAAW,GAAG,OAAO;IAKpE,SAAS,CACZ,WAAW,EAAE,qBAAqB,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,uBAAuB,GACzI,OAAO;CAGb;AAED,MAAM,WAAW,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM;IAC3D,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB,CAAC,EAAE,SAAS,MAAM;IAClD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC7B"}
1
+ {"version":3,"file":"zclFrame.d.ts","sourceRoot":"","sources":["../../../src/zspec/zcl/zclFrame.ts"],"names":[],"mappings":"AACA,OAAO,sCAAsC,CAAC;AAG9C,OAAO,KAAK,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAoC,SAAS,EAAE,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AAC/G,OAAO,KAAK,EAAC,qBAAqB,EAAE,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAEzF,OAAO,KAAK,EAAoB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAErH,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAItC,KAAK,UAAU,GAAG,GAAG,CAAC;AAUtB,qBAAa,QAAQ;IACjB,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,SAAgB,OAAO,EAAE,UAAU,CAAC;IACpC,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAAC;IAExD,OAAO;IAOA,QAAQ,IAAI,MAAM;IAIzB;;OAEG;WACW,MAAM,CAChB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,sBAAsB,EAAE,OAAO,EAC/B,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,yBAAyB,EAAE,MAAM,EACjC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,oBAAoB,EAC5D,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EACrC,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,cAAc,EAC9B,YAAY,SAAI,GACjB,QAAQ;IAqBJ,QAAQ,IAAI,MAAM;IAezB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;WACW,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,QAAQ;IAiBpI,OAAO,CAAC,MAAM,CAAC,YAAY;IAY3B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAkClC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAMjC;;OAEG;WAEW,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAsDlH,SAAS,CAAC,WAAW,EAAE,qBAAqB,GAAG,WAAW,GAAG,OAAO;IAKpE,SAAS,CACZ,WAAW,EAAE,qBAAqB,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,uBAAuB,GACzI,OAAO;CAGb;AAED,MAAM,WAAW,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM;IAC3D,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB,CAAC,EAAE,SAAS,MAAM;IAClD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;CAC1C"}