@willieee802/zigbee-herdsman 0.19.21 → 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 (522) 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 -153
  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 -60
  127. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  128. package/dist/adapter/ezsp/adapter/ezspAdapter.js +629 -608
  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 -101
  139. package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
  140. package/dist/adapter/ezsp/driver/driver.js +731 -638
  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.js +77 -72
  154. package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
  155. package/dist/adapter/ezsp/driver/parser.d.ts +11 -12
  156. package/dist/adapter/ezsp/driver/parser.d.ts.map +1 -1
  157. package/dist/adapter/ezsp/driver/parser.js +104 -111
  158. package/dist/adapter/ezsp/driver/parser.js.map +1 -1
  159. package/dist/adapter/ezsp/driver/types/basic.d.ts +62 -62
  160. package/dist/adapter/ezsp/driver/types/basic.js +208 -208
  161. package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
  162. package/dist/adapter/ezsp/driver/types/index.d.ts +9 -9
  163. package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
  164. package/dist/adapter/ezsp/driver/types/index.js +138 -133
  165. package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
  166. package/dist/adapter/ezsp/driver/types/named.d.ts +1287 -697
  167. package/dist/adapter/ezsp/driver/types/named.d.ts.map +1 -1
  168. package/dist/adapter/ezsp/driver/types/named.js +2329 -1726
  169. package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
  170. package/dist/adapter/ezsp/driver/types/struct.d.ts +270 -251
  171. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
  172. package/dist/adapter/ezsp/driver/types/struct.js +803 -708
  173. package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
  174. package/dist/adapter/ezsp/driver/uart.d.ts +48 -44
  175. package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
  176. package/dist/adapter/ezsp/driver/uart.js +382 -368
  177. package/dist/adapter/ezsp/driver/uart.js.map +1 -1
  178. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +2 -2
  179. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +55 -55
  180. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -1
  181. package/dist/adapter/ezsp/driver/utils/index.d.ts +18 -18
  182. package/dist/adapter/ezsp/driver/utils/index.js +72 -67
  183. package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
  184. package/dist/adapter/ezsp/driver/writer.d.ts +13 -13
  185. package/dist/adapter/ezsp/driver/writer.d.ts.map +1 -1
  186. package/dist/adapter/ezsp/driver/writer.js +85 -88
  187. package/dist/adapter/ezsp/driver/writer.js.map +1 -1
  188. package/dist/adapter/index.d.ts +4 -4
  189. package/dist/adapter/index.js +35 -35
  190. package/dist/adapter/serialPort.d.ts +10 -8
  191. package/dist/adapter/serialPort.d.ts.map +1 -1
  192. package/dist/adapter/serialPort.js +53 -22
  193. package/dist/adapter/serialPort.js.map +1 -1
  194. package/dist/adapter/serialPortUtils.d.ts +12 -12
  195. package/dist/adapter/serialPortUtils.js +18 -18
  196. package/dist/adapter/serialPortUtils.js.map +1 -1
  197. package/dist/adapter/socketPortUtils.d.ts +10 -10
  198. package/dist/adapter/socketPortUtils.js +16 -16
  199. package/dist/adapter/tstype.d.ts +85 -85
  200. package/dist/adapter/tstype.d.ts.map +1 -1
  201. package/dist/adapter/tstype.js +2 -2
  202. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +62 -62
  203. package/dist/adapter/z-stack/adapter/adapter-backup.js +462 -461
  204. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  205. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +150 -150
  206. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +258 -258
  207. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
  208. package/dist/adapter/z-stack/adapter/endpoints.d.ts +11 -11
  209. package/dist/adapter/z-stack/adapter/endpoints.js +73 -73
  210. package/dist/adapter/z-stack/adapter/index.d.ts +2 -2
  211. package/dist/adapter/z-stack/adapter/index.js +8 -8
  212. package/dist/adapter/z-stack/adapter/manager.d.ts +86 -86
  213. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
  214. package/dist/adapter/z-stack/adapter/manager.js +482 -476
  215. package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
  216. package/dist/adapter/z-stack/adapter/tstype.d.ts +6 -6
  217. package/dist/adapter/z-stack/adapter/tstype.js +9 -10
  218. package/dist/adapter/z-stack/adapter/tstype.js.map +1 -1
  219. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +81 -81
  220. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  221. package/dist/adapter/z-stack/adapter/zStackAdapter.js +891 -868
  222. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  223. package/dist/adapter/z-stack/constants/af.d.ts +23 -23
  224. package/dist/adapter/z-stack/constants/af.js +27 -27
  225. package/dist/adapter/z-stack/constants/common.d.ts +278 -278
  226. package/dist/adapter/z-stack/constants/common.d.ts.map +1 -1
  227. package/dist/adapter/z-stack/constants/common.js +292 -289
  228. package/dist/adapter/z-stack/constants/common.js.map +1 -1
  229. package/dist/adapter/z-stack/constants/dbg.d.ts +22 -22
  230. package/dist/adapter/z-stack/constants/dbg.js +24 -24
  231. package/dist/adapter/z-stack/constants/index.d.ts +10 -10
  232. package/dist/adapter/z-stack/constants/index.js +47 -47
  233. package/dist/adapter/z-stack/constants/mac.d.ts +127 -127
  234. package/dist/adapter/z-stack/constants/mac.js +129 -129
  235. package/dist/adapter/z-stack/constants/sapi.d.ts +24 -24
  236. package/dist/adapter/z-stack/constants/sapi.js +26 -26
  237. package/dist/adapter/z-stack/constants/sys.d.ts +71 -71
  238. package/dist/adapter/z-stack/constants/sys.js +73 -73
  239. package/dist/adapter/z-stack/constants/util.d.ts +81 -81
  240. package/dist/adapter/z-stack/constants/util.js +83 -83
  241. package/dist/adapter/z-stack/constants/utils.d.ts +4 -4
  242. package/dist/adapter/z-stack/constants/utils.js +14 -14
  243. package/dist/adapter/z-stack/constants/zdo.d.ts +102 -102
  244. package/dist/adapter/z-stack/constants/zdo.js +104 -104
  245. package/dist/adapter/z-stack/models/index.d.ts +1 -1
  246. package/dist/adapter/z-stack/models/index.js +17 -17
  247. package/dist/adapter/z-stack/models/startup-options.d.ts +12 -12
  248. package/dist/adapter/z-stack/models/startup-options.js +2 -2
  249. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +23 -23
  250. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +45 -45
  251. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +1 -1
  252. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +10 -10
  253. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +22 -22
  254. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +10 -10
  255. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +21 -21
  256. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +10 -10
  257. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +23 -23
  258. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +10 -10
  259. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +24 -24
  260. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +10 -10
  261. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +23 -23
  262. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +8 -8
  263. package/dist/adapter/z-stack/structs/entries/channel-list.js +15 -15
  264. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +8 -8
  265. package/dist/adapter/z-stack/structs/entries/has-configured.js +16 -16
  266. package/dist/adapter/z-stack/structs/entries/index.d.ts +16 -16
  267. package/dist/adapter/z-stack/structs/entries/index.js +32 -32
  268. package/dist/adapter/z-stack/structs/entries/nib.d.ts +10 -10
  269. package/dist/adapter/z-stack/structs/entries/nib.js +68 -68
  270. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +10 -10
  271. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +18 -18
  272. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +8 -8
  273. package/dist/adapter/z-stack/structs/entries/nwk-key.js +15 -15
  274. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +8 -8
  275. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +15 -15
  276. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +13 -13
  277. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +23 -23
  278. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +10 -10
  279. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +22 -22
  280. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +20 -20
  281. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +36 -36
  282. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +1 -1
  283. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +10 -10
  284. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +24 -24
  285. package/dist/adapter/z-stack/structs/index.d.ts +4 -4
  286. package/dist/adapter/z-stack/structs/index.js +20 -20
  287. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +13 -13
  288. package/dist/adapter/z-stack/structs/serializable-memory-object.js +2 -2
  289. package/dist/adapter/z-stack/structs/struct.d.ts +99 -99
  290. package/dist/adapter/z-stack/structs/struct.js +296 -295
  291. package/dist/adapter/z-stack/structs/struct.js.map +1 -1
  292. package/dist/adapter/z-stack/structs/table.d.ts +94 -94
  293. package/dist/adapter/z-stack/structs/table.js +163 -161
  294. package/dist/adapter/z-stack/structs/table.js.map +1 -1
  295. package/dist/adapter/z-stack/unpi/constants.d.ts +28 -28
  296. package/dist/adapter/z-stack/unpi/constants.js +39 -41
  297. package/dist/adapter/z-stack/unpi/constants.js.map +1 -1
  298. package/dist/adapter/z-stack/unpi/frame.d.ts +16 -16
  299. package/dist/adapter/z-stack/unpi/frame.js +54 -48
  300. package/dist/adapter/z-stack/unpi/frame.js.map +1 -1
  301. package/dist/adapter/z-stack/unpi/index.d.ts +5 -5
  302. package/dist/adapter/z-stack/unpi/index.js +37 -37
  303. package/dist/adapter/z-stack/unpi/parser.d.ts +10 -10
  304. package/dist/adapter/z-stack/unpi/parser.js +75 -74
  305. package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
  306. package/dist/adapter/z-stack/unpi/writer.d.ts +10 -10
  307. package/dist/adapter/z-stack/unpi/writer.js +44 -44
  308. package/dist/adapter/z-stack/utils/channel-list.d.ts +20 -20
  309. package/dist/adapter/z-stack/utils/channel-list.js +40 -40
  310. package/dist/adapter/z-stack/utils/channel-list.js.map +1 -1
  311. package/dist/adapter/z-stack/utils/index.d.ts +2 -2
  312. package/dist/adapter/z-stack/utils/index.js +18 -18
  313. package/dist/adapter/z-stack/utils/network-options.d.ts +8 -8
  314. package/dist/adapter/z-stack/utils/network-options.js +22 -22
  315. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +11 -11
  316. package/dist/adapter/z-stack/znp/buffaloZnp.js +113 -113
  317. package/dist/adapter/z-stack/znp/buffaloZnp.js.map +1 -1
  318. package/dist/adapter/z-stack/znp/definition.d.ts +5 -5
  319. package/dist/adapter/z-stack/znp/definition.js +3050 -3050
  320. package/dist/adapter/z-stack/znp/index.d.ts +3 -3
  321. package/dist/adapter/z-stack/znp/index.js +10 -10
  322. package/dist/adapter/z-stack/znp/parameterType.d.ts +22 -22
  323. package/dist/adapter/z-stack/znp/parameterType.js +25 -25
  324. package/dist/adapter/z-stack/znp/tstype.d.ts +21 -21
  325. package/dist/adapter/z-stack/znp/tstype.js +2 -2
  326. package/dist/adapter/z-stack/znp/znp.d.ts +44 -43
  327. package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
  328. package/dist/adapter/z-stack/znp/znp.js +326 -325
  329. package/dist/adapter/z-stack/znp/znp.js.map +1 -1
  330. package/dist/adapter/z-stack/znp/zpiObject.d.ts +19 -19
  331. package/dist/adapter/z-stack/znp/zpiObject.js +102 -96
  332. package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
  333. package/dist/adapter/zigate/adapter/index.d.ts +2 -2
  334. package/dist/adapter/zigate/adapter/index.js +10 -10
  335. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +70 -70
  336. package/dist/adapter/zigate/adapter/zigateAdapter.js +689 -684
  337. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
  338. package/dist/adapter/zigate/debug.d.ts +7 -7
  339. package/dist/adapter/zigate/debug.d.ts.map +1 -1
  340. package/dist/adapter/zigate/debug.js +19 -22
  341. package/dist/adapter/zigate/debug.js.map +1 -1
  342. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +18 -18
  343. package/dist/adapter/zigate/driver/buffaloZiGate.js +139 -139
  344. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
  345. package/dist/adapter/zigate/driver/commandType.d.ts +41 -41
  346. package/dist/adapter/zigate/driver/commandType.js +385 -385
  347. package/dist/adapter/zigate/driver/commandType.js.map +1 -1
  348. package/dist/adapter/zigate/driver/constants.d.ts +276 -276
  349. package/dist/adapter/zigate/driver/constants.d.ts.map +1 -1
  350. package/dist/adapter/zigate/driver/constants.js +371 -371
  351. package/dist/adapter/zigate/driver/constants.js.map +1 -1
  352. package/dist/adapter/zigate/driver/frame.d.ts +26 -26
  353. package/dist/adapter/zigate/driver/frame.js +172 -172
  354. package/dist/adapter/zigate/driver/frame.js.map +1 -1
  355. package/dist/adapter/zigate/driver/messageType.d.ts +11 -11
  356. package/dist/adapter/zigate/driver/messageType.js +278 -278
  357. package/dist/adapter/zigate/driver/messageType.js.map +1 -1
  358. package/dist/adapter/zigate/driver/parameterType.d.ts +20 -20
  359. package/dist/adapter/zigate/driver/parameterType.js +23 -23
  360. package/dist/adapter/zigate/driver/ziGateObject.d.ts +23 -23
  361. package/dist/adapter/zigate/driver/ziGateObject.js +110 -106
  362. package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
  363. package/dist/adapter/zigate/driver/zigate.d.ts +49 -49
  364. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
  365. package/dist/adapter/zigate/driver/zigate.js +296 -303
  366. package/dist/adapter/zigate/driver/zigate.js.map +1 -1
  367. package/dist/buffalo/buffalo.d.ts +50 -50
  368. package/dist/buffalo/buffalo.js +324 -322
  369. package/dist/buffalo/buffalo.js.map +1 -1
  370. package/dist/buffalo/index.d.ts +3 -3
  371. package/dist/buffalo/index.js +33 -33
  372. package/dist/buffalo/tstype.d.ts +8 -8
  373. package/dist/buffalo/tstype.js +2 -2
  374. package/dist/controller/controller.d.ts +113 -113
  375. package/dist/controller/controller.d.ts.map +1 -1
  376. package/dist/controller/controller.js +641 -619
  377. package/dist/controller/controller.js.map +1 -1
  378. package/dist/controller/database.d.ts +18 -18
  379. package/dist/controller/database.js +96 -93
  380. package/dist/controller/database.js.map +1 -1
  381. package/dist/controller/events.d.ts +58 -58
  382. package/dist/controller/events.d.ts.map +1 -1
  383. package/dist/controller/events.js +108 -102
  384. package/dist/controller/events.js.map +1 -1
  385. package/dist/controller/greenPower.d.ts +12 -12
  386. package/dist/controller/greenPower.js +221 -220
  387. package/dist/controller/greenPower.js.map +1 -1
  388. package/dist/controller/helpers/index.d.ts +2 -2
  389. package/dist/controller/helpers/index.js +28 -28
  390. package/dist/controller/helpers/request.d.ts +21 -22
  391. package/dist/controller/helpers/request.d.ts.map +1 -1
  392. package/dist/controller/helpers/request.js +77 -71
  393. package/dist/controller/helpers/request.js.map +1 -1
  394. package/dist/controller/helpers/requestQueue.d.ts +13 -0
  395. package/dist/controller/helpers/requestQueue.d.ts.map +1 -0
  396. package/dist/controller/helpers/requestQueue.js +116 -0
  397. package/dist/controller/helpers/requestQueue.js.map +1 -0
  398. package/dist/controller/helpers/zclFrameConverter.d.ts +7 -7
  399. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  400. package/dist/controller/helpers/zclFrameConverter.js +50 -31
  401. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  402. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +5 -5
  403. package/dist/controller/helpers/zclTransactionSequenceNumber.js +13 -13
  404. package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +1 -1
  405. package/dist/controller/index.d.ts +5 -5
  406. package/dist/controller/index.js +8 -8
  407. package/dist/controller/logger-stub.d.ts +6 -6
  408. package/dist/controller/logger-stub.js +2 -2
  409. package/dist/controller/model/device.d.ts +132 -133
  410. package/dist/controller/model/device.d.ts.map +1 -1
  411. package/dist/controller/model/device.js +724 -717
  412. package/dist/controller/model/device.js.map +1 -1
  413. package/dist/controller/model/endpoint.d.ts +128 -131
  414. package/dist/controller/model/endpoint.d.ts.map +1 -1
  415. package/dist/controller/model/endpoint.js +755 -821
  416. package/dist/controller/model/endpoint.js.map +1 -1
  417. package/dist/controller/model/entity.d.ts +14 -14
  418. package/dist/controller/model/entity.js +26 -26
  419. package/dist/controller/model/entity.js.map +1 -1
  420. package/dist/controller/model/group.d.ts +38 -38
  421. package/dist/controller/model/group.d.ts.map +1 -1
  422. package/dist/controller/model/group.js +225 -221
  423. package/dist/controller/model/group.js.map +1 -1
  424. package/dist/controller/model/index.d.ts +5 -5
  425. package/dist/controller/model/index.js +14 -14
  426. package/dist/controller/touchlink.d.ts +19 -19
  427. package/dist/controller/touchlink.js +159 -157
  428. package/dist/controller/touchlink.js.map +1 -1
  429. package/dist/controller/tstype.d.ts +20 -21
  430. package/dist/controller/tstype.d.ts.map +1 -1
  431. package/dist/controller/tstype.js +8 -9
  432. package/dist/controller/tstype.js.map +1 -1
  433. package/dist/index.d.ts +3 -3
  434. package/dist/index.js +33 -33
  435. package/dist/models/backup-storage-legacy.d.ts +26 -26
  436. package/dist/models/backup-storage-legacy.js +2 -2
  437. package/dist/models/backup-storage-unified.d.ts +49 -49
  438. package/dist/models/backup-storage-unified.js +2 -2
  439. package/dist/models/backup.d.ts +37 -37
  440. package/dist/models/backup.js +2 -2
  441. package/dist/models/index.d.ts +4 -4
  442. package/dist/models/index.js +20 -20
  443. package/dist/models/network-options.d.ts +12 -12
  444. package/dist/models/network-options.js +2 -2
  445. package/dist/utils/assertString.d.ts +2 -2
  446. package/dist/utils/assertString.js +8 -8
  447. package/dist/utils/assertString.js.map +1 -1
  448. package/dist/utils/backup.d.ts +20 -20
  449. package/dist/utils/backup.d.ts.map +1 -1
  450. package/dist/utils/backup.js +189 -187
  451. package/dist/utils/backup.js.map +1 -1
  452. package/dist/utils/equalsPartial.d.ts +2 -2
  453. package/dist/utils/equalsPartial.js +11 -11
  454. package/dist/utils/index.d.ts +9 -9
  455. package/dist/utils/index.js +45 -45
  456. package/dist/utils/isNumberArray.d.ts +2 -2
  457. package/dist/utils/isNumberArray.js +6 -6
  458. package/dist/utils/queue.d.ts +11 -11
  459. package/dist/utils/queue.d.ts.map +1 -1
  460. package/dist/utils/queue.js +61 -50
  461. package/dist/utils/queue.js.map +1 -1
  462. package/dist/utils/realpathSync.d.ts +2 -2
  463. package/dist/utils/realpathSync.js +12 -12
  464. package/dist/utils/wait.d.ts +2 -2
  465. package/dist/utils/wait.js +8 -8
  466. package/dist/utils/waitress.d.ts +21 -21
  467. package/dist/utils/waitress.d.ts.map +1 -1
  468. package/dist/utils/waitress.js +68 -61
  469. package/dist/utils/waitress.js.map +1 -1
  470. package/dist/zcl/buffaloZcl.d.ts +41 -41
  471. package/dist/zcl/buffaloZcl.d.ts.map +1 -1
  472. package/dist/zcl/buffaloZcl.js +594 -591
  473. package/dist/zcl/buffaloZcl.js.map +1 -1
  474. package/dist/zcl/definition/buffaloZclDataType.d.ts +17 -17
  475. package/dist/zcl/definition/buffaloZclDataType.js +20 -20
  476. package/dist/zcl/definition/cluster.d.ts +29 -29
  477. package/dist/zcl/definition/cluster.d.ts.map +1 -1
  478. package/dist/zcl/definition/cluster.js +5520 -5335
  479. package/dist/zcl/definition/cluster.js.map +1 -1
  480. package/dist/zcl/definition/dataType.d.ts +59 -59
  481. package/dist/zcl/definition/dataType.js +64 -64
  482. package/dist/zcl/definition/direction.d.ts +5 -5
  483. package/dist/zcl/definition/direction.js +8 -8
  484. package/dist/zcl/definition/endpointDeviceType.d.ts +4 -4
  485. package/dist/zcl/definition/endpointDeviceType.js +15 -15
  486. package/dist/zcl/definition/foundation.d.ts +11 -11
  487. package/dist/zcl/definition/foundation.js +167 -167
  488. package/dist/zcl/definition/frameControl.d.ts +10 -10
  489. package/dist/zcl/definition/frameControl.js +2 -2
  490. package/dist/zcl/definition/frameType.d.ts +5 -5
  491. package/dist/zcl/definition/frameType.js +8 -8
  492. package/dist/zcl/definition/index.d.ts +13 -13
  493. package/dist/zcl/definition/index.js +51 -51
  494. package/dist/zcl/definition/manufacturerCode.d.ts +1077 -1074
  495. package/dist/zcl/definition/manufacturerCode.d.ts.map +1 -1
  496. package/dist/zcl/definition/manufacturerCode.js +1082 -1079
  497. package/dist/zcl/definition/manufacturerCode.js.map +1 -1
  498. package/dist/zcl/definition/powerSource.d.ts +4 -4
  499. package/dist/zcl/definition/powerSource.js +12 -12
  500. package/dist/zcl/definition/status.d.ts +38 -38
  501. package/dist/zcl/definition/status.js +41 -41
  502. package/dist/zcl/definition/tstype.d.ts +16 -16
  503. package/dist/zcl/definition/tstype.js +2 -2
  504. package/dist/zcl/index.d.ts +16 -16
  505. package/dist/zcl/index.js +55 -55
  506. package/dist/zcl/tstype.d.ts +56 -56
  507. package/dist/zcl/tstype.js +9 -10
  508. package/dist/zcl/tstype.js.map +1 -1
  509. package/dist/zcl/utils.d.ts +6 -6
  510. package/dist/zcl/utils.js +164 -165
  511. package/dist/zcl/utils.js.map +1 -1
  512. package/dist/zcl/zclFrame.d.ts +40 -40
  513. package/dist/zcl/zclFrame.js +351 -347
  514. package/dist/zcl/zclFrame.js.map +1 -1
  515. package/dist/zcl/zclHeader.d.ts +8 -8
  516. package/dist/zcl/zclHeader.js +2 -2
  517. package/dist/zcl/zclStatusError.d.ts +5 -5
  518. package/dist/zcl/zclStatusError.js +14 -13
  519. package/dist/zcl/zclStatusError.js.map +1 -1
  520. package/package.json +11 -11
  521. package/release-please-config.json +1 -5
  522. 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