@willieee802/zigbee-herdsman 0.19.2 → 0.34.3

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 (530) hide show
  1. package/.babelrc.js +0 -4
  2. package/.release-please-manifest.json +1 -2
  3. package/CHANGELOG.md +376 -0
  4. package/README.md +1 -1
  5. package/dist/adapter/adapter.d.ts +61 -61
  6. package/dist/adapter/adapter.d.ts.map +1 -1
  7. package/dist/adapter/adapter.js +158 -146
  8. package/dist/adapter/adapter.js.map +1 -1
  9. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +68 -68
  10. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
  11. package/dist/adapter/deconz/adapter/deconzAdapter.js +1081 -1060
  12. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
  13. package/dist/adapter/deconz/adapter/index.d.ts +2 -2
  14. package/dist/adapter/deconz/adapter/index.js +10 -10
  15. package/dist/adapter/deconz/driver/constants.d.ts +104 -104
  16. package/dist/adapter/deconz/driver/constants.js +55 -55
  17. package/dist/adapter/deconz/driver/driver.d.ts +81 -81
  18. package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
  19. package/dist/adapter/deconz/driver/driver.js +750 -732
  20. package/dist/adapter/deconz/driver/driver.js.map +1 -1
  21. package/dist/adapter/deconz/driver/frame.d.ts +6 -6
  22. package/dist/adapter/deconz/driver/frame.js +13 -13
  23. package/dist/adapter/deconz/driver/frameParser.d.ts +2 -2
  24. package/dist/adapter/deconz/driver/frameParser.js +443 -443
  25. package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
  26. package/dist/adapter/deconz/driver/parser.d.ts +12 -12
  27. package/dist/adapter/deconz/driver/parser.js +63 -61
  28. package/dist/adapter/deconz/driver/parser.js.map +1 -1
  29. package/dist/adapter/deconz/driver/writer.d.ts +8 -8
  30. package/dist/adapter/deconz/driver/writer.js +44 -44
  31. package/dist/adapter/ember/adapter/emberAdapter.d.ts +817 -0
  32. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -0
  33. package/dist/adapter/ember/adapter/emberAdapter.js +2981 -0
  34. package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -0
  35. package/dist/adapter/ember/adapter/endpoints.d.ts +25 -0
  36. package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -0
  37. package/dist/adapter/ember/adapter/endpoints.js +66 -0
  38. package/dist/adapter/ember/adapter/endpoints.js.map +1 -0
  39. package/dist/adapter/ember/adapter/index.d.ts +3 -0
  40. package/dist/adapter/ember/adapter/index.d.ts.map +1 -0
  41. package/dist/adapter/ember/adapter/index.js +6 -0
  42. package/dist/adapter/ember/adapter/index.js.map +1 -0
  43. package/dist/adapter/ember/adapter/oneWaitress.d.ts +97 -0
  44. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -0
  45. package/dist/adapter/ember/adapter/oneWaitress.js +226 -0
  46. package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -0
  47. package/dist/adapter/ember/adapter/requestQueue.d.ts +59 -0
  48. package/dist/adapter/ember/adapter/requestQueue.d.ts.map +1 -0
  49. package/dist/adapter/ember/adapter/requestQueue.js +144 -0
  50. package/dist/adapter/ember/adapter/requestQueue.js.map +1 -0
  51. package/dist/adapter/ember/adapter/tokensManager.d.ts +69 -0
  52. package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -0
  53. package/dist/adapter/ember/adapter/tokensManager.js +685 -0
  54. package/dist/adapter/ember/adapter/tokensManager.js.map +1 -0
  55. package/dist/adapter/ember/consts.d.ts +198 -0
  56. package/dist/adapter/ember/consts.d.ts.map +1 -0
  57. package/dist/adapter/ember/consts.js +253 -0
  58. package/dist/adapter/ember/consts.js.map +1 -0
  59. package/dist/adapter/ember/enums.d.ts +2184 -0
  60. package/dist/adapter/ember/enums.d.ts.map +1 -0
  61. package/dist/adapter/ember/enums.js +2391 -0
  62. package/dist/adapter/ember/enums.js.map +1 -0
  63. package/dist/adapter/ember/ezsp/buffalo.d.ts +156 -0
  64. package/dist/adapter/ember/ezsp/buffalo.d.ts.map +1 -0
  65. package/dist/adapter/ember/ezsp/buffalo.js +1033 -0
  66. package/dist/adapter/ember/ezsp/buffalo.js.map +1 -0
  67. package/dist/adapter/ember/ezsp/consts.d.ts +116 -0
  68. package/dist/adapter/ember/ezsp/consts.d.ts.map +1 -0
  69. package/dist/adapter/ember/ezsp/consts.js +128 -0
  70. package/dist/adapter/ember/ezsp/consts.js.map +1 -0
  71. package/dist/adapter/ember/ezsp/enums.d.ts +879 -0
  72. package/dist/adapter/ember/ezsp/enums.d.ts.map +1 -0
  73. package/dist/adapter/ember/ezsp/enums.js +948 -0
  74. package/dist/adapter/ember/ezsp/enums.js.map +1 -0
  75. package/dist/adapter/ember/ezsp/ezsp.d.ts +2664 -0
  76. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -0
  77. package/dist/adapter/ember/ezsp/ezsp.js +6438 -0
  78. package/dist/adapter/ember/ezsp/ezsp.js.map +1 -0
  79. package/dist/adapter/ember/types.d.ts +733 -0
  80. package/dist/adapter/ember/types.d.ts.map +1 -0
  81. package/dist/adapter/ember/types.js +3 -0
  82. package/dist/adapter/ember/types.js.map +1 -0
  83. package/dist/adapter/ember/uart/ash.d.ts +451 -0
  84. package/dist/adapter/ember/uart/ash.d.ts.map +1 -0
  85. package/dist/adapter/ember/uart/ash.js +1584 -0
  86. package/dist/adapter/ember/uart/ash.js.map +1 -0
  87. package/dist/adapter/ember/uart/consts.d.ts +91 -0
  88. package/dist/adapter/ember/uart/consts.d.ts.map +1 -0
  89. package/dist/adapter/ember/uart/consts.js +100 -0
  90. package/dist/adapter/ember/uart/consts.js.map +1 -0
  91. package/dist/adapter/ember/uart/enums.d.ts +191 -0
  92. package/dist/adapter/ember/uart/enums.d.ts.map +1 -0
  93. package/dist/adapter/ember/uart/enums.js +197 -0
  94. package/dist/adapter/ember/uart/enums.js.map +1 -0
  95. package/dist/adapter/ember/uart/parser.d.ts +10 -0
  96. package/dist/adapter/ember/uart/parser.d.ts.map +1 -0
  97. package/dist/adapter/ember/uart/parser.js +41 -0
  98. package/dist/adapter/ember/uart/parser.js.map +1 -0
  99. package/dist/adapter/ember/uart/queues.d.ts +85 -0
  100. package/dist/adapter/ember/uart/queues.d.ts.map +1 -0
  101. package/dist/adapter/ember/uart/queues.js +212 -0
  102. package/dist/adapter/ember/uart/queues.js.map +1 -0
  103. package/dist/adapter/ember/uart/writer.d.ts +15 -0
  104. package/dist/adapter/ember/uart/writer.d.ts.map +1 -0
  105. package/dist/adapter/ember/uart/writer.js +48 -0
  106. package/dist/adapter/ember/uart/writer.js.map +1 -0
  107. package/dist/adapter/ember/utils/initters.d.ts +20 -0
  108. package/dist/adapter/ember/utils/initters.d.ts.map +1 -0
  109. package/dist/adapter/ember/utils/initters.js +58 -0
  110. package/dist/adapter/ember/utils/initters.js.map +1 -0
  111. package/dist/adapter/ember/utils/math.d.ts +51 -0
  112. package/dist/adapter/ember/utils/math.d.ts.map +1 -0
  113. package/dist/adapter/ember/utils/math.js +102 -0
  114. package/dist/adapter/ember/utils/math.js.map +1 -0
  115. package/dist/adapter/ember/zdo.d.ts +921 -0
  116. package/dist/adapter/ember/zdo.d.ts.map +1 -0
  117. package/dist/adapter/ember/zdo.js +723 -0
  118. package/dist/adapter/ember/zdo.js.map +1 -0
  119. package/dist/adapter/events.d.ts +47 -47
  120. package/dist/adapter/events.js +13 -14
  121. package/dist/adapter/events.js.map +1 -1
  122. package/dist/adapter/ezsp/adapter/backup.d.ts +9 -9
  123. package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
  124. package/dist/adapter/ezsp/adapter/backup.js +72 -53
  125. package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
  126. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +61 -59
  127. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  128. package/dist/adapter/ezsp/adapter/ezspAdapter.js +629 -603
  129. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
  130. package/dist/adapter/ezsp/adapter/index.d.ts +2 -2
  131. package/dist/adapter/ezsp/adapter/index.js +10 -10
  132. package/dist/adapter/ezsp/driver/commands.d.ts +36 -36
  133. package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -1
  134. package/dist/adapter/ezsp/driver/commands.js +2388 -2359
  135. package/dist/adapter/ezsp/driver/commands.js.map +1 -1
  136. package/dist/adapter/ezsp/driver/consts.d.ts +10 -10
  137. package/dist/adapter/ezsp/driver/consts.js +13 -13
  138. package/dist/adapter/ezsp/driver/driver.d.ts +106 -103
  139. package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
  140. package/dist/adapter/ezsp/driver/driver.js +731 -639
  141. package/dist/adapter/ezsp/driver/driver.js.map +1 -1
  142. package/dist/adapter/ezsp/driver/ezsp.d.ts +105 -96
  143. package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
  144. package/dist/adapter/ezsp/driver/ezsp.js +651 -586
  145. package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
  146. package/dist/adapter/ezsp/driver/frame.d.ts +40 -0
  147. package/dist/adapter/ezsp/driver/frame.d.ts.map +1 -0
  148. package/dist/adapter/ezsp/driver/frame.js +101 -0
  149. package/dist/adapter/ezsp/driver/frame.js.map +1 -0
  150. package/dist/adapter/ezsp/driver/index.d.ts +3 -3
  151. package/dist/adapter/ezsp/driver/index.js +8 -8
  152. package/dist/adapter/ezsp/driver/multicast.d.ts +12 -12
  153. package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
  154. package/dist/adapter/ezsp/driver/multicast.js +77 -74
  155. package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
  156. package/dist/adapter/ezsp/driver/parser.d.ts +11 -12
  157. package/dist/adapter/ezsp/driver/parser.d.ts.map +1 -1
  158. package/dist/adapter/ezsp/driver/parser.js +104 -111
  159. package/dist/adapter/ezsp/driver/parser.js.map +1 -1
  160. package/dist/adapter/ezsp/driver/types/basic.d.ts +62 -62
  161. package/dist/adapter/ezsp/driver/types/basic.js +208 -208
  162. package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
  163. package/dist/adapter/ezsp/driver/types/index.d.ts +9 -9
  164. package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
  165. package/dist/adapter/ezsp/driver/types/index.js +138 -133
  166. package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
  167. package/dist/adapter/ezsp/driver/types/named.d.ts +1287 -697
  168. package/dist/adapter/ezsp/driver/types/named.d.ts.map +1 -1
  169. package/dist/adapter/ezsp/driver/types/named.js +2329 -1726
  170. package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
  171. package/dist/adapter/ezsp/driver/types/struct.d.ts +270 -251
  172. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
  173. package/dist/adapter/ezsp/driver/types/struct.js +803 -708
  174. package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
  175. package/dist/adapter/ezsp/driver/uart.d.ts +48 -44
  176. package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
  177. package/dist/adapter/ezsp/driver/uart.js +382 -368
  178. package/dist/adapter/ezsp/driver/uart.js.map +1 -1
  179. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +2 -2
  180. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +55 -55
  181. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -1
  182. package/dist/adapter/ezsp/driver/utils/index.d.ts +18 -18
  183. package/dist/adapter/ezsp/driver/utils/index.js +72 -67
  184. package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
  185. package/dist/adapter/ezsp/driver/writer.d.ts +13 -13
  186. package/dist/adapter/ezsp/driver/writer.d.ts.map +1 -1
  187. package/dist/adapter/ezsp/driver/writer.js +85 -88
  188. package/dist/adapter/ezsp/driver/writer.js.map +1 -1
  189. package/dist/adapter/index.d.ts +4 -4
  190. package/dist/adapter/index.js +35 -35
  191. package/dist/adapter/serialPort.d.ts +10 -8
  192. package/dist/adapter/serialPort.d.ts.map +1 -1
  193. package/dist/adapter/serialPort.js +53 -22
  194. package/dist/adapter/serialPort.js.map +1 -1
  195. package/dist/adapter/serialPortUtils.d.ts +12 -12
  196. package/dist/adapter/serialPortUtils.js +18 -18
  197. package/dist/adapter/serialPortUtils.js.map +1 -1
  198. package/dist/adapter/socketPortUtils.d.ts +10 -10
  199. package/dist/adapter/socketPortUtils.js +16 -16
  200. package/dist/adapter/tstype.d.ts +85 -85
  201. package/dist/adapter/tstype.d.ts.map +1 -1
  202. package/dist/adapter/tstype.js +2 -2
  203. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +62 -62
  204. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
  205. package/dist/adapter/z-stack/adapter/adapter-backup.js +462 -460
  206. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  207. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +150 -150
  208. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +258 -258
  209. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
  210. package/dist/adapter/z-stack/adapter/endpoints.d.ts +11 -11
  211. package/dist/adapter/z-stack/adapter/endpoints.js +73 -73
  212. package/dist/adapter/z-stack/adapter/index.d.ts +2 -2
  213. package/dist/adapter/z-stack/adapter/index.js +8 -8
  214. package/dist/adapter/z-stack/adapter/manager.d.ts +86 -86
  215. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
  216. package/dist/adapter/z-stack/adapter/manager.js +482 -476
  217. package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
  218. package/dist/adapter/z-stack/adapter/tstype.d.ts +6 -6
  219. package/dist/adapter/z-stack/adapter/tstype.js +9 -10
  220. package/dist/adapter/z-stack/adapter/tstype.js.map +1 -1
  221. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +81 -81
  222. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  223. package/dist/adapter/z-stack/adapter/zStackAdapter.js +891 -868
  224. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  225. package/dist/adapter/z-stack/constants/af.d.ts +23 -23
  226. package/dist/adapter/z-stack/constants/af.js +27 -27
  227. package/dist/adapter/z-stack/constants/common.d.ts +278 -278
  228. package/dist/adapter/z-stack/constants/common.d.ts.map +1 -1
  229. package/dist/adapter/z-stack/constants/common.js +292 -289
  230. package/dist/adapter/z-stack/constants/common.js.map +1 -1
  231. package/dist/adapter/z-stack/constants/dbg.d.ts +22 -22
  232. package/dist/adapter/z-stack/constants/dbg.js +24 -24
  233. package/dist/adapter/z-stack/constants/index.d.ts +10 -10
  234. package/dist/adapter/z-stack/constants/index.js +47 -47
  235. package/dist/adapter/z-stack/constants/mac.d.ts +127 -127
  236. package/dist/adapter/z-stack/constants/mac.js +129 -129
  237. package/dist/adapter/z-stack/constants/sapi.d.ts +24 -24
  238. package/dist/adapter/z-stack/constants/sapi.js +26 -26
  239. package/dist/adapter/z-stack/constants/sys.d.ts +71 -71
  240. package/dist/adapter/z-stack/constants/sys.js +73 -73
  241. package/dist/adapter/z-stack/constants/util.d.ts +81 -81
  242. package/dist/adapter/z-stack/constants/util.js +83 -83
  243. package/dist/adapter/z-stack/constants/utils.d.ts +4 -4
  244. package/dist/adapter/z-stack/constants/utils.js +14 -14
  245. package/dist/adapter/z-stack/constants/zdo.d.ts +102 -102
  246. package/dist/adapter/z-stack/constants/zdo.js +104 -104
  247. package/dist/adapter/z-stack/models/index.d.ts +1 -1
  248. package/dist/adapter/z-stack/models/index.js +17 -17
  249. package/dist/adapter/z-stack/models/startup-options.d.ts +12 -12
  250. package/dist/adapter/z-stack/models/startup-options.js +2 -2
  251. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +23 -23
  252. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +45 -45
  253. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +1 -1
  254. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +10 -10
  255. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +22 -22
  256. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +10 -10
  257. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +21 -21
  258. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +10 -10
  259. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +23 -23
  260. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +10 -10
  261. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +24 -24
  262. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +10 -10
  263. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +23 -23
  264. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +8 -8
  265. package/dist/adapter/z-stack/structs/entries/channel-list.js +15 -15
  266. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +8 -8
  267. package/dist/adapter/z-stack/structs/entries/has-configured.js +16 -16
  268. package/dist/adapter/z-stack/structs/entries/index.d.ts +16 -16
  269. package/dist/adapter/z-stack/structs/entries/index.js +32 -32
  270. package/dist/adapter/z-stack/structs/entries/nib.d.ts +10 -10
  271. package/dist/adapter/z-stack/structs/entries/nib.js +68 -68
  272. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +10 -10
  273. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +18 -18
  274. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +8 -8
  275. package/dist/adapter/z-stack/structs/entries/nwk-key.js +15 -15
  276. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +8 -8
  277. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +15 -15
  278. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +13 -13
  279. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +23 -23
  280. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +10 -10
  281. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +22 -22
  282. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +20 -20
  283. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +36 -36
  284. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +1 -1
  285. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +10 -10
  286. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +24 -24
  287. package/dist/adapter/z-stack/structs/index.d.ts +4 -4
  288. package/dist/adapter/z-stack/structs/index.js +20 -20
  289. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +13 -13
  290. package/dist/adapter/z-stack/structs/serializable-memory-object.js +2 -2
  291. package/dist/adapter/z-stack/structs/struct.d.ts +99 -99
  292. package/dist/adapter/z-stack/structs/struct.js +296 -295
  293. package/dist/adapter/z-stack/structs/struct.js.map +1 -1
  294. package/dist/adapter/z-stack/structs/table.d.ts +94 -94
  295. package/dist/adapter/z-stack/structs/table.js +163 -161
  296. package/dist/adapter/z-stack/structs/table.js.map +1 -1
  297. package/dist/adapter/z-stack/unpi/constants.d.ts +28 -28
  298. package/dist/adapter/z-stack/unpi/constants.js +39 -41
  299. package/dist/adapter/z-stack/unpi/constants.js.map +1 -1
  300. package/dist/adapter/z-stack/unpi/frame.d.ts +16 -16
  301. package/dist/adapter/z-stack/unpi/frame.js +54 -48
  302. package/dist/adapter/z-stack/unpi/frame.js.map +1 -1
  303. package/dist/adapter/z-stack/unpi/index.d.ts +5 -5
  304. package/dist/adapter/z-stack/unpi/index.js +37 -37
  305. package/dist/adapter/z-stack/unpi/parser.d.ts +10 -10
  306. package/dist/adapter/z-stack/unpi/parser.js +75 -74
  307. package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
  308. package/dist/adapter/z-stack/unpi/writer.d.ts +10 -10
  309. package/dist/adapter/z-stack/unpi/writer.js +44 -44
  310. package/dist/adapter/z-stack/utils/channel-list.d.ts +20 -20
  311. package/dist/adapter/z-stack/utils/channel-list.js +40 -40
  312. package/dist/adapter/z-stack/utils/channel-list.js.map +1 -1
  313. package/dist/adapter/z-stack/utils/index.d.ts +2 -2
  314. package/dist/adapter/z-stack/utils/index.js +18 -18
  315. package/dist/adapter/z-stack/utils/network-options.d.ts +8 -8
  316. package/dist/adapter/z-stack/utils/network-options.js +22 -22
  317. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +11 -11
  318. package/dist/adapter/z-stack/znp/buffaloZnp.js +113 -113
  319. package/dist/adapter/z-stack/znp/buffaloZnp.js.map +1 -1
  320. package/dist/adapter/z-stack/znp/definition.d.ts +5 -5
  321. package/dist/adapter/z-stack/znp/definition.js +3050 -3050
  322. package/dist/adapter/z-stack/znp/index.d.ts +3 -3
  323. package/dist/adapter/z-stack/znp/index.js +10 -10
  324. package/dist/adapter/z-stack/znp/parameterType.d.ts +22 -22
  325. package/dist/adapter/z-stack/znp/parameterType.js +25 -25
  326. package/dist/adapter/z-stack/znp/tstype.d.ts +21 -21
  327. package/dist/adapter/z-stack/znp/tstype.js +2 -2
  328. package/dist/adapter/z-stack/znp/znp.d.ts +44 -43
  329. package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
  330. package/dist/adapter/z-stack/znp/znp.js +326 -325
  331. package/dist/adapter/z-stack/znp/znp.js.map +1 -1
  332. package/dist/adapter/z-stack/znp/zpiObject.d.ts +19 -19
  333. package/dist/adapter/z-stack/znp/zpiObject.js +102 -96
  334. package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
  335. package/dist/adapter/zigate/adapter/index.d.ts +2 -2
  336. package/dist/adapter/zigate/adapter/index.js +10 -10
  337. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +70 -69
  338. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
  339. package/dist/adapter/zigate/adapter/zigateAdapter.js +689 -678
  340. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
  341. package/dist/adapter/zigate/debug.d.ts +7 -7
  342. package/dist/adapter/zigate/debug.d.ts.map +1 -1
  343. package/dist/adapter/zigate/debug.js +19 -22
  344. package/dist/adapter/zigate/debug.js.map +1 -1
  345. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +18 -18
  346. package/dist/adapter/zigate/driver/buffaloZiGate.js +139 -139
  347. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
  348. package/dist/adapter/zigate/driver/commandType.d.ts +41 -41
  349. package/dist/adapter/zigate/driver/commandType.js +385 -385
  350. package/dist/adapter/zigate/driver/commandType.js.map +1 -1
  351. package/dist/adapter/zigate/driver/constants.d.ts +276 -276
  352. package/dist/adapter/zigate/driver/constants.d.ts.map +1 -1
  353. package/dist/adapter/zigate/driver/constants.js +371 -371
  354. package/dist/adapter/zigate/driver/constants.js.map +1 -1
  355. package/dist/adapter/zigate/driver/frame.d.ts +26 -26
  356. package/dist/adapter/zigate/driver/frame.js +172 -172
  357. package/dist/adapter/zigate/driver/frame.js.map +1 -1
  358. package/dist/adapter/zigate/driver/messageType.d.ts +11 -11
  359. package/dist/adapter/zigate/driver/messageType.js +278 -278
  360. package/dist/adapter/zigate/driver/messageType.js.map +1 -1
  361. package/dist/adapter/zigate/driver/parameterType.d.ts +20 -20
  362. package/dist/adapter/zigate/driver/parameterType.js +23 -23
  363. package/dist/adapter/zigate/driver/ziGateObject.d.ts +23 -23
  364. package/dist/adapter/zigate/driver/ziGateObject.js +110 -106
  365. package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
  366. package/dist/adapter/zigate/driver/zigate.d.ts +49 -49
  367. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
  368. package/dist/adapter/zigate/driver/zigate.js +296 -303
  369. package/dist/adapter/zigate/driver/zigate.js.map +1 -1
  370. package/dist/buffalo/buffalo.d.ts +50 -50
  371. package/dist/buffalo/buffalo.js +324 -322
  372. package/dist/buffalo/buffalo.js.map +1 -1
  373. package/dist/buffalo/index.d.ts +3 -3
  374. package/dist/buffalo/index.js +33 -33
  375. package/dist/buffalo/tstype.d.ts +8 -8
  376. package/dist/buffalo/tstype.js +2 -2
  377. package/dist/controller/controller.d.ts +113 -113
  378. package/dist/controller/controller.d.ts.map +1 -1
  379. package/dist/controller/controller.js +641 -619
  380. package/dist/controller/controller.js.map +1 -1
  381. package/dist/controller/database.d.ts +18 -18
  382. package/dist/controller/database.js +96 -93
  383. package/dist/controller/database.js.map +1 -1
  384. package/dist/controller/events.d.ts +58 -58
  385. package/dist/controller/events.d.ts.map +1 -1
  386. package/dist/controller/events.js +108 -101
  387. package/dist/controller/events.js.map +1 -1
  388. package/dist/controller/greenPower.d.ts +12 -12
  389. package/dist/controller/greenPower.js +221 -220
  390. package/dist/controller/greenPower.js.map +1 -1
  391. package/dist/controller/helpers/index.d.ts +2 -2
  392. package/dist/controller/helpers/index.js +28 -28
  393. package/dist/controller/helpers/request.d.ts +21 -22
  394. package/dist/controller/helpers/request.d.ts.map +1 -1
  395. package/dist/controller/helpers/request.js +77 -71
  396. package/dist/controller/helpers/request.js.map +1 -1
  397. package/dist/controller/helpers/requestQueue.d.ts +13 -0
  398. package/dist/controller/helpers/requestQueue.d.ts.map +1 -0
  399. package/dist/controller/helpers/requestQueue.js +116 -0
  400. package/dist/controller/helpers/requestQueue.js.map +1 -0
  401. package/dist/controller/helpers/zclFrameConverter.d.ts +7 -7
  402. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  403. package/dist/controller/helpers/zclFrameConverter.js +50 -31
  404. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  405. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +5 -5
  406. package/dist/controller/helpers/zclTransactionSequenceNumber.js +13 -13
  407. package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +1 -1
  408. package/dist/controller/index.d.ts +5 -5
  409. package/dist/controller/index.js +8 -8
  410. package/dist/controller/logger-stub.d.ts +6 -6
  411. package/dist/controller/logger-stub.js +2 -2
  412. package/dist/controller/model/device.d.ts +132 -133
  413. package/dist/controller/model/device.d.ts.map +1 -1
  414. package/dist/controller/model/device.js +724 -717
  415. package/dist/controller/model/device.js.map +1 -1
  416. package/dist/controller/model/endpoint.d.ts +128 -131
  417. package/dist/controller/model/endpoint.d.ts.map +1 -1
  418. package/dist/controller/model/endpoint.js +755 -816
  419. package/dist/controller/model/endpoint.js.map +1 -1
  420. package/dist/controller/model/entity.d.ts +14 -14
  421. package/dist/controller/model/entity.js +26 -26
  422. package/dist/controller/model/entity.js.map +1 -1
  423. package/dist/controller/model/group.d.ts +38 -38
  424. package/dist/controller/model/group.d.ts.map +1 -1
  425. package/dist/controller/model/group.js +225 -221
  426. package/dist/controller/model/group.js.map +1 -1
  427. package/dist/controller/model/index.d.ts +5 -5
  428. package/dist/controller/model/index.js +14 -14
  429. package/dist/controller/touchlink.d.ts +19 -19
  430. package/dist/controller/touchlink.js +159 -157
  431. package/dist/controller/touchlink.js.map +1 -1
  432. package/dist/controller/tstype.d.ts +20 -21
  433. package/dist/controller/tstype.d.ts.map +1 -1
  434. package/dist/controller/tstype.js +8 -9
  435. package/dist/controller/tstype.js.map +1 -1
  436. package/dist/index.d.ts +3 -3
  437. package/dist/index.js +33 -33
  438. package/dist/models/backup-storage-legacy.d.ts +26 -26
  439. package/dist/models/backup-storage-legacy.js +2 -2
  440. package/dist/models/backup-storage-unified.d.ts +49 -49
  441. package/dist/models/backup-storage-unified.js +2 -2
  442. package/dist/models/backup.d.ts +37 -37
  443. package/dist/models/backup.js +2 -2
  444. package/dist/models/index.d.ts +4 -4
  445. package/dist/models/index.js +20 -20
  446. package/dist/models/network-options.d.ts +12 -12
  447. package/dist/models/network-options.js +2 -2
  448. package/dist/utils/assertString.d.ts +2 -2
  449. package/dist/utils/assertString.js +8 -8
  450. package/dist/utils/assertString.js.map +1 -1
  451. package/dist/utils/backup.d.ts +20 -20
  452. package/dist/utils/backup.d.ts.map +1 -1
  453. package/dist/utils/backup.js +189 -187
  454. package/dist/utils/backup.js.map +1 -1
  455. package/dist/utils/equalsPartial.d.ts +2 -2
  456. package/dist/utils/equalsPartial.js +11 -11
  457. package/dist/utils/index.d.ts +9 -9
  458. package/dist/utils/index.js +45 -45
  459. package/dist/utils/isNumberArray.d.ts +2 -2
  460. package/dist/utils/isNumberArray.js +6 -6
  461. package/dist/utils/queue.d.ts +11 -11
  462. package/dist/utils/queue.d.ts.map +1 -1
  463. package/dist/utils/queue.js +61 -50
  464. package/dist/utils/queue.js.map +1 -1
  465. package/dist/utils/realpathSync.d.ts +2 -2
  466. package/dist/utils/realpathSync.js +12 -12
  467. package/dist/utils/wait.d.ts +2 -2
  468. package/dist/utils/wait.js +8 -8
  469. package/dist/utils/waitress.d.ts +21 -21
  470. package/dist/utils/waitress.d.ts.map +1 -1
  471. package/dist/utils/waitress.js +68 -61
  472. package/dist/utils/waitress.js.map +1 -1
  473. package/dist/zcl/buffaloZcl.d.ts +41 -41
  474. package/dist/zcl/buffaloZcl.d.ts.map +1 -1
  475. package/dist/zcl/buffaloZcl.js +594 -591
  476. package/dist/zcl/buffaloZcl.js.map +1 -1
  477. package/dist/zcl/definition/buffaloZclDataType.d.ts +17 -17
  478. package/dist/zcl/definition/buffaloZclDataType.js +20 -20
  479. package/dist/zcl/definition/cluster.d.ts +29 -29
  480. package/dist/zcl/definition/cluster.d.ts.map +1 -1
  481. package/dist/zcl/definition/cluster.js +5520 -5335
  482. package/dist/zcl/definition/cluster.js.map +1 -1
  483. package/dist/zcl/definition/dataType.d.ts +59 -59
  484. package/dist/zcl/definition/dataType.js +64 -64
  485. package/dist/zcl/definition/direction.d.ts +5 -5
  486. package/dist/zcl/definition/direction.js +8 -8
  487. package/dist/zcl/definition/endpointDeviceType.d.ts +4 -4
  488. package/dist/zcl/definition/endpointDeviceType.js +15 -15
  489. package/dist/zcl/definition/foundation.d.ts +11 -11
  490. package/dist/zcl/definition/foundation.js +167 -167
  491. package/dist/zcl/definition/frameControl.d.ts +10 -10
  492. package/dist/zcl/definition/frameControl.js +2 -2
  493. package/dist/zcl/definition/frameType.d.ts +5 -5
  494. package/dist/zcl/definition/frameType.js +8 -8
  495. package/dist/zcl/definition/index.d.ts +13 -13
  496. package/dist/zcl/definition/index.js +51 -51
  497. package/dist/zcl/definition/manufacturerCode.d.ts +1077 -1074
  498. package/dist/zcl/definition/manufacturerCode.d.ts.map +1 -1
  499. package/dist/zcl/definition/manufacturerCode.js +1082 -1079
  500. package/dist/zcl/definition/manufacturerCode.js.map +1 -1
  501. package/dist/zcl/definition/powerSource.d.ts +4 -4
  502. package/dist/zcl/definition/powerSource.js +12 -12
  503. package/dist/zcl/definition/status.d.ts +38 -38
  504. package/dist/zcl/definition/status.js +41 -41
  505. package/dist/zcl/definition/tstype.d.ts +16 -16
  506. package/dist/zcl/definition/tstype.js +2 -2
  507. package/dist/zcl/index.d.ts +16 -15
  508. package/dist/zcl/index.d.ts.map +1 -1
  509. package/dist/zcl/index.js +55 -55
  510. package/dist/zcl/index.js.map +1 -1
  511. package/dist/zcl/tstype.d.ts +56 -56
  512. package/dist/zcl/tstype.js +9 -10
  513. package/dist/zcl/tstype.js.map +1 -1
  514. package/dist/zcl/utils.d.ts +6 -6
  515. package/dist/zcl/utils.js +164 -165
  516. package/dist/zcl/utils.js.map +1 -1
  517. package/dist/zcl/zclFrame.d.ts +40 -45
  518. package/dist/zcl/zclFrame.d.ts.map +1 -1
  519. package/dist/zcl/zclFrame.js +351 -347
  520. package/dist/zcl/zclFrame.js.map +1 -1
  521. package/dist/zcl/zclHeader.d.ts +9 -0
  522. package/dist/zcl/zclHeader.d.ts.map +1 -0
  523. package/dist/zcl/zclHeader.js +3 -0
  524. package/dist/zcl/zclHeader.js.map +1 -0
  525. package/dist/zcl/zclStatusError.d.ts +5 -5
  526. package/dist/zcl/zclStatusError.js +14 -13
  527. package/dist/zcl/zclStatusError.js.map +1 -1
  528. package/package.json +11 -11
  529. package/release-please-config.json +1 -5
  530. package/tsconfig.json +4 -2
@@ -1,444 +1,444 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- /* istanbul ignore file */
7
- /* eslint-disable */
8
- const MIN_BUFFER_SIZE = 3;
9
- const littleEndian = true;
10
- const constants_1 = __importDefault(require("./constants"));
11
- const driver_1 = require("./driver");
12
- const debug_1 = __importDefault(require("debug"));
13
- const debug = (0, debug_1.default)('zigbee-herdsman:deconz:frameParser');
14
- var lastReceivedGpInd = { srcId: 0, commandId: 0, frameCounter: 0 };
15
- var events = require('events');
16
- var frameParserEvents = new events.EventEmitter();
17
- module.exports.frameParserEvents = frameParserEvents;
18
- function parseReadParameterResponse(view) {
19
- const parameterId = view.getUint8(7);
20
- switch (parameterId) {
21
- case constants_1.default.PARAM.Network.MAC:
22
- const mac = view.getBigUint64(8, littleEndian).toString(16);
23
- let result = mac;
24
- while (result.length < 16) {
25
- result = "0" + result;
26
- }
27
- result = "0x" + result;
28
- debug(`MAC: ${result}`);
29
- return result;
30
- case constants_1.default.PARAM.Network.PAN_ID:
31
- const panId = view.getUint16(8, littleEndian);
32
- debug('PANID: ' + panId.toString(16));
33
- return panId;
34
- case constants_1.default.PARAM.Network.NWK_ADDRESS:
35
- const nwkAddr = view.getUint16(8, littleEndian);
36
- debug('NWKADDR: ' + nwkAddr.toString(16));
37
- return nwkAddr;
38
- case constants_1.default.PARAM.Network.EXT_PAN_ID:
39
- const extPanId = view.getBigUint64(8, littleEndian).toString(16);
40
- let res = extPanId;
41
- while (res.length < 16) {
42
- res = "0" + res;
43
- }
44
- res = "0x" + res;
45
- debug(`EXT_PANID: ${res}`);
46
- return res;
47
- case constants_1.default.PARAM.Network.APS_EXT_PAN_ID:
48
- const apsExtPanId = view.getBigUint64(8, littleEndian).toString(16);
49
- let resAEPID = apsExtPanId;
50
- while (resAEPID.length < 16) {
51
- resAEPID = "0" + resAEPID;
52
- }
53
- resAEPID = "0x" + resAEPID;
54
- debug(`APS_EXT_PANID: ${resAEPID}`);
55
- return resAEPID;
56
- case constants_1.default.PARAM.Network.NETWORK_KEY:
57
- const networkKey1 = view.getBigUint64(9).toString(16);
58
- let res1 = networkKey1;
59
- while (res1.length < 16) {
60
- res1 = "0" + res1;
61
- }
62
- const networkKey2 = view.getBigUint64(17).toString(16);
63
- let res2 = networkKey2;
64
- while (res2.length < 16) {
65
- res2 = "0" + res2;
66
- }
67
- debug('NETWORK_KEY: hidden');
68
- return "0x" + res1 + res2;
69
- case constants_1.default.PARAM.Network.CHANNEL:
70
- const channel = view.getUint8(8);
71
- debug('CHANNEL: ' + channel);
72
- return channel;
73
- case constants_1.default.PARAM.Network.CHANNEL_MASK:
74
- const chMask = view.getUint32(8, littleEndian);
75
- debug('CHANNELMASK: ' + chMask.toString(16));
76
- return chMask;
77
- case constants_1.default.PARAM.Network.PERMIT_JOIN:
78
- const permitJoin = view.getUint8(8);
79
- debug('PERMIT_JOIN: ' + permitJoin);
80
- return permitJoin;
81
- case constants_1.default.PARAM.Network.WATCHDOG_TTL:
82
- const ttl = view.getUint32(8);
83
- debug('WATCHDOG_TTL: ' + ttl);
84
- return ttl;
85
- default:
86
- //throw new Error(`unknown parameter id ${parameterId}`);
87
- debug(`unknown parameter id ${parameterId}`);
88
- return null;
89
- }
90
- }
91
- function parseReadFirmwareResponse(view) {
92
- const fw = [view.getUint8(5), view.getUint8(6), view.getUint8(7), view.getUint8(8)];
93
- debug("read firmware version response - version: " + fw);
94
- return fw;
95
- }
96
- function parseDeviceStateResponse(view) {
97
- const flag = view.getUint8(5);
98
- debug("device state: " + flag.toString(2));
99
- frameParserEvents.emit('receivedDataNotification', flag);
100
- return flag;
101
- }
102
- function parseChangeNetworkStateResponse(view) {
103
- const status = view.getUint8(2);
104
- const state = view.getUint8(5);
105
- debug("change network state - status: " + status + " new state: " + state);
106
- return state;
107
- }
108
- function parseQuerySendDataStateResponse(view) {
109
- try {
110
- const response = {};
111
- let buf2, buf3;
112
- response.commandId = view.getUint8(0);
113
- response.seqNr = view.getUint8(1);
114
- response.status = view.getUint8(2);
115
- if (response.status !== 0) {
116
- if (response.status !== 5) {
117
- debug("DATA_CONFIRM RESPONSE - seqNr.: " + response.seqNr + " status: " + response.status);
118
- }
119
- return null;
120
- }
121
- response.frameLength = 7;
122
- response.payloadLength = view.getUint16(5, littleEndian);
123
- response.deviceState = view.getUint8(7);
124
- response.requestId = view.getUint8(8);
125
- response.destAddrMode = view.getUint8(9);
126
- let destAddr = "";
127
- if (response.destAddrMode === 0x03) {
128
- let res = view.getBigUint64(10, littleEndian).toString(16);
129
- while (res.length < 16) {
130
- res = "0" + res;
131
- }
132
- response.destAddr64 = res;
133
- buf2 = view.buffer.slice(18, view.buffer.byteLength);
134
- destAddr = response.destAddr64;
135
- }
136
- else {
137
- response.destAddr16 = view.getUint16(10, littleEndian);
138
- buf2 = view.buffer.slice(12, view.buffer.byteLength);
139
- destAddr = response.destAddr16.toString(16);
140
- }
141
- if (response.destAddrMode === 0x02 || response.destAddrMode === 0x03) {
142
- response.destEndpoint = view.getUint8(view.byteLength - 7);
143
- }
144
- response.srcEndpoint = view.getUint8(view.byteLength - 6);
145
- response.confirmStatus = view.getInt8(view.byteLength - 5);
146
- let newStatus = response.deviceState.toString(2);
147
- for (let l = 0; l <= (8 - newStatus.length); l++) {
148
- newStatus = "0" + newStatus;
149
- }
150
- // resolve send data request promise
151
- const i = driver_1.apsBusyQueue.findIndex((r) => (r.request && r.request.requestId === response.requestId));
152
- if (i < 0) {
153
- return;
154
- }
155
- clearTimeout(driver_1.enableRtsTimeout);
156
- (0, driver_1.enableRTS)(); // enable ReadyToSend because confirm received
157
- const req = driver_1.apsBusyQueue[i];
158
- // TODO timeout (at driver.ts)
159
- if (response.confirmStatus !== 0) {
160
- // reject if status is not SUCCESS
161
- //debug("REJECT APS_REQUEST - request id: " + response.requestId + " confirm status: " + response.confirmStatus);
162
- req.reject(response.confirmStatus);
163
- }
164
- else {
165
- //debug("RESOLVE APS_REQUEST - request id: " + response.requestId + " confirm status: " + response.confirmStatus);
166
- req.resolve(response.confirmStatus);
167
- }
168
- //remove from busyqueue
169
- driver_1.apsBusyQueue.splice(i, 1);
170
- debug("DATA_CONFIRM RESPONSE - destAddr: 0x" + destAddr + " request id: " + response.requestId + " confirm status: " + response.confirmStatus);
171
- frameParserEvents.emit('receivedDataNotification', response.deviceState);
172
- return response;
173
- }
174
- catch (error) {
175
- debug("DATA_CONFIRM RESPONSE - " + error);
176
- return null;
177
- }
178
- }
179
- function parseReadReceivedDataResponse(view) {
180
- // min 28 bytelength
181
- try {
182
- const response = {};
183
- let buf2, buf3;
184
- response.commandId = view.getUint8(0);
185
- response.seqNr = view.getUint8(1);
186
- response.status = view.getUint8(2);
187
- if (response.status != 0) {
188
- if (response.status !== 5) {
189
- debug("DATA_INDICATION RESPONSE - seqNr.: " + response.seqNr + " status: " + response.status);
190
- }
191
- return null;
192
- }
193
- response.frameLength = view.getUint16(3, littleEndian);
194
- response.payloadLength = view.getUint16(5, littleEndian);
195
- response.deviceState = view.getUint8(7);
196
- response.destAddrMode = view.getUint8(8);
197
- let destAddr = "";
198
- if (response.destAddrMode === 0x03) {
199
- let res = view.getBigUint64(9, littleEndian).toString(16);
200
- while (res.length < 16) {
201
- res = "0" + res;
202
- }
203
- response.destAddr64 = res;
204
- buf2 = view.buffer.slice(17, view.buffer.byteLength);
205
- destAddr = response.destAddr64;
206
- }
207
- else {
208
- response.destAddr16 = view.getUint16(9, littleEndian);
209
- buf2 = view.buffer.slice(11, view.buffer.byteLength);
210
- destAddr = response.destAddr16.toString(16);
211
- }
212
- view = new DataView(buf2);
213
- response.destEndpoint = view.getUint8(0);
214
- response.srcAddrMode = view.getUint8(1);
215
- let srcAddr = "";
216
- if (response.srcAddrMode === 0x02 || response.srcAddrMode === 0x04) {
217
- response.srcAddr16 = view.getUint16(2, littleEndian);
218
- buf3 = view.buffer.slice(4, view.buffer.byteLength);
219
- srcAddr = response.srcAddr16.toString(16);
220
- }
221
- if (response.srcAddrMode === 0x03 || response.srcAddrMode === 0x04) {
222
- let res = view.getBigUint64(2, littleEndian).toString(16);
223
- while (res.length < 16) {
224
- res = "0" + res;
225
- }
226
- response.srcAddr64 = res;
227
- buf3 = view.buffer.slice(10, view.buffer.byteLength);
228
- srcAddr = response.srcAddr64;
229
- }
230
- view = new DataView(buf3);
231
- response.srcEndpoint = view.getUint8(0);
232
- response.profileId = view.getUint16(1, littleEndian);
233
- response.clusterId = view.getUint16(3, littleEndian);
234
- response.asduLength = view.getUint16(5, littleEndian);
235
- let payload = [];
236
- let i = 0;
237
- for (let u = 7; u < (response.asduLength + 7); u++) {
238
- payload[i] = view.getUint8(u);
239
- i++;
240
- }
241
- response.asduPayload = payload;
242
- response.lqi = view.getUint8(view.byteLength - 8);
243
- response.rssi = view.getInt8(view.byteLength - 3);
244
- let newStatus = response.deviceState.toString(2);
245
- for (let l = 0; l <= (8 - newStatus.length); l++) {
246
- newStatus = "0" + newStatus;
247
- }
248
- debug("DATA_INDICATION RESPONSE - seqNr. " + response.seqNr + " srcAddr: 0x" + srcAddr + " destAddr: 0x" + destAddr + " profile id: 0x" + response.profileId.toString(16) + " cluster id: 0x" + response.clusterId.toString(16) + " lqi: " + response.lqi);
249
- debug("response payload: " + payload);
250
- frameParserEvents.emit('receivedDataPayload', response);
251
- frameParserEvents.emit('receivedDataNotification', response.deviceState);
252
- return response;
253
- }
254
- catch (error) {
255
- debug("DATA_INDICATION RESPONSE - " + error);
256
- return null;
257
- }
258
- }
259
- function parseEnqueueSendDataResponse(view) {
260
- try {
261
- const status = view.getUint8(2);
262
- const requestId = view.getUint8(8);
263
- const deviceState = view.getUint8(7);
264
- debug("DATA_REQUEST RESPONSE - request id: " + requestId + " status: " + status);
265
- frameParserEvents.emit('receivedDataNotification', deviceState);
266
- return deviceState;
267
- }
268
- catch (error) {
269
- debug("parseEnqueueSendDataResponse - " + error);
270
- return null;
271
- }
272
- }
273
- function parseWriteParameterResponse(view) {
274
- try {
275
- const parameterId = view.getUint8(7);
276
- debug(`write parameter response - parameter id: ${parameterId} - status: ${view.getUint8(2)}`);
277
- return parameterId;
278
- }
279
- catch (error) {
280
- debug("parseWriteParameterResponse - " + error);
281
- return null;
282
- }
283
- }
284
- function parseReceivedDataNotification(view) {
285
- try {
286
- const deviceState = view.getUint8(5);
287
- debug("DEVICE_STATE changed: " + deviceState.toString(2));
288
- frameParserEvents.emit('receivedDataNotification', deviceState);
289
- return deviceState;
290
- }
291
- catch (error) {
292
- debug("parseReceivedDataNotification - " + error);
293
- return null;
294
- }
295
- }
296
- function parseGreenPowerDataIndication(view) {
297
- try {
298
- const ind = {};
299
- ind.seqNr = view.getUint8(1);
300
- if (view.byteLength < 30) {
301
- debug("GP data notification");
302
- ind.id = 0x00; // 0 = notification, 4 = commissioning
303
- ind.rspId = 0x01; // 1 = pairing, 2 = commissioning
304
- ind.options = 0;
305
- view.getUint16(7, littleEndian); // frame ctrl field(7) ext.fcf(8)
306
- ind.srcId = view.getUint32(9, littleEndian);
307
- ind.frameCounter = view.getUint32(13, littleEndian);
308
- ind.commandId = view.getUint8(17);
309
- ind.commandFrameSize = view.byteLength - 18 - 6; // cut 18 from begin and 4 (sec mic) and 2 from end (cfc)
310
- let payload = [];
311
- let i = 0;
312
- for (let u = 18; u < (ind.commandFrameSize + 18); u++) {
313
- payload[i] = view.getUint8(u);
314
- i++;
315
- }
316
- ind.commandFrame = payload;
317
- }
318
- else {
319
- debug("GP commissioning notification");
320
- ind.id = 0x04; // 0 = notification, 4 = commissioning
321
- ind.rspId = 0x01; // 1 = pairing, 2 = commissioning
322
- ind.options = view.getUint16(14, littleEndian); // opt(14) ext.opt(15)
323
- ind.srcId = view.getUint32(8, littleEndian);
324
- ind.frameCounter = view.getUint32(36, littleEndian);
325
- ind.commandId = view.getUint8(12);
326
- ind.commandFrameSize = view.byteLength - 13 - 2; // cut 13 from begin and 2 from end (cfc)
327
- let payload = [];
328
- let i = 0;
329
- for (let u = 13; u < (ind.commandFrameSize + 13); u++) {
330
- payload[i] = view.getUint8(u);
331
- i++;
332
- }
333
- ind.commandFrame = payload;
334
- }
335
- if (!(lastReceivedGpInd.srcId === ind.srcId &&
336
- lastReceivedGpInd.commandId === ind.commandId &&
337
- lastReceivedGpInd.frameCounter === ind.frameCounter)) {
338
- lastReceivedGpInd.srcId = ind.srcId;
339
- lastReceivedGpInd.commandId = ind.commandId;
340
- lastReceivedGpInd.frameCounter = ind.frameCounter;
341
- //debug(`GP_DATA_INDICATION - src id: ${ind.srcId} cmd id: ${ind.commandId} frameCounter: ${ind.frameCounter}`);
342
- debug(`GP_DATA_INDICATION - src id: 0x${ind.srcId.toString(16)} cmd id: 0x${ind.commandId.toString(16)} frameCounter: 0x${ind.frameCounter.toString(16)}`);
343
- frameParserEvents.emit('receivedGreenPowerIndication', ind);
344
- }
345
- return ind;
346
- }
347
- catch (error) {
348
- debug("GREEN_POWER INDICATION - " + error);
349
- return null;
350
- }
351
- }
352
- function parseMacPollCommand(view) {
353
- //debug("Received command MAC_POLL");
354
- return 28;
355
- }
356
- function parseBeaconRequest(view) {
357
- debug("Received Beacon Request");
358
- return 31;
359
- }
360
- function parseUnknownCommand(view) {
361
- const id = view.getUint8(0);
362
- debug(`received unknown command - id ${id}`);
363
- return id;
364
- }
365
- function getParserForCommandId(id) {
366
- switch (id) {
367
- case constants_1.default.PARAM.FrameType.ReadParameter:
368
- return parseReadParameterResponse;
369
- case constants_1.default.PARAM.FrameType.WriteParameter:
370
- return parseWriteParameterResponse;
371
- case constants_1.default.PARAM.FrameType.ReadFirmwareVersion:
372
- return parseReadFirmwareResponse;
373
- case constants_1.default.PARAM.FrameType.ReadDeviceState:
374
- return parseDeviceStateResponse;
375
- case constants_1.default.PARAM.APS.DATA_INDICATION:
376
- return parseReadReceivedDataResponse;
377
- case constants_1.default.PARAM.APS.DATA_REQUEST:
378
- return parseEnqueueSendDataResponse;
379
- case constants_1.default.PARAM.APS.DATA_CONFIRM:
380
- return parseQuerySendDataStateResponse;
381
- case constants_1.default.PARAM.FrameType.DeviceStateChanged:
382
- return parseReceivedDataNotification;
383
- case constants_1.default.PARAM.NetworkState.CHANGE_NETWORK_STATE:
384
- return parseChangeNetworkStateResponse;
385
- case constants_1.default.PARAM.FrameType.GreenPowerDataInd:
386
- return parseGreenPowerDataIndication;
387
- case 28:
388
- return parseMacPollCommand;
389
- case 31:
390
- return parseBeaconRequest;
391
- default:
392
- return parseUnknownCommand;
393
- //throw new Error(`unknown command id ${id}`);
394
- }
395
- }
396
- async function processFrame(frame) {
397
- const [seqNumber, status, command, commandId] = await parseFrame(frame);
398
- //debug(`process frame with seq: ${seqNumber} status: ${status}`);
399
- let queue = driver_1.busyQueue;
400
- if (commandId === constants_1.default.PARAM.APS.DATA_INDICATION ||
401
- commandId === constants_1.default.PARAM.APS.DATA_REQUEST ||
402
- commandId === constants_1.default.PARAM.APS.DATA_CONFIRM) {
403
- queue = driver_1.apsBusyQueue;
404
- }
405
- const i = queue.findIndex((r) => r.seqNumber === seqNumber);
406
- if (i < 0) {
407
- return;
408
- }
409
- const req = queue[i];
410
- if (commandId === constants_1.default.PARAM.APS.DATA_REQUEST) {
411
- // if confirm is true resolve request only when data confirm arrives
412
- // TODO only return if a confirm was requested. if no confirm needed: go ahead
413
- //if (req.confirm === true) {
414
- return;
415
- //}
416
- }
417
- //remove from busyqueue
418
- queue.splice(i, 1);
419
- if (status !== 0) {
420
- // reject if status is not SUCCESS
421
- //debug("REJECT REQUEST");
422
- req.reject({ status });
423
- }
424
- else {
425
- //debug("RESOLVE REQUEST");
426
- req.resolve(command);
427
- }
428
- }
429
- function parseFrame(frame) {
430
- if (frame.length < MIN_BUFFER_SIZE) {
431
- debug("received frame size to small - discard frame");
432
- return [null, null, null, null];
433
- }
434
- const view = new DataView(frame.buffer);
435
- const commandId = view.getUint8(0);
436
- const seqNumber = view.getUint8(1);
437
- const status = view.getUint8(2);
438
- //const frameLength = view.getUint16(3, littleEndian);
439
- //const payloadLength = view.getUint16(5, littleEndian);
440
- const parser = getParserForCommandId(commandId);
441
- return [seqNumber, status, parser(view), commandId];
442
- }
443
- exports.default = processFrame;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /* istanbul ignore file */
7
+ /* eslint-disable */
8
+ const MIN_BUFFER_SIZE = 3;
9
+ const littleEndian = true;
10
+ const constants_1 = __importDefault(require("./constants"));
11
+ const driver_1 = require("./driver");
12
+ const debug_1 = __importDefault(require("debug"));
13
+ const debug = (0, debug_1.default)('zigbee-herdsman:deconz:frameParser');
14
+ var lastReceivedGpInd = { srcId: 0, commandId: 0, frameCounter: 0 };
15
+ var events = require('events');
16
+ var frameParserEvents = new events.EventEmitter();
17
+ module.exports.frameParserEvents = frameParserEvents;
18
+ function parseReadParameterResponse(view) {
19
+ const parameterId = view.getUint8(7);
20
+ switch (parameterId) {
21
+ case constants_1.default.PARAM.Network.MAC:
22
+ const mac = view.getBigUint64(8, littleEndian).toString(16);
23
+ let result = mac;
24
+ while (result.length < 16) {
25
+ result = "0" + result;
26
+ }
27
+ result = "0x" + result;
28
+ debug(`MAC: ${result}`);
29
+ return result;
30
+ case constants_1.default.PARAM.Network.PAN_ID:
31
+ const panId = view.getUint16(8, littleEndian);
32
+ debug('PANID: ' + panId.toString(16));
33
+ return panId;
34
+ case constants_1.default.PARAM.Network.NWK_ADDRESS:
35
+ const nwkAddr = view.getUint16(8, littleEndian);
36
+ debug('NWKADDR: ' + nwkAddr.toString(16));
37
+ return nwkAddr;
38
+ case constants_1.default.PARAM.Network.EXT_PAN_ID:
39
+ const extPanId = view.getBigUint64(8, littleEndian).toString(16);
40
+ let res = extPanId;
41
+ while (res.length < 16) {
42
+ res = "0" + res;
43
+ }
44
+ res = "0x" + res;
45
+ debug(`EXT_PANID: ${res}`);
46
+ return res;
47
+ case constants_1.default.PARAM.Network.APS_EXT_PAN_ID:
48
+ const apsExtPanId = view.getBigUint64(8, littleEndian).toString(16);
49
+ let resAEPID = apsExtPanId;
50
+ while (resAEPID.length < 16) {
51
+ resAEPID = "0" + resAEPID;
52
+ }
53
+ resAEPID = "0x" + resAEPID;
54
+ debug(`APS_EXT_PANID: ${resAEPID}`);
55
+ return resAEPID;
56
+ case constants_1.default.PARAM.Network.NETWORK_KEY:
57
+ const networkKey1 = view.getBigUint64(9).toString(16);
58
+ let res1 = networkKey1;
59
+ while (res1.length < 16) {
60
+ res1 = "0" + res1;
61
+ }
62
+ const networkKey2 = view.getBigUint64(17).toString(16);
63
+ let res2 = networkKey2;
64
+ while (res2.length < 16) {
65
+ res2 = "0" + res2;
66
+ }
67
+ debug('NETWORK_KEY: hidden');
68
+ return "0x" + res1 + res2;
69
+ case constants_1.default.PARAM.Network.CHANNEL:
70
+ const channel = view.getUint8(8);
71
+ debug('CHANNEL: ' + channel);
72
+ return channel;
73
+ case constants_1.default.PARAM.Network.CHANNEL_MASK:
74
+ const chMask = view.getUint32(8, littleEndian);
75
+ debug('CHANNELMASK: ' + chMask.toString(16));
76
+ return chMask;
77
+ case constants_1.default.PARAM.Network.PERMIT_JOIN:
78
+ const permitJoin = view.getUint8(8);
79
+ debug('PERMIT_JOIN: ' + permitJoin);
80
+ return permitJoin;
81
+ case constants_1.default.PARAM.Network.WATCHDOG_TTL:
82
+ const ttl = view.getUint32(8);
83
+ debug('WATCHDOG_TTL: ' + ttl);
84
+ return ttl;
85
+ default:
86
+ //throw new Error(`unknown parameter id ${parameterId}`);
87
+ debug(`unknown parameter id ${parameterId}`);
88
+ return null;
89
+ }
90
+ }
91
+ function parseReadFirmwareResponse(view) {
92
+ const fw = [view.getUint8(5), view.getUint8(6), view.getUint8(7), view.getUint8(8)];
93
+ debug("read firmware version response - version: " + fw);
94
+ return fw;
95
+ }
96
+ function parseDeviceStateResponse(view) {
97
+ const flag = view.getUint8(5);
98
+ debug("device state: " + flag.toString(2));
99
+ frameParserEvents.emit('receivedDataNotification', flag);
100
+ return flag;
101
+ }
102
+ function parseChangeNetworkStateResponse(view) {
103
+ const status = view.getUint8(2);
104
+ const state = view.getUint8(5);
105
+ debug("change network state - status: " + status + " new state: " + state);
106
+ return state;
107
+ }
108
+ function parseQuerySendDataStateResponse(view) {
109
+ try {
110
+ const response = {};
111
+ let buf2, buf3;
112
+ response.commandId = view.getUint8(0);
113
+ response.seqNr = view.getUint8(1);
114
+ response.status = view.getUint8(2);
115
+ if (response.status !== 0) {
116
+ if (response.status !== 5) {
117
+ debug("DATA_CONFIRM RESPONSE - seqNr.: " + response.seqNr + " status: " + response.status);
118
+ }
119
+ return null;
120
+ }
121
+ response.frameLength = 7;
122
+ response.payloadLength = view.getUint16(5, littleEndian);
123
+ response.deviceState = view.getUint8(7);
124
+ response.requestId = view.getUint8(8);
125
+ response.destAddrMode = view.getUint8(9);
126
+ let destAddr = "";
127
+ if (response.destAddrMode === 0x03) {
128
+ let res = view.getBigUint64(10, littleEndian).toString(16);
129
+ while (res.length < 16) {
130
+ res = "0" + res;
131
+ }
132
+ response.destAddr64 = res;
133
+ buf2 = view.buffer.slice(18, view.buffer.byteLength);
134
+ destAddr = response.destAddr64;
135
+ }
136
+ else {
137
+ response.destAddr16 = view.getUint16(10, littleEndian);
138
+ buf2 = view.buffer.slice(12, view.buffer.byteLength);
139
+ destAddr = response.destAddr16.toString(16);
140
+ }
141
+ if (response.destAddrMode === 0x02 || response.destAddrMode === 0x03) {
142
+ response.destEndpoint = view.getUint8(view.byteLength - 7);
143
+ }
144
+ response.srcEndpoint = view.getUint8(view.byteLength - 6);
145
+ response.confirmStatus = view.getInt8(view.byteLength - 5);
146
+ let newStatus = response.deviceState.toString(2);
147
+ for (let l = 0; l <= (8 - newStatus.length); l++) {
148
+ newStatus = "0" + newStatus;
149
+ }
150
+ // resolve send data request promise
151
+ const i = driver_1.apsBusyQueue.findIndex((r) => (r.request && r.request.requestId === response.requestId));
152
+ if (i < 0) {
153
+ return;
154
+ }
155
+ clearTimeout(driver_1.enableRtsTimeout);
156
+ (0, driver_1.enableRTS)(); // enable ReadyToSend because confirm received
157
+ const req = driver_1.apsBusyQueue[i];
158
+ // TODO timeout (at driver.ts)
159
+ if (response.confirmStatus !== 0) {
160
+ // reject if status is not SUCCESS
161
+ //debug("REJECT APS_REQUEST - request id: " + response.requestId + " confirm status: " + response.confirmStatus);
162
+ req.reject(response.confirmStatus);
163
+ }
164
+ else {
165
+ //debug("RESOLVE APS_REQUEST - request id: " + response.requestId + " confirm status: " + response.confirmStatus);
166
+ req.resolve(response.confirmStatus);
167
+ }
168
+ //remove from busyqueue
169
+ driver_1.apsBusyQueue.splice(i, 1);
170
+ debug("DATA_CONFIRM RESPONSE - destAddr: 0x" + destAddr + " request id: " + response.requestId + " confirm status: " + response.confirmStatus);
171
+ frameParserEvents.emit('receivedDataNotification', response.deviceState);
172
+ return response;
173
+ }
174
+ catch (error) {
175
+ debug("DATA_CONFIRM RESPONSE - " + error);
176
+ return null;
177
+ }
178
+ }
179
+ function parseReadReceivedDataResponse(view) {
180
+ // min 28 bytelength
181
+ try {
182
+ const response = {};
183
+ let buf2, buf3;
184
+ response.commandId = view.getUint8(0);
185
+ response.seqNr = view.getUint8(1);
186
+ response.status = view.getUint8(2);
187
+ if (response.status != 0) {
188
+ if (response.status !== 5) {
189
+ debug("DATA_INDICATION RESPONSE - seqNr.: " + response.seqNr + " status: " + response.status);
190
+ }
191
+ return null;
192
+ }
193
+ response.frameLength = view.getUint16(3, littleEndian);
194
+ response.payloadLength = view.getUint16(5, littleEndian);
195
+ response.deviceState = view.getUint8(7);
196
+ response.destAddrMode = view.getUint8(8);
197
+ let destAddr = "";
198
+ if (response.destAddrMode === 0x03) {
199
+ let res = view.getBigUint64(9, littleEndian).toString(16);
200
+ while (res.length < 16) {
201
+ res = "0" + res;
202
+ }
203
+ response.destAddr64 = res;
204
+ buf2 = view.buffer.slice(17, view.buffer.byteLength);
205
+ destAddr = response.destAddr64;
206
+ }
207
+ else {
208
+ response.destAddr16 = view.getUint16(9, littleEndian);
209
+ buf2 = view.buffer.slice(11, view.buffer.byteLength);
210
+ destAddr = response.destAddr16.toString(16);
211
+ }
212
+ view = new DataView(buf2);
213
+ response.destEndpoint = view.getUint8(0);
214
+ response.srcAddrMode = view.getUint8(1);
215
+ let srcAddr = "";
216
+ if (response.srcAddrMode === 0x02 || response.srcAddrMode === 0x04) {
217
+ response.srcAddr16 = view.getUint16(2, littleEndian);
218
+ buf3 = view.buffer.slice(4, view.buffer.byteLength);
219
+ srcAddr = response.srcAddr16.toString(16);
220
+ }
221
+ if (response.srcAddrMode === 0x03 || response.srcAddrMode === 0x04) {
222
+ let res = view.getBigUint64(2, littleEndian).toString(16);
223
+ while (res.length < 16) {
224
+ res = "0" + res;
225
+ }
226
+ response.srcAddr64 = res;
227
+ buf3 = view.buffer.slice(10, view.buffer.byteLength);
228
+ srcAddr = response.srcAddr64;
229
+ }
230
+ view = new DataView(buf3);
231
+ response.srcEndpoint = view.getUint8(0);
232
+ response.profileId = view.getUint16(1, littleEndian);
233
+ response.clusterId = view.getUint16(3, littleEndian);
234
+ response.asduLength = view.getUint16(5, littleEndian);
235
+ let payload = [];
236
+ let i = 0;
237
+ for (let u = 7; u < (response.asduLength + 7); u++) {
238
+ payload[i] = view.getUint8(u);
239
+ i++;
240
+ }
241
+ response.asduPayload = payload;
242
+ response.lqi = view.getUint8(view.byteLength - 8);
243
+ response.rssi = view.getInt8(view.byteLength - 3);
244
+ let newStatus = response.deviceState.toString(2);
245
+ for (let l = 0; l <= (8 - newStatus.length); l++) {
246
+ newStatus = "0" + newStatus;
247
+ }
248
+ debug("DATA_INDICATION RESPONSE - seqNr. " + response.seqNr + " srcAddr: 0x" + srcAddr + " destAddr: 0x" + destAddr + " profile id: 0x" + response.profileId.toString(16) + " cluster id: 0x" + response.clusterId.toString(16) + " lqi: " + response.lqi);
249
+ debug("response payload: " + payload);
250
+ frameParserEvents.emit('receivedDataPayload', response);
251
+ frameParserEvents.emit('receivedDataNotification', response.deviceState);
252
+ return response;
253
+ }
254
+ catch (error) {
255
+ debug("DATA_INDICATION RESPONSE - " + error);
256
+ return null;
257
+ }
258
+ }
259
+ function parseEnqueueSendDataResponse(view) {
260
+ try {
261
+ const status = view.getUint8(2);
262
+ const requestId = view.getUint8(8);
263
+ const deviceState = view.getUint8(7);
264
+ debug("DATA_REQUEST RESPONSE - request id: " + requestId + " status: " + status);
265
+ frameParserEvents.emit('receivedDataNotification', deviceState);
266
+ return deviceState;
267
+ }
268
+ catch (error) {
269
+ debug("parseEnqueueSendDataResponse - " + error);
270
+ return null;
271
+ }
272
+ }
273
+ function parseWriteParameterResponse(view) {
274
+ try {
275
+ const parameterId = view.getUint8(7);
276
+ debug(`write parameter response - parameter id: ${parameterId} - status: ${view.getUint8(2)}`);
277
+ return parameterId;
278
+ }
279
+ catch (error) {
280
+ debug("parseWriteParameterResponse - " + error);
281
+ return null;
282
+ }
283
+ }
284
+ function parseReceivedDataNotification(view) {
285
+ try {
286
+ const deviceState = view.getUint8(5);
287
+ debug("DEVICE_STATE changed: " + deviceState.toString(2));
288
+ frameParserEvents.emit('receivedDataNotification', deviceState);
289
+ return deviceState;
290
+ }
291
+ catch (error) {
292
+ debug("parseReceivedDataNotification - " + error);
293
+ return null;
294
+ }
295
+ }
296
+ function parseGreenPowerDataIndication(view) {
297
+ try {
298
+ const ind = {};
299
+ ind.seqNr = view.getUint8(1);
300
+ if (view.byteLength < 30) {
301
+ debug("GP data notification");
302
+ ind.id = 0x00; // 0 = notification, 4 = commissioning
303
+ ind.rspId = 0x01; // 1 = pairing, 2 = commissioning
304
+ ind.options = 0;
305
+ view.getUint16(7, littleEndian); // frame ctrl field(7) ext.fcf(8)
306
+ ind.srcId = view.getUint32(9, littleEndian);
307
+ ind.frameCounter = view.getUint32(13, littleEndian);
308
+ ind.commandId = view.getUint8(17);
309
+ ind.commandFrameSize = view.byteLength - 18 - 6; // cut 18 from begin and 4 (sec mic) and 2 from end (cfc)
310
+ let payload = [];
311
+ let i = 0;
312
+ for (let u = 18; u < (ind.commandFrameSize + 18); u++) {
313
+ payload[i] = view.getUint8(u);
314
+ i++;
315
+ }
316
+ ind.commandFrame = payload;
317
+ }
318
+ else {
319
+ debug("GP commissioning notification");
320
+ ind.id = 0x04; // 0 = notification, 4 = commissioning
321
+ ind.rspId = 0x01; // 1 = pairing, 2 = commissioning
322
+ ind.options = view.getUint16(14, littleEndian); // opt(14) ext.opt(15)
323
+ ind.srcId = view.getUint32(8, littleEndian);
324
+ ind.frameCounter = view.getUint32(36, littleEndian);
325
+ ind.commandId = view.getUint8(12);
326
+ ind.commandFrameSize = view.byteLength - 13 - 2; // cut 13 from begin and 2 from end (cfc)
327
+ let payload = [];
328
+ let i = 0;
329
+ for (let u = 13; u < (ind.commandFrameSize + 13); u++) {
330
+ payload[i] = view.getUint8(u);
331
+ i++;
332
+ }
333
+ ind.commandFrame = payload;
334
+ }
335
+ if (!(lastReceivedGpInd.srcId === ind.srcId &&
336
+ lastReceivedGpInd.commandId === ind.commandId &&
337
+ lastReceivedGpInd.frameCounter === ind.frameCounter)) {
338
+ lastReceivedGpInd.srcId = ind.srcId;
339
+ lastReceivedGpInd.commandId = ind.commandId;
340
+ lastReceivedGpInd.frameCounter = ind.frameCounter;
341
+ //debug(`GP_DATA_INDICATION - src id: ${ind.srcId} cmd id: ${ind.commandId} frameCounter: ${ind.frameCounter}`);
342
+ debug(`GP_DATA_INDICATION - src id: 0x${ind.srcId.toString(16)} cmd id: 0x${ind.commandId.toString(16)} frameCounter: 0x${ind.frameCounter.toString(16)}`);
343
+ frameParserEvents.emit('receivedGreenPowerIndication', ind);
344
+ }
345
+ return ind;
346
+ }
347
+ catch (error) {
348
+ debug("GREEN_POWER INDICATION - " + error);
349
+ return null;
350
+ }
351
+ }
352
+ function parseMacPollCommand(view) {
353
+ //debug("Received command MAC_POLL");
354
+ return 28;
355
+ }
356
+ function parseBeaconRequest(view) {
357
+ debug("Received Beacon Request");
358
+ return 31;
359
+ }
360
+ function parseUnknownCommand(view) {
361
+ const id = view.getUint8(0);
362
+ debug(`received unknown command - id ${id}`);
363
+ return id;
364
+ }
365
+ function getParserForCommandId(id) {
366
+ switch (id) {
367
+ case constants_1.default.PARAM.FrameType.ReadParameter:
368
+ return parseReadParameterResponse;
369
+ case constants_1.default.PARAM.FrameType.WriteParameter:
370
+ return parseWriteParameterResponse;
371
+ case constants_1.default.PARAM.FrameType.ReadFirmwareVersion:
372
+ return parseReadFirmwareResponse;
373
+ case constants_1.default.PARAM.FrameType.ReadDeviceState:
374
+ return parseDeviceStateResponse;
375
+ case constants_1.default.PARAM.APS.DATA_INDICATION:
376
+ return parseReadReceivedDataResponse;
377
+ case constants_1.default.PARAM.APS.DATA_REQUEST:
378
+ return parseEnqueueSendDataResponse;
379
+ case constants_1.default.PARAM.APS.DATA_CONFIRM:
380
+ return parseQuerySendDataStateResponse;
381
+ case constants_1.default.PARAM.FrameType.DeviceStateChanged:
382
+ return parseReceivedDataNotification;
383
+ case constants_1.default.PARAM.NetworkState.CHANGE_NETWORK_STATE:
384
+ return parseChangeNetworkStateResponse;
385
+ case constants_1.default.PARAM.FrameType.GreenPowerDataInd:
386
+ return parseGreenPowerDataIndication;
387
+ case 28:
388
+ return parseMacPollCommand;
389
+ case 31:
390
+ return parseBeaconRequest;
391
+ default:
392
+ return parseUnknownCommand;
393
+ //throw new Error(`unknown command id ${id}`);
394
+ }
395
+ }
396
+ async function processFrame(frame) {
397
+ const [seqNumber, status, command, commandId] = await parseFrame(frame);
398
+ //debug(`process frame with seq: ${seqNumber} status: ${status}`);
399
+ let queue = driver_1.busyQueue;
400
+ if (commandId === constants_1.default.PARAM.APS.DATA_INDICATION ||
401
+ commandId === constants_1.default.PARAM.APS.DATA_REQUEST ||
402
+ commandId === constants_1.default.PARAM.APS.DATA_CONFIRM) {
403
+ queue = driver_1.apsBusyQueue;
404
+ }
405
+ const i = queue.findIndex((r) => r.seqNumber === seqNumber);
406
+ if (i < 0) {
407
+ return;
408
+ }
409
+ const req = queue[i];
410
+ if (commandId === constants_1.default.PARAM.APS.DATA_REQUEST) {
411
+ // if confirm is true resolve request only when data confirm arrives
412
+ // TODO only return if a confirm was requested. if no confirm needed: go ahead
413
+ //if (req.confirm === true) {
414
+ return;
415
+ //}
416
+ }
417
+ //remove from busyqueue
418
+ queue.splice(i, 1);
419
+ if (status !== 0) {
420
+ // reject if status is not SUCCESS
421
+ //debug("REJECT REQUEST");
422
+ req.reject({ status });
423
+ }
424
+ else {
425
+ //debug("RESOLVE REQUEST");
426
+ req.resolve(command);
427
+ }
428
+ }
429
+ function parseFrame(frame) {
430
+ if (frame.length < MIN_BUFFER_SIZE) {
431
+ debug("received frame size to small - discard frame");
432
+ return [null, null, null, null];
433
+ }
434
+ const view = new DataView(frame.buffer);
435
+ const commandId = view.getUint8(0);
436
+ const seqNumber = view.getUint8(1);
437
+ const status = view.getUint8(2);
438
+ //const frameLength = view.getUint16(3, littleEndian);
439
+ //const payloadLength = view.getUint16(5, littleEndian);
440
+ const parser = getParserForCommandId(commandId);
441
+ return [seqNumber, status, parser(view), commandId];
442
+ }
443
+ exports.default = processFrame;
444
444
  //# sourceMappingURL=frameParser.js.map