@zwave-js/nvmedit 13.3.0 → 13.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/build/cli.js +5 -5
  2. package/build/cli.js.map +1 -1
  3. package/build/convert.d.ts +15 -14
  4. package/build/convert.d.ts.map +1 -1
  5. package/build/convert.js +647 -389
  6. package/build/convert.js.map +1 -1
  7. package/build/index.d.ts +12 -4
  8. package/build/index.d.ts.map +1 -1
  9. package/build/index.js +20 -2
  10. package/build/index.js.map +1 -1
  11. package/build/index_safe.d.ts +7 -4
  12. package/build/index_safe.d.ts.map +1 -1
  13. package/build/index_safe.js +4 -2
  14. package/build/index_safe.js.map +1 -1
  15. package/build/lib/NVM3.d.ts +53 -0
  16. package/build/lib/NVM3.d.ts.map +1 -0
  17. package/build/lib/NVM3.js +650 -0
  18. package/build/lib/NVM3.js.map +1 -0
  19. package/build/lib/NVM500.d.ts +46 -0
  20. package/build/lib/NVM500.d.ts.map +1 -0
  21. package/build/lib/NVM500.js +413 -0
  22. package/build/lib/NVM500.js.map +1 -0
  23. package/build/lib/common/definitions.d.ts +138 -0
  24. package/build/lib/common/definitions.d.ts.map +1 -0
  25. package/build/lib/common/definitions.js +11 -0
  26. package/build/lib/common/definitions.js.map +1 -0
  27. package/build/lib/common/routeCache.d.ts +18 -0
  28. package/build/lib/common/routeCache.d.ts.map +1 -0
  29. package/build/lib/common/routeCache.js +56 -0
  30. package/build/lib/common/routeCache.js.map +1 -0
  31. package/build/lib/common/sucUpdateEntry.d.ts +10 -0
  32. package/build/lib/common/sucUpdateEntry.d.ts.map +1 -0
  33. package/build/lib/common/sucUpdateEntry.js +35 -0
  34. package/build/lib/common/sucUpdateEntry.js.map +1 -0
  35. package/build/lib/common/utils.d.ts +9 -0
  36. package/build/lib/common/utils.d.ts.map +1 -0
  37. package/build/lib/common/utils.js +52 -0
  38. package/build/lib/common/utils.js.map +1 -0
  39. package/build/lib/io/BufferedNVMReader.d.ts +21 -0
  40. package/build/lib/io/BufferedNVMReader.d.ts.map +1 -0
  41. package/build/lib/io/BufferedNVMReader.js +79 -0
  42. package/build/lib/io/BufferedNVMReader.js.map +1 -0
  43. package/build/lib/io/NVMFileIO.d.ts +24 -0
  44. package/build/lib/io/NVMFileIO.d.ts.map +1 -0
  45. package/build/lib/io/NVMFileIO.js +86 -0
  46. package/build/lib/io/NVMFileIO.js.map +1 -0
  47. package/build/lib/io/NVMMemoryIO.d.ts +20 -0
  48. package/build/lib/io/NVMMemoryIO.d.ts.map +1 -0
  49. package/build/lib/io/NVMMemoryIO.js +48 -0
  50. package/build/lib/io/NVMMemoryIO.js.map +1 -0
  51. package/build/lib/nvm3/adapter.d.ts +33 -0
  52. package/build/lib/nvm3/adapter.d.ts.map +1 -0
  53. package/build/lib/nvm3/adapter.js +903 -0
  54. package/build/lib/nvm3/adapter.js.map +1 -0
  55. package/build/lib/nvm3/consts.d.ts.map +1 -0
  56. package/build/lib/nvm3/consts.js.map +1 -0
  57. package/build/{files → lib/nvm3/files}/ApplicationCCsFile.d.ts +5 -3
  58. package/build/lib/nvm3/files/ApplicationCCsFile.d.ts.map +1 -0
  59. package/build/{files → lib/nvm3/files}/ApplicationCCsFile.js +4 -3
  60. package/build/lib/nvm3/files/ApplicationCCsFile.js.map +1 -0
  61. package/build/{files → lib/nvm3/files}/ApplicationDataFile.d.ts +4 -4
  62. package/build/lib/nvm3/files/ApplicationDataFile.d.ts.map +1 -0
  63. package/build/{files → lib/nvm3/files}/ApplicationDataFile.js +7 -6
  64. package/build/lib/nvm3/files/ApplicationDataFile.js.map +1 -0
  65. package/build/{files → lib/nvm3/files}/ApplicationNameFile.d.ts +5 -3
  66. package/build/lib/nvm3/files/ApplicationNameFile.d.ts.map +1 -0
  67. package/build/{files → lib/nvm3/files}/ApplicationNameFile.js +4 -3
  68. package/build/lib/nvm3/files/ApplicationNameFile.js.map +1 -0
  69. package/build/{files → lib/nvm3/files}/ApplicationRFConfigFile.d.ts +5 -3
  70. package/build/lib/nvm3/files/ApplicationRFConfigFile.d.ts.map +1 -0
  71. package/build/{files → lib/nvm3/files}/ApplicationRFConfigFile.js +4 -3
  72. package/build/lib/nvm3/files/ApplicationRFConfigFile.js.map +1 -0
  73. package/build/{files → lib/nvm3/files}/ApplicationTypeFile.d.ts +5 -3
  74. package/build/lib/nvm3/files/ApplicationTypeFile.d.ts.map +1 -0
  75. package/build/{files → lib/nvm3/files}/ApplicationTypeFile.js +4 -3
  76. package/build/lib/nvm3/files/ApplicationTypeFile.js.map +1 -0
  77. package/build/{files → lib/nvm3/files}/ControllerInfoFile.d.ts +5 -3
  78. package/build/lib/nvm3/files/ControllerInfoFile.d.ts.map +1 -0
  79. package/build/{files → lib/nvm3/files}/ControllerInfoFile.js +4 -3
  80. package/build/lib/nvm3/files/ControllerInfoFile.js.map +1 -0
  81. package/build/{files → lib/nvm3/files}/NVMFile.d.ts +18 -7
  82. package/build/lib/nvm3/files/NVMFile.d.ts.map +1 -0
  83. package/build/{files → lib/nvm3/files}/NVMFile.js +44 -30
  84. package/build/lib/nvm3/files/NVMFile.js.map +1 -0
  85. package/build/{files → lib/nvm3/files}/NodeInfoFiles.d.ts +10 -4
  86. package/build/lib/nvm3/files/NodeInfoFiles.d.ts.map +1 -0
  87. package/build/{files → lib/nvm3/files}/NodeInfoFiles.js +6 -3
  88. package/build/lib/nvm3/files/NodeInfoFiles.js.map +1 -0
  89. package/build/{files → lib/nvm3/files}/ProtocolNodeMaskFiles.d.ts +22 -15
  90. package/build/lib/nvm3/files/ProtocolNodeMaskFiles.d.ts.map +1 -0
  91. package/build/{files → lib/nvm3/files}/ProtocolNodeMaskFiles.js +50 -30
  92. package/build/lib/nvm3/files/ProtocolNodeMaskFiles.js.map +1 -0
  93. package/build/{files → lib/nvm3/files}/RouteCacheFiles.d.ts +8 -17
  94. package/build/lib/nvm3/files/RouteCacheFiles.d.ts.map +1 -0
  95. package/build/{files → lib/nvm3/files}/RouteCacheFiles.js +16 -64
  96. package/build/lib/nvm3/files/RouteCacheFiles.js.map +1 -0
  97. package/build/{files → lib/nvm3/files}/SUCUpdateEntriesFile.d.ts +10 -13
  98. package/build/lib/nvm3/files/SUCUpdateEntriesFile.d.ts.map +1 -0
  99. package/build/{files → lib/nvm3/files}/SUCUpdateEntriesFile.js +15 -42
  100. package/build/lib/nvm3/files/SUCUpdateEntriesFile.js.map +1 -0
  101. package/build/{files → lib/nvm3/files}/VersionFiles.d.ts +7 -5
  102. package/build/lib/nvm3/files/VersionFiles.d.ts.map +1 -0
  103. package/build/{files → lib/nvm3/files}/VersionFiles.js +10 -7
  104. package/build/lib/nvm3/files/VersionFiles.js.map +1 -0
  105. package/build/{files → lib/nvm3/files}/index.d.ts +1 -0
  106. package/build/lib/nvm3/files/index.d.ts.map +1 -0
  107. package/build/{files → lib/nvm3/files}/index.js +1 -0
  108. package/build/lib/nvm3/files/index.js.map +1 -0
  109. package/build/lib/nvm3/object.d.ts +29 -0
  110. package/build/lib/nvm3/object.d.ts.map +1 -0
  111. package/build/lib/nvm3/object.js +118 -0
  112. package/build/lib/nvm3/object.js.map +1 -0
  113. package/build/{nvm3 → lib/nvm3}/page.d.ts +1 -5
  114. package/build/lib/nvm3/page.d.ts.map +1 -0
  115. package/build/lib/nvm3/page.js +37 -0
  116. package/build/lib/nvm3/page.js.map +1 -0
  117. package/build/{nvm3 → lib/nvm3}/utils.d.ts +2 -4
  118. package/build/lib/nvm3/utils.d.ts.map +1 -0
  119. package/build/lib/nvm3/utils.js +143 -0
  120. package/build/lib/nvm3/utils.js.map +1 -0
  121. package/build/lib/nvm500/EntryParsers.d.ts.map +1 -0
  122. package/build/lib/nvm500/EntryParsers.js.map +1 -0
  123. package/build/lib/nvm500/adapter.d.ts +22 -0
  124. package/build/lib/nvm500/adapter.d.ts.map +1 -0
  125. package/build/lib/nvm500/adapter.js +371 -0
  126. package/build/lib/nvm500/adapter.js.map +1 -0
  127. package/build/lib/nvm500/impls/Bridge_6_6x.d.ts +3 -0
  128. package/build/lib/nvm500/impls/Bridge_6_6x.d.ts.map +1 -0
  129. package/build/{nvm500/parsers → lib/nvm500/impls}/Bridge_6_6x.js +1 -1
  130. package/build/lib/nvm500/impls/Bridge_6_6x.js.map +1 -0
  131. package/build/lib/nvm500/impls/Bridge_6_7x.d.ts +3 -0
  132. package/build/lib/nvm500/impls/Bridge_6_7x.d.ts.map +1 -0
  133. package/build/{nvm500/parsers → lib/nvm500/impls}/Bridge_6_7x.js +1 -1
  134. package/build/lib/nvm500/impls/Bridge_6_7x.js.map +1 -0
  135. package/build/lib/nvm500/impls/Bridge_6_8x.d.ts +3 -0
  136. package/build/lib/nvm500/impls/Bridge_6_8x.d.ts.map +1 -0
  137. package/build/{nvm500/parsers → lib/nvm500/impls}/Bridge_6_8x.js +1 -1
  138. package/build/lib/nvm500/impls/Bridge_6_8x.js.map +1 -0
  139. package/build/lib/nvm500/impls/Static_6_6x.d.ts +3 -0
  140. package/build/lib/nvm500/impls/Static_6_6x.d.ts.map +1 -0
  141. package/build/{nvm500/parsers → lib/nvm500/impls}/Static_6_6x.js +1 -1
  142. package/build/lib/nvm500/impls/Static_6_6x.js.map +1 -0
  143. package/build/lib/nvm500/impls/Static_6_7x.d.ts +3 -0
  144. package/build/lib/nvm500/impls/Static_6_7x.d.ts.map +1 -0
  145. package/build/{nvm500/parsers → lib/nvm500/impls}/Static_6_7x.js +1 -1
  146. package/build/lib/nvm500/impls/Static_6_7x.js.map +1 -0
  147. package/build/lib/nvm500/impls/Static_6_8x.d.ts +3 -0
  148. package/build/lib/nvm500/impls/Static_6_8x.d.ts.map +1 -0
  149. package/build/{nvm500/parsers → lib/nvm500/impls}/Static_6_8x.js +1 -1
  150. package/build/lib/nvm500/impls/Static_6_8x.js.map +1 -0
  151. package/build/lib/nvm500/impls/index.d.ts +2 -0
  152. package/build/lib/nvm500/impls/index.d.ts.map +1 -0
  153. package/build/lib/nvm500/impls/index.js +18 -0
  154. package/build/lib/nvm500/impls/index.js.map +1 -0
  155. package/build/{nvm500 → lib/nvm500}/shared.d.ts +19 -2
  156. package/build/lib/nvm500/shared.d.ts.map +1 -0
  157. package/build/{nvm500 → lib/nvm500}/shared.js +19 -1
  158. package/build/lib/nvm500/shared.js.map +1 -0
  159. package/build/nvm500/NVMParser.d.ts +5 -36
  160. package/build/nvm500/NVMParser.d.ts.map +1 -1
  161. package/build/nvm500/NVMParser.js +0 -524
  162. package/build/nvm500/NVMParser.js.map +1 -1
  163. package/package.json +2 -2
  164. package/build/files/ApplicationCCsFile.d.ts.map +0 -1
  165. package/build/files/ApplicationCCsFile.js.map +0 -1
  166. package/build/files/ApplicationDataFile.d.ts.map +0 -1
  167. package/build/files/ApplicationDataFile.js.map +0 -1
  168. package/build/files/ApplicationNameFile.d.ts.map +0 -1
  169. package/build/files/ApplicationNameFile.js.map +0 -1
  170. package/build/files/ApplicationRFConfigFile.d.ts.map +0 -1
  171. package/build/files/ApplicationRFConfigFile.js.map +0 -1
  172. package/build/files/ApplicationTypeFile.d.ts.map +0 -1
  173. package/build/files/ApplicationTypeFile.js.map +0 -1
  174. package/build/files/ControllerInfoFile.d.ts.map +0 -1
  175. package/build/files/ControllerInfoFile.js.map +0 -1
  176. package/build/files/NVMFile.d.ts.map +0 -1
  177. package/build/files/NVMFile.js.map +0 -1
  178. package/build/files/NodeInfoFiles.d.ts.map +0 -1
  179. package/build/files/NodeInfoFiles.js.map +0 -1
  180. package/build/files/ProtocolNodeMaskFiles.d.ts.map +0 -1
  181. package/build/files/ProtocolNodeMaskFiles.js.map +0 -1
  182. package/build/files/RouteCacheFiles.d.ts.map +0 -1
  183. package/build/files/RouteCacheFiles.js.map +0 -1
  184. package/build/files/SUCUpdateEntriesFile.d.ts.map +0 -1
  185. package/build/files/SUCUpdateEntriesFile.js.map +0 -1
  186. package/build/files/VersionFiles.d.ts.map +0 -1
  187. package/build/files/VersionFiles.js.map +0 -1
  188. package/build/files/index.d.ts.map +0 -1
  189. package/build/files/index.js.map +0 -1
  190. package/build/nvm3/consts.d.ts.map +0 -1
  191. package/build/nvm3/consts.js.map +0 -1
  192. package/build/nvm3/nvm.d.ts +0 -31
  193. package/build/nvm3/nvm.d.ts.map +0 -1
  194. package/build/nvm3/nvm.js +0 -184
  195. package/build/nvm3/nvm.js.map +0 -1
  196. package/build/nvm3/object.d.ts +0 -25
  197. package/build/nvm3/object.d.ts.map +0 -1
  198. package/build/nvm3/object.js +0 -197
  199. package/build/nvm3/object.js.map +0 -1
  200. package/build/nvm3/page.d.ts.map +0 -1
  201. package/build/nvm3/page.js +0 -129
  202. package/build/nvm3/page.js.map +0 -1
  203. package/build/nvm3/utils.d.ts.map +0 -1
  204. package/build/nvm3/utils.js +0 -103
  205. package/build/nvm3/utils.js.map +0 -1
  206. package/build/nvm500/EntryParsers.d.ts.map +0 -1
  207. package/build/nvm500/EntryParsers.js.map +0 -1
  208. package/build/nvm500/parsers/Bridge_6_6x.d.ts +0 -3
  209. package/build/nvm500/parsers/Bridge_6_6x.d.ts.map +0 -1
  210. package/build/nvm500/parsers/Bridge_6_6x.js.map +0 -1
  211. package/build/nvm500/parsers/Bridge_6_7x.d.ts +0 -3
  212. package/build/nvm500/parsers/Bridge_6_7x.d.ts.map +0 -1
  213. package/build/nvm500/parsers/Bridge_6_7x.js.map +0 -1
  214. package/build/nvm500/parsers/Bridge_6_8x.d.ts +0 -3
  215. package/build/nvm500/parsers/Bridge_6_8x.d.ts.map +0 -1
  216. package/build/nvm500/parsers/Bridge_6_8x.js.map +0 -1
  217. package/build/nvm500/parsers/Static_6_6x.d.ts +0 -3
  218. package/build/nvm500/parsers/Static_6_6x.d.ts.map +0 -1
  219. package/build/nvm500/parsers/Static_6_6x.js.map +0 -1
  220. package/build/nvm500/parsers/Static_6_7x.d.ts +0 -3
  221. package/build/nvm500/parsers/Static_6_7x.d.ts.map +0 -1
  222. package/build/nvm500/parsers/Static_6_7x.js.map +0 -1
  223. package/build/nvm500/parsers/Static_6_8x.d.ts +0 -3
  224. package/build/nvm500/parsers/Static_6_8x.d.ts.map +0 -1
  225. package/build/nvm500/parsers/Static_6_8x.js.map +0 -1
  226. package/build/nvm500/shared.d.ts.map +0 -1
  227. package/build/nvm500/shared.js.map +0 -1
  228. package/build/shared.d.ts +0 -2
  229. package/build/shared.d.ts.map +0 -1
  230. package/build/shared.js +0 -3
  231. package/build/shared.js.map +0 -1
  232. /package/build/{nvm3 → lib/nvm3}/consts.d.ts +0 -0
  233. /package/build/{nvm3 → lib/nvm3}/consts.js +0 -0
  234. /package/build/{nvm500 → lib/nvm500}/EntryParsers.d.ts +0 -0
  235. /package/build/{nvm500 → lib/nvm500}/EntryParsers.js +0 -0
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pageSizeToBits = pageSizeToBits;
4
+ exports.pageSizeFromBits = pageSizeFromBits;
5
+ exports.serializePageHeader = serializePageHeader;
6
+ const consts_1 = require("./consts");
7
+ const utils_1 = require("./utils");
8
+ // The page size field has a value from 0 to 7 describing page sizes from 512 to 65536 bytes
9
+ function pageSizeToBits(pageSize) {
10
+ return Math.ceil(Math.log2(pageSize) - Math.log2(consts_1.NVM3_MIN_PAGE_SIZE));
11
+ }
12
+ function pageSizeFromBits(bits) {
13
+ return consts_1.NVM3_MIN_PAGE_SIZE * Math.pow(2, bits);
14
+ }
15
+ function serializePageHeader(header) {
16
+ const ret = Buffer.alloc(consts_1.NVM3_PAGE_HEADER_SIZE);
17
+ ret.writeUInt16LE(header.version, 0);
18
+ ret.writeUInt16LE(consts_1.NVM3_PAGE_MAGIC, 2);
19
+ let eraseCount = header.eraseCount & consts_1.NVM3_PAGE_COUNTER_MASK;
20
+ const eraseCountCode = (0, utils_1.computeBergerCode)(eraseCount, consts_1.NVM3_PAGE_COUNTER_SIZE);
21
+ eraseCount |= eraseCountCode << consts_1.NVM3_PAGE_COUNTER_SIZE;
22
+ ret.writeInt32LE(eraseCount, 4);
23
+ let eraseCountInv = ~header.eraseCount & consts_1.NVM3_PAGE_COUNTER_MASK;
24
+ const eraseCountInvCode = (0, utils_1.computeBergerCode)(eraseCountInv, consts_1.NVM3_PAGE_COUNTER_SIZE);
25
+ eraseCountInv |= eraseCountInvCode << consts_1.NVM3_PAGE_COUNTER_SIZE;
26
+ ret.writeInt32LE(eraseCountInv, 8);
27
+ ret.writeUInt32LE(header.status, 12);
28
+ const devInfo = (header.deviceFamily & 0x7ff)
29
+ | ((header.writeSize & 0b1) << 11)
30
+ | ((header.memoryMapped ? 1 : 0) << 12)
31
+ | (pageSizeToBits(header.pageSize) << 13);
32
+ ret.writeUInt16LE(devInfo, 16);
33
+ const formatInfo = header.encrypted ? 0xfffe : 0xffff;
34
+ ret.writeUInt16LE(formatInfo, 18);
35
+ return ret;
36
+ }
37
+ //# sourceMappingURL=page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/lib/nvm3/page.ts"],"names":[],"mappings":";;AA8BA,wCAEC;AAED,4CAEC;AAED,kDAoCC;AA1ED,qCAQkB;AAElB,mCAA4C;AAmB5C,4FAA4F;AAC5F,SAAgB,cAAc,CAAC,QAAgB;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,2BAAkB,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAY;IAC5C,OAAO,2BAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,mBAAmB,CAClC,MAAsC;IAEtC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,8BAAqB,CAAC,CAAC;IAEhD,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACrC,GAAG,CAAC,aAAa,CAAC,wBAAe,EAAE,CAAC,CAAC,CAAC;IAEtC,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,+BAAsB,CAAC;IAC5D,MAAM,cAAc,GAAG,IAAA,yBAAiB,EACvC,UAAU,EACV,+BAAsB,CACtB,CAAC;IACF,UAAU,IAAI,cAAc,IAAI,+BAAsB,CAAC;IACvD,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAEhC,IAAI,aAAa,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,+BAAsB,CAAC;IAChE,MAAM,iBAAiB,GAAG,IAAA,yBAAiB,EAC1C,aAAa,EACb,+BAAsB,CACtB,CAAC;IACF,aAAa,IAAI,iBAAiB,IAAI,+BAAsB,CAAC;IAC7D,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAEnC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;UAC1C,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;UAChC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;UACrC,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAE/B,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACtD,GAAG,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAElC,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -1,11 +1,9 @@
1
- import type { NVM3Object } from "./object";
2
- import type { NVM3Page } from "./page";
1
+ import { type NVM3 } from "../NVM3";
3
2
  /** Counts the number of unset bits in the given word */
4
3
  export declare function computeBergerCode(word: number, numBits?: number): number;
5
4
  export declare function validateBergerCode(word: number, code: number, numBits?: number): void;
6
5
  export declare function computeBergerCodeMulti(words: number[], numBits: number): number;
7
6
  export declare function validateBergerCodeMulti(words: number[], numBits: number): void;
8
7
  export declare function mapToObject<T, TMap extends Map<string | number, T>>(map: TMap): Record<string, T>;
9
- export declare function dumpPage(page: NVM3Page, json?: boolean): void;
10
- export declare function dumpObject(obj: NVM3Object, json?: boolean): void;
8
+ export declare function dumpNVM(nvm: NVM3): Promise<void>;
11
9
  //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/nvm3/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAKpC,wDAAwD;AACxD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAW,GAAG,MAAM,CAc5E;AAED,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAW,GAClB,IAAI,CAON;AAED,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,MAAM,GACb,MAAM,CAQR;AAED,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,MAAM,GACb,IAAI,CAmBN;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,EAClE,GAAG,EAAE,IAAI,GACP,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAMnB;AAwCD,wBAAsB,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDtD"}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeBergerCode = computeBergerCode;
4
+ exports.validateBergerCode = validateBergerCode;
5
+ exports.computeBergerCodeMulti = computeBergerCodeMulti;
6
+ exports.validateBergerCodeMulti = validateBergerCodeMulti;
7
+ exports.mapToObject = mapToObject;
8
+ exports.dumpNVM = dumpNVM;
9
+ const safe_1 = require("@zwave-js/core/safe");
10
+ const shared_1 = require("@zwave-js/shared");
11
+ const consts_1 = require("./consts");
12
+ const NVMFile_1 = require("./files/NVMFile");
13
+ /** Counts the number of unset bits in the given word */
14
+ function computeBergerCode(word, numBits = 32) {
15
+ let ret = word;
16
+ // Mask the number of bits we're interested in
17
+ if (numBits < 32) {
18
+ ret &= (1 << numBits) - 1;
19
+ }
20
+ // And count the bits, see http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel
21
+ ret = ret - ((ret >> 1) & 0x55555555);
22
+ ret = (ret & 0x33333333) + ((ret >> 2) & 0x33333333);
23
+ ret = (((ret + (ret >> 4)) & 0xf0f0f0f) * 0x1010101) >> 24;
24
+ return numBits - ret;
25
+ }
26
+ function validateBergerCode(word, code, numBits = 32) {
27
+ if (computeBergerCode(word, numBits) !== code) {
28
+ throw new safe_1.ZWaveError("Berger Code validation failed!", safe_1.ZWaveErrorCodes.NVM_InvalidFormat);
29
+ }
30
+ }
31
+ function computeBergerCodeMulti(words, numBits) {
32
+ let ret = 0;
33
+ for (const word of words) {
34
+ ret += computeBergerCode(word, Math.min(numBits, 32));
35
+ if (numBits < 32)
36
+ break;
37
+ numBits -= 32;
38
+ }
39
+ return ret;
40
+ }
41
+ function validateBergerCodeMulti(words, numBits) {
42
+ let actual = 0;
43
+ let expected;
44
+ for (const word of words) {
45
+ actual += computeBergerCode(word, Math.min(numBits, 32));
46
+ if (numBits < 32) {
47
+ const maskSize = 32 - numBits;
48
+ const mask = (1 << maskSize) - 1;
49
+ expected = (word >>> numBits) & mask;
50
+ break;
51
+ }
52
+ numBits -= 32;
53
+ }
54
+ if (actual !== expected) {
55
+ throw new safe_1.ZWaveError("Berger Code validation failed!", safe_1.ZWaveErrorCodes.NVM_InvalidFormat);
56
+ }
57
+ }
58
+ function mapToObject(map) {
59
+ const obj = {};
60
+ for (const [key, value] of map) {
61
+ obj[key] = value;
62
+ }
63
+ return obj;
64
+ }
65
+ function dumpObject(obj, json = false) {
66
+ try {
67
+ if (json) {
68
+ const file = NVMFile_1.NVMFile.from(obj.key, obj.data, "7.0.0");
69
+ console.log(JSON.stringify({
70
+ offset: (0, shared_1.num2hex)(obj.offset),
71
+ ...file.toJSON(),
72
+ }, null, 2));
73
+ console.log();
74
+ return;
75
+ }
76
+ }
77
+ catch {
78
+ // ignore
79
+ }
80
+ const prefix = json ? "" : " ";
81
+ console.log(`${prefix}· offset: ${(0, shared_1.num2hex)(obj.offset)}`);
82
+ console.log(`${prefix} key: 0x${obj.key.toString(16)}`);
83
+ console.log(`${prefix} type: ${consts_1.ObjectType[obj.type]}`);
84
+ console.log(`${prefix} fragment type: ${consts_1.FragmentType[obj.fragmentType]}`);
85
+ if (obj.data) {
86
+ console.log(`${prefix} data: ${obj.data.toString("hex")} (${obj.data.length} bytes)`);
87
+ }
88
+ console.log();
89
+ }
90
+ async function dumpNVM(nvm) {
91
+ for (const [name, section] of Object.entries(nvm.info.sections)) {
92
+ console.log(`NVM section: ${name}`);
93
+ for (const page of section.pages) {
94
+ console.log("");
95
+ console.log(`page (offset 0x${page.offset.toString(16)}):`);
96
+ console.log(` version: ${page.version}`);
97
+ console.log(` eraseCount: ${page.eraseCount}`);
98
+ console.log(` status: ${consts_1.PageStatus[page.status]}`);
99
+ console.log(` encrypted: ${page.encrypted}`);
100
+ console.log(` pageSize: ${page.pageSize}`);
101
+ console.log(` writeSize: ${page.writeSize}`);
102
+ console.log(` memoryMapped: ${page.memoryMapped}`);
103
+ console.log(` deviceFamily: ${page.deviceFamily}`);
104
+ console.log("");
105
+ if (page.objects.length) {
106
+ console.log(` raw objects:`);
107
+ for (const objectHeader of page.objects) {
108
+ const objectData = objectHeader.type !== consts_1.ObjectType.Deleted
109
+ ? await nvm.readObjectData(objectHeader)
110
+ : undefined;
111
+ dumpObject({
112
+ offset: objectHeader.offset,
113
+ key: objectHeader.key,
114
+ type: objectHeader.type,
115
+ fragmentType: objectHeader.fragmentType,
116
+ data: objectData,
117
+ }, false);
118
+ }
119
+ }
120
+ }
121
+ console.log();
122
+ console.log();
123
+ }
124
+ for (const [name, section] of Object.entries(nvm.info.sections)) {
125
+ console.log(`${name} objects:`);
126
+ for (const [fileId, pageIndex] of section.objectLocations) {
127
+ const page = section.pages[pageIndex];
128
+ const objectHeader = page.objects.findLast((o) => o.key === fileId);
129
+ if (!objectHeader)
130
+ continue;
131
+ const objectData = await nvm.get(fileId);
132
+ dumpObject({
133
+ offset: objectHeader.offset,
134
+ key: fileId,
135
+ type: objectHeader.type,
136
+ fragmentType: consts_1.FragmentType.None,
137
+ data: objectData,
138
+ }, true);
139
+ }
140
+ console.log();
141
+ }
142
+ }
143
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/nvm3/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryParsers.d.ts","sourceRoot":"","sources":["../../../src/lib/nvm500/EntryParsers.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,gBAAgB,EAGrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAU,GAChB,aAAa,CAgBf;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,aAAa,GAAG,MAAM,CAiBrE;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAU,GAChB,mBAAmB,CAMrB;AAED,wBAAgB,yBAAyB,CACxC,WAAW,EAAE,mBAAmB,GAC9B,MAAM,CAQR;AAED,MAAM,WAAW,cAChB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;IAExD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACZ,cAAc,CAchB;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAWrE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryParsers.js","sourceRoot":"","sources":["../../../src/lib/nvm500/EntryParsers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type NVM500 } from "../NVM500";
2
+ import { type NVMAdapter, type NVMProperty, type NVMPropertyToDataType } from "../common/definitions";
3
+ export declare class NVM500Adapter implements NVMAdapter {
4
+ constructor(nvm: NVM500);
5
+ private _nvm;
6
+ get<T extends NVMProperty, R extends boolean = boolean>(property: T, required?: R): Promise<R extends true ? NonNullable<NVMPropertyToDataType<T>> : (NVMPropertyToDataType<T> | undefined)>;
7
+ private getOnly;
8
+ private getSingle;
9
+ private getAll;
10
+ private getControllerNVMProperty;
11
+ private getNodeNVMProperty;
12
+ private setOnly;
13
+ private setSingle;
14
+ private setAll;
15
+ set<T extends NVMProperty>(property: T, value: NVMPropertyToDataType<T>): Promise<void>;
16
+ private setControllerNVMProperty;
17
+ private setNodeNVMProperty;
18
+ delete(_property: NVMProperty): Promise<void>;
19
+ hasPendingChanges(): boolean;
20
+ commit(): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/nvm500/adapter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,WAAW,CAAC;AACzD,OAAO,EAEN,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAE1B,MAAM,uBAAuB,CAAC;AAY/B,qBAAa,aAAc,YAAW,UAAU;gBAC5B,GAAG,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI,CAAS;IAER,GAAG,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO,EAClE,QAAQ,EAAE,CAAC,EACX,QAAQ,CAAC,EAAE,CAAC,GACV,OAAO,CACT,CAAC,SAAS,IAAI,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,GACnD,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CACzC;YAuBa,OAAO;YAOP,SAAS;IAQvB,OAAO,CAAC,MAAM;YAMA,wBAAwB;YAiLxB,kBAAkB;IA2ChC,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,MAAM;IAOd,GAAG,CAAC,CAAC,SAAS,WAAW,EACxB,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC;YAaF,wBAAwB;YAiMxB,kBAAkB;IA0DnB,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,iBAAiB,IAAI,OAAO;IAKtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
@@ -0,0 +1,371 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NVM500Adapter = void 0;
4
+ const core_1 = require("@zwave-js/core");
5
+ const helpers_1 = require("alcalzone-shared/helpers");
6
+ const consts_1 = require("../../consts");
7
+ const shared_1 = require("./shared");
8
+ class NVM500Adapter {
9
+ constructor(nvm) {
10
+ this._nvm = nvm;
11
+ }
12
+ _nvm;
13
+ async get(property, required) {
14
+ const info = this._nvm.info ?? await this._nvm.init();
15
+ let ret;
16
+ if (property.domain === "controller") {
17
+ ret = await this.getControllerNVMProperty(info, property);
18
+ }
19
+ else if (property.domain === "lrnode") {
20
+ throw new core_1.ZWaveError(`500 series NVM has no support for Long Range node information`, core_1.ZWaveErrorCodes.NVM_ObjectNotFound);
21
+ }
22
+ else {
23
+ ret = await this.getNodeNVMProperty(property);
24
+ }
25
+ if (required && ret === undefined) {
26
+ throw new core_1.ZWaveError(`NVM data for property ${JSON.stringify(property)} not found`, core_1.ZWaveErrorCodes.NVM_ObjectNotFound);
27
+ }
28
+ return ret;
29
+ }
30
+ async getOnly(property) {
31
+ const data = await this._nvm.get(property);
32
+ return data?.[0];
33
+ }
34
+ async getSingle(property, index) {
35
+ const data = await this._nvm.getSingle(property, index);
36
+ return data;
37
+ }
38
+ getAll(property) {
39
+ return this._nvm.get(property);
40
+ }
41
+ async getControllerNVMProperty(info, property) {
42
+ switch (property.type) {
43
+ case "protocolVersion":
44
+ return info.nvmDescriptor.protocolVersion;
45
+ case "applicationVersion":
46
+ return info.nvmDescriptor.firmwareVersion;
47
+ case "protocolFileFormat":
48
+ case "applicationFileFormat":
49
+ // Not supported in 500 series, but we use 500 in JSON to designate a 500 series NVM
50
+ return 500;
51
+ case "applicationData":
52
+ return this.getOnly("EEOFFSET_HOST_OFFSET_START_far");
53
+ case "applicationName":
54
+ // Not supported in 500 series
55
+ return;
56
+ case "homeId": {
57
+ // 500 series stores the home ID as a number
58
+ const homeId = await this.getOnly("EX_NVM_HOME_ID_far");
59
+ if (homeId == undefined)
60
+ return;
61
+ const ret = Buffer.alloc(4, 0);
62
+ // FIXME: BE? LE?
63
+ ret.writeUInt32BE(homeId, 0);
64
+ return ret;
65
+ }
66
+ case "learnedHomeId": {
67
+ // 500 series stores the home ID as a number
68
+ const homeId = await this.getOnly("NVM_HOMEID_far");
69
+ if (homeId == undefined)
70
+ return;
71
+ const ret = Buffer.alloc(4, 0);
72
+ // FIXME: BE? LE?
73
+ ret.writeUInt32BE(homeId, 0);
74
+ return ret;
75
+ }
76
+ case "nodeId":
77
+ return this.getOnly("NVM_NODEID_far");
78
+ case "lastNodeId":
79
+ return this.getOnly("EX_NVM_LAST_USED_NODE_ID_START_far");
80
+ case "staticControllerNodeId":
81
+ return this.getOnly("EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far");
82
+ case "sucLastIndex":
83
+ return this.getOnly("EX_NVM_SUC_LAST_INDEX_START_far");
84
+ case "controllerConfiguration":
85
+ return this.getOnly("EX_NVM_CONTROLLER_CONFIGURATION_far");
86
+ case "maxNodeId":
87
+ return this.getOnly("EX_NVM_MAX_NODE_ID_far");
88
+ case "reservedId":
89
+ return this.getOnly("EX_NVM_RESERVED_ID_far");
90
+ case "systemState":
91
+ return this.getOnly("NVM_SYSTEM_STATE");
92
+ case "commandClasses": {
93
+ const numCCs = await this.getOnly("EEOFFSET_CMDCLASS_LEN_far");
94
+ const ret = await this.getAll("EEOFFSET_CMDCLASS_far");
95
+ return ret?.slice(0, numCCs);
96
+ }
97
+ case "preferredRepeaters":
98
+ return this.getOnly("NVM_PREFERRED_REPEATERS_far");
99
+ case "appRouteLock": {
100
+ return this.getOnly("EX_NVM_ROUTECACHE_APP_LOCK_far");
101
+ }
102
+ case "routeSlaveSUC": {
103
+ return this.getOnly("EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far");
104
+ }
105
+ case "sucPendingUpdate": {
106
+ return this.getOnly("EX_NVM_PENDING_UPDATE_far");
107
+ }
108
+ case "pendingDiscovery": {
109
+ return this.getOnly("NVM_PENDING_DISCOVERY_far");
110
+ }
111
+ case "nodeIds": {
112
+ const nodeInfos = await this.getAll("EX_NVM_NODE_TABLE_START_far");
113
+ return nodeInfos
114
+ ?.map((info, index) => info ? (index + 1) : undefined)
115
+ .filter((id) => id != undefined);
116
+ }
117
+ case "virtualNodeIds": {
118
+ const ret = await this.getOnly("EX_NVM_BRIDGE_NODEPOOL_START_far");
119
+ return ret ?? [];
120
+ }
121
+ case "sucUpdateEntries": {
122
+ const ret = await this.getAll("EX_NVM_SUC_NODE_LIST_START_far");
123
+ return ret?.filter(Boolean);
124
+ }
125
+ case "watchdogStarted":
126
+ return this.getOnly("EEOFFSET_WATCHDOG_STARTED_far");
127
+ case "powerLevelNormal":
128
+ return this.getAll("EEOFFSET_POWERLEVEL_NORMAL_far");
129
+ case "powerLevelLow":
130
+ return this.getAll("EEOFFSET_POWERLEVEL_LOW_far");
131
+ case "powerMode":
132
+ return this.getOnly("EEOFFSET_MODULE_POWER_MODE_far");
133
+ case "powerModeExtintEnable":
134
+ return this.getOnly("EEOFFSET_MODULE_POWER_MODE_EXTINT_ENABLE_far");
135
+ case "powerModeWutTimeout":
136
+ return this.getOnly("EEOFFSET_MODULE_POWER_MODE_WUT_TIMEOUT_far");
137
+ case "sucAwarenessPushNeeded":
138
+ case "lastNodeIdLR":
139
+ case "maxNodeIdLR":
140
+ case "reservedIdLR":
141
+ case "primaryLongRangeChannelId":
142
+ case "dcdcConfig":
143
+ case "lrNodeIds":
144
+ case "includedInsecurely":
145
+ case "includedSecurelyInsecureCCs":
146
+ case "includedSecurelySecureCCs":
147
+ case "rfRegion":
148
+ case "txPower":
149
+ case "measured0dBm":
150
+ case "enablePTI":
151
+ case "maxTXPower":
152
+ case "nodeIdType":
153
+ case "isListening":
154
+ case "optionalFunctionality":
155
+ case "genericDeviceClass":
156
+ case "specificDeviceClass":
157
+ // Not supported on 500 series, 700+ series only
158
+ return;
159
+ default:
160
+ (0, helpers_1.assertNever)(property.type);
161
+ }
162
+ }
163
+ async getNodeNVMProperty(property) {
164
+ switch (property.type) {
165
+ case "info": {
166
+ const nodeId = property.nodeId;
167
+ const nodeInfo = await this.getSingle("EX_NVM_NODE_TABLE_START_far", nodeId - 1);
168
+ const sucUpdateIndex = await this.getSingle("EX_NVM_SUC_CONTROLLER_LIST_START_far", nodeId - 1) ?? 0xff;
169
+ const neighbors = await this.getSingle("EX_NVM_ROUTING_TABLE_START_far", nodeId - 1) ?? [];
170
+ if (!nodeInfo)
171
+ return;
172
+ return {
173
+ nodeId,
174
+ ...nodeInfo,
175
+ neighbors,
176
+ sucUpdateIndex,
177
+ };
178
+ }
179
+ case "routes": {
180
+ const lwr = await this.getSingle("EX_NVM_ROUTECACHE_START_far", property.nodeId - 1);
181
+ const nlwr = await this.getSingle("EX_NVM_ROUTECACHE_NLWR_SR_START_far", property.nodeId - 1);
182
+ return { lwr, nlwr };
183
+ }
184
+ }
185
+ }
186
+ setOnly(property, value) {
187
+ return this._nvm.set(property, [value]);
188
+ }
189
+ setSingle(property, index, value) {
190
+ return this._nvm.setSingle(property, index, value);
191
+ }
192
+ setAll(property, value) {
193
+ return this._nvm.set(property, value);
194
+ }
195
+ set(property, value) {
196
+ if (property.domain === "controller") {
197
+ return this.setControllerNVMProperty(property, value);
198
+ }
199
+ else if (property.domain === "lrnode") {
200
+ throw new core_1.ZWaveError(`500 series NVM has no support for Long Range node information`, core_1.ZWaveErrorCodes.NVM_ObjectNotFound);
201
+ }
202
+ else {
203
+ return this.setNodeNVMProperty(property, value);
204
+ }
205
+ }
206
+ async setControllerNVMProperty(property, value) {
207
+ switch (property.type) {
208
+ case "protocolVersion":
209
+ case "applicationVersion":
210
+ // Only written during erase
211
+ return;
212
+ case "protocolFileFormat":
213
+ case "applicationFileFormat":
214
+ // Cannot be written
215
+ return;
216
+ case "applicationData":
217
+ return this.setOnly("EEOFFSET_HOST_OFFSET_START_far", value ?? Buffer.alloc(shared_1.NVM_SERIALAPI_HOST_SIZE, 0xff));
218
+ case "applicationName":
219
+ // Not supported in 500 series
220
+ return;
221
+ case "homeId": {
222
+ // 500 series stores the home ID as a number
223
+ const homeId = value.readUInt32BE(0);
224
+ return this.setOnly("EX_NVM_HOME_ID_far", homeId);
225
+ }
226
+ case "learnedHomeId": {
227
+ // 500 series stores the home ID as a number
228
+ const learnedHomeId = value?.readUInt32BE(0) ?? 0x00000000;
229
+ return this.setOnly("NVM_HOMEID_far", learnedHomeId);
230
+ }
231
+ case "nodeId":
232
+ return this.setOnly("NVM_NODEID_far", value);
233
+ case "lastNodeId":
234
+ return this.setOnly("EX_NVM_LAST_USED_NODE_ID_START_far", value);
235
+ case "staticControllerNodeId":
236
+ return this.setOnly("EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far", value);
237
+ case "sucLastIndex":
238
+ return this.setOnly("EX_NVM_SUC_LAST_INDEX_START_far", value);
239
+ case "controllerConfiguration":
240
+ return this.setOnly("EX_NVM_CONTROLLER_CONFIGURATION_far", value);
241
+ case "maxNodeId":
242
+ return this.setOnly("EX_NVM_MAX_NODE_ID_far", value);
243
+ case "reservedId":
244
+ return this.setOnly("EX_NVM_RESERVED_ID_far", value);
245
+ case "systemState":
246
+ return this.setOnly("NVM_SYSTEM_STATE", value);
247
+ case "commandClasses": {
248
+ await this.setOnly("EEOFFSET_CMDCLASS_LEN_far", value.length);
249
+ const CCs = new Array(shared_1.APPL_NODEPARM_MAX).fill(0xff);
250
+ for (let i = 0; i < value.length; i++) {
251
+ if (i < shared_1.APPL_NODEPARM_MAX) {
252
+ CCs[i] = value[i];
253
+ }
254
+ }
255
+ await this.setAll("EEOFFSET_CMDCLASS_far", CCs);
256
+ return;
257
+ }
258
+ case "preferredRepeaters":
259
+ return this.setOnly("NVM_PREFERRED_REPEATERS_far", value);
260
+ case "appRouteLock": {
261
+ return this.setOnly("EX_NVM_ROUTECACHE_APP_LOCK_far", value);
262
+ }
263
+ case "routeSlaveSUC": {
264
+ return this.setOnly("EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far", value);
265
+ }
266
+ case "sucPendingUpdate": {
267
+ return this.setOnly("EX_NVM_PENDING_UPDATE_far", value);
268
+ }
269
+ case "pendingDiscovery": {
270
+ return this.setOnly("NVM_PENDING_DISCOVERY_far", value);
271
+ }
272
+ case "nodeIds":
273
+ // Cannot be written. Is implied by the node info table
274
+ return;
275
+ case "virtualNodeIds": {
276
+ return this.setOnly("EX_NVM_BRIDGE_NODEPOOL_START_far", value);
277
+ }
278
+ case "sucUpdateEntries": {
279
+ const entries = value;
280
+ const sucUpdateEntries = new Array(consts_1.SUC_MAX_UPDATES).fill(undefined);
281
+ for (let i = 0; i < entries.length; i++) {
282
+ if (i < consts_1.SUC_MAX_UPDATES) {
283
+ sucUpdateEntries[i] = entries[i];
284
+ }
285
+ }
286
+ return this.setAll("EX_NVM_SUC_NODE_LIST_START_far", sucUpdateEntries);
287
+ }
288
+ case "watchdogStarted":
289
+ return this.setOnly("EEOFFSET_WATCHDOG_STARTED_far", value);
290
+ case "powerLevelNormal":
291
+ return this.setAll("EEOFFSET_POWERLEVEL_NORMAL_far", value);
292
+ case "powerLevelLow":
293
+ return this.setAll("EEOFFSET_POWERLEVEL_LOW_far", value);
294
+ case "powerMode":
295
+ return this.setOnly("EEOFFSET_MODULE_POWER_MODE_far", value);
296
+ case "powerModeExtintEnable":
297
+ return this.setOnly("EEOFFSET_MODULE_POWER_MODE_EXTINT_ENABLE_far", value);
298
+ case "powerModeWutTimeout":
299
+ return this.setOnly("EEOFFSET_MODULE_POWER_MODE_WUT_TIMEOUT_far", value);
300
+ case "sucAwarenessPushNeeded":
301
+ case "lastNodeIdLR":
302
+ case "maxNodeIdLR":
303
+ case "reservedIdLR":
304
+ case "primaryLongRangeChannelId":
305
+ case "dcdcConfig":
306
+ case "lrNodeIds":
307
+ case "includedInsecurely":
308
+ case "includedSecurelyInsecureCCs":
309
+ case "includedSecurelySecureCCs":
310
+ case "rfRegion":
311
+ case "txPower":
312
+ case "measured0dBm":
313
+ case "enablePTI":
314
+ case "maxTXPower":
315
+ case "nodeIdType":
316
+ case "isListening":
317
+ case "optionalFunctionality":
318
+ case "genericDeviceClass":
319
+ case "specificDeviceClass":
320
+ // Not supported on 500 series, 700+ series only
321
+ return;
322
+ default:
323
+ (0, helpers_1.assertNever)(property.type);
324
+ }
325
+ }
326
+ async setNodeNVMProperty(property, value) {
327
+ switch (property.type) {
328
+ case "info": {
329
+ const nodeId = property.nodeId;
330
+ const node = value;
331
+ await this.setSingle("EX_NVM_NODE_TABLE_START_far", nodeId - 1, node
332
+ ? {
333
+ isListening: node.isListening,
334
+ isFrequentListening: node.isFrequentListening,
335
+ isRouting: node.isRouting,
336
+ supportedDataRates: node.supportedDataRates,
337
+ protocolVersion: node.protocolVersion,
338
+ optionalFunctionality: node.optionalFunctionality,
339
+ nodeType: node.nodeType,
340
+ supportsSecurity: node.supportsSecurity,
341
+ supportsBeaming: node.supportsBeaming,
342
+ genericDeviceClass: node.genericDeviceClass,
343
+ specificDeviceClass: node.specificDeviceClass
344
+ ?? null,
345
+ }
346
+ : undefined);
347
+ await this.setSingle("EX_NVM_SUC_CONTROLLER_LIST_START_far", nodeId - 1, node?.sucUpdateIndex ?? 0xfe);
348
+ await this.setSingle("EX_NVM_ROUTING_TABLE_START_far", nodeId - 1, node?.neighbors);
349
+ }
350
+ case "routes": {
351
+ const nodeId = property.nodeId;
352
+ const routes = value;
353
+ await this.setSingle("EX_NVM_ROUTECACHE_START_far", nodeId - 1, routes.lwr);
354
+ await this.setSingle("EX_NVM_ROUTECACHE_NLWR_SR_START_far", property.nodeId - 1, routes.nlwr);
355
+ }
356
+ }
357
+ }
358
+ // eslint-disable-next-line @typescript-eslint/require-await
359
+ async delete(_property) {
360
+ throw new Error("Method not implemented.");
361
+ }
362
+ hasPendingChanges() {
363
+ // We don't buffer changes
364
+ return false;
365
+ }
366
+ async commit() {
367
+ // We don't buffer changes at the moment
368
+ }
369
+ }
370
+ exports.NVM500Adapter = NVM500Adapter;
371
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/lib/nvm500/adapter.ts"],"names":[],"mappings":"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"}