@zwave-js/nvmedit 15.1.1 → 15.1.2

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 (192) hide show
  1. package/build/cjs/convert.d.ts +3 -3
  2. package/build/cjs/convert.js +45 -45
  3. package/build/cjs/convert.js.map +3 -3
  4. package/build/cjs/lib/NVM3.js +17 -17
  5. package/build/cjs/lib/NVM3.js.map +3 -3
  6. package/build/cjs/lib/NVM500.js +54 -54
  7. package/build/cjs/lib/NVM500.js.map +3 -3
  8. package/build/cjs/lib/common/definitions.d.ts +5 -5
  9. package/build/cjs/lib/common/definitions.js.map +1 -1
  10. package/build/cjs/lib/common/routeCache.d.ts +2 -2
  11. package/build/cjs/lib/common/routeCache.js +10 -10
  12. package/build/cjs/lib/common/routeCache.js.map +3 -3
  13. package/build/cjs/lib/common/sucUpdateEntry.d.ts +1 -1
  14. package/build/cjs/lib/common/sucUpdateEntry.js +4 -4
  15. package/build/cjs/lib/common/sucUpdateEntry.js.map +1 -1
  16. package/build/cjs/lib/common/utils.js +6 -6
  17. package/build/cjs/lib/common/utils.js.map +2 -2
  18. package/build/cjs/lib/io/BufferedNVMReader.d.ts +1 -1
  19. package/build/cjs/lib/io/BufferedNVMReader.js +2 -2
  20. package/build/cjs/lib/io/BufferedNVMReader.js.map +2 -2
  21. package/build/cjs/lib/nvm3/adapter.d.ts +2 -2
  22. package/build/cjs/lib/nvm3/adapter.js +6 -6
  23. package/build/cjs/lib/nvm3/adapter.js.map +3 -3
  24. package/build/cjs/lib/nvm3/files/ApplicationCCsFile.d.ts +2 -2
  25. package/build/cjs/lib/nvm3/files/ApplicationCCsFile.js +6 -6
  26. package/build/cjs/lib/nvm3/files/ApplicationCCsFile.js.map +3 -3
  27. package/build/cjs/lib/nvm3/files/ApplicationDataFile.d.ts +1 -1
  28. package/build/cjs/lib/nvm3/files/ApplicationDataFile.js.map +1 -1
  29. package/build/cjs/lib/nvm3/files/ApplicationNameFile.d.ts +1 -1
  30. package/build/cjs/lib/nvm3/files/ApplicationNameFile.js.map +1 -1
  31. package/build/cjs/lib/nvm3/files/ApplicationRFConfigFile.d.ts +2 -2
  32. package/build/cjs/lib/nvm3/files/ApplicationRFConfigFile.js +9 -9
  33. package/build/cjs/lib/nvm3/files/ApplicationRFConfigFile.js.map +3 -3
  34. package/build/cjs/lib/nvm3/files/ApplicationTypeFile.d.ts +1 -1
  35. package/build/cjs/lib/nvm3/files/ApplicationTypeFile.js +2 -2
  36. package/build/cjs/lib/nvm3/files/ApplicationTypeFile.js.map +2 -2
  37. package/build/cjs/lib/nvm3/files/ControllerInfoFile.js +3 -3
  38. package/build/cjs/lib/nvm3/files/ControllerInfoFile.js.map +2 -2
  39. package/build/cjs/lib/nvm3/files/NVMFile.js +4 -4
  40. package/build/cjs/lib/nvm3/files/NVMFile.js.map +2 -2
  41. package/build/cjs/lib/nvm3/files/NodeInfoFiles.d.ts +2 -2
  42. package/build/cjs/lib/nvm3/files/NodeInfoFiles.js +18 -18
  43. package/build/cjs/lib/nvm3/files/NodeInfoFiles.js.map +3 -3
  44. package/build/cjs/lib/nvm3/files/ProtocolNodeMaskFiles.d.ts +1 -1
  45. package/build/cjs/lib/nvm3/files/ProtocolNodeMaskFiles.js +5 -5
  46. package/build/cjs/lib/nvm3/files/ProtocolNodeMaskFiles.js.map +1 -1
  47. package/build/cjs/lib/nvm3/files/RouteCacheFiles.d.ts +1 -1
  48. package/build/cjs/lib/nvm3/files/RouteCacheFiles.js +11 -11
  49. package/build/cjs/lib/nvm3/files/RouteCacheFiles.js.map +3 -3
  50. package/build/cjs/lib/nvm3/files/SUCUpdateEntriesFile.d.ts +1 -1
  51. package/build/cjs/lib/nvm3/files/SUCUpdateEntriesFile.js +3 -3
  52. package/build/cjs/lib/nvm3/files/SUCUpdateEntriesFile.js.map +2 -2
  53. package/build/cjs/lib/nvm3/page.d.ts +1 -1
  54. package/build/cjs/lib/nvm3/page.js.map +1 -1
  55. package/build/cjs/lib/nvm3/utils.d.ts +1 -1
  56. package/build/cjs/lib/nvm3/utils.js +3 -3
  57. package/build/cjs/lib/nvm3/utils.js.map +1 -1
  58. package/build/cjs/lib/nvm500/EntryParsers.d.ts +2 -2
  59. package/build/cjs/lib/nvm500/EntryParsers.js +10 -10
  60. package/build/cjs/lib/nvm500/EntryParsers.js.map +3 -3
  61. package/build/cjs/lib/nvm500/adapter.d.ts +2 -2
  62. package/build/cjs/lib/nvm500/adapter.js.map +1 -1
  63. package/build/cjs/lib/nvm500/impls/Bridge_6_6x.d.ts +1 -1
  64. package/build/cjs/lib/nvm500/impls/Bridge_6_6x.js +7 -7
  65. package/build/cjs/lib/nvm500/impls/Bridge_6_6x.js.map +2 -2
  66. package/build/cjs/lib/nvm500/impls/Bridge_6_7x.d.ts +1 -1
  67. package/build/cjs/lib/nvm500/impls/Bridge_6_7x.js +7 -7
  68. package/build/cjs/lib/nvm500/impls/Bridge_6_7x.js.map +2 -2
  69. package/build/cjs/lib/nvm500/impls/Bridge_6_8x.d.ts +1 -1
  70. package/build/cjs/lib/nvm500/impls/Bridge_6_8x.js +7 -7
  71. package/build/cjs/lib/nvm500/impls/Bridge_6_8x.js.map +2 -2
  72. package/build/cjs/lib/nvm500/impls/Static_6_6x.d.ts +1 -1
  73. package/build/cjs/lib/nvm500/impls/Static_6_6x.js +7 -7
  74. package/build/cjs/lib/nvm500/impls/Static_6_6x.js.map +2 -2
  75. package/build/cjs/lib/nvm500/impls/Static_6_7x.d.ts +1 -1
  76. package/build/cjs/lib/nvm500/impls/Static_6_7x.js +7 -7
  77. package/build/cjs/lib/nvm500/impls/Static_6_7x.js.map +2 -2
  78. package/build/cjs/lib/nvm500/impls/Static_6_8x.d.ts +1 -1
  79. package/build/cjs/lib/nvm500/impls/Static_6_8x.js +7 -7
  80. package/build/cjs/lib/nvm500/impls/Static_6_8x.js.map +2 -2
  81. package/build/cjs/lib/nvm500/shared.d.ts +2 -2
  82. package/build/cjs/lib/nvm500/shared.js +2 -2
  83. package/build/cjs/lib/nvm500/shared.js.map +1 -1
  84. package/build/cjs/nvm500/NVMParser.d.ts +5 -5
  85. package/build/esm/convert.d.ts +3 -3
  86. package/build/esm/convert.d.ts.map +1 -1
  87. package/build/esm/convert.js +2 -2
  88. package/build/esm/convert.js.map +1 -1
  89. package/build/esm/lib/NVM3.js +2 -2
  90. package/build/esm/lib/NVM3.js.map +1 -1
  91. package/build/esm/lib/NVM500.js +1 -1
  92. package/build/esm/lib/NVM500.js.map +1 -1
  93. package/build/esm/lib/common/definitions.d.ts +5 -5
  94. package/build/esm/lib/common/definitions.d.ts.map +1 -1
  95. package/build/esm/lib/common/routeCache.d.ts +2 -2
  96. package/build/esm/lib/common/routeCache.d.ts.map +1 -1
  97. package/build/esm/lib/common/routeCache.js +2 -2
  98. package/build/esm/lib/common/routeCache.js.map +1 -1
  99. package/build/esm/lib/common/sucUpdateEntry.d.ts +1 -1
  100. package/build/esm/lib/common/sucUpdateEntry.d.ts.map +1 -1
  101. package/build/esm/lib/common/sucUpdateEntry.js +1 -1
  102. package/build/esm/lib/common/sucUpdateEntry.js.map +1 -1
  103. package/build/esm/lib/common/utils.js +1 -1
  104. package/build/esm/lib/common/utils.js.map +1 -1
  105. package/build/esm/lib/io/BufferedNVMReader.d.ts +1 -1
  106. package/build/esm/lib/io/BufferedNVMReader.d.ts.map +1 -1
  107. package/build/esm/lib/io/BufferedNVMReader.js +1 -1
  108. package/build/esm/lib/io/BufferedNVMReader.js.map +1 -1
  109. package/build/esm/lib/nvm3/adapter.d.ts +2 -2
  110. package/build/esm/lib/nvm3/adapter.d.ts.map +1 -1
  111. package/build/esm/lib/nvm3/adapter.js +2 -2
  112. package/build/esm/lib/nvm3/adapter.js.map +1 -1
  113. package/build/esm/lib/nvm3/files/ApplicationCCsFile.d.ts +2 -2
  114. package/build/esm/lib/nvm3/files/ApplicationCCsFile.d.ts.map +1 -1
  115. package/build/esm/lib/nvm3/files/ApplicationCCsFile.js +2 -2
  116. package/build/esm/lib/nvm3/files/ApplicationCCsFile.js.map +1 -1
  117. package/build/esm/lib/nvm3/files/ApplicationDataFile.d.ts +1 -1
  118. package/build/esm/lib/nvm3/files/ApplicationDataFile.d.ts.map +1 -1
  119. package/build/esm/lib/nvm3/files/ApplicationNameFile.d.ts +1 -1
  120. package/build/esm/lib/nvm3/files/ApplicationNameFile.d.ts.map +1 -1
  121. package/build/esm/lib/nvm3/files/ApplicationRFConfigFile.d.ts +2 -2
  122. package/build/esm/lib/nvm3/files/ApplicationRFConfigFile.d.ts.map +1 -1
  123. package/build/esm/lib/nvm3/files/ApplicationRFConfigFile.js +2 -2
  124. package/build/esm/lib/nvm3/files/ApplicationRFConfigFile.js.map +1 -1
  125. package/build/esm/lib/nvm3/files/ApplicationTypeFile.d.ts +1 -1
  126. package/build/esm/lib/nvm3/files/ApplicationTypeFile.d.ts.map +1 -1
  127. package/build/esm/lib/nvm3/files/ApplicationTypeFile.js +1 -1
  128. package/build/esm/lib/nvm3/files/ApplicationTypeFile.js.map +1 -1
  129. package/build/esm/lib/nvm3/files/ControllerInfoFile.d.ts.map +1 -1
  130. package/build/esm/lib/nvm3/files/ControllerInfoFile.js +1 -1
  131. package/build/esm/lib/nvm3/files/ControllerInfoFile.js.map +1 -1
  132. package/build/esm/lib/nvm3/files/NVMFile.js +1 -1
  133. package/build/esm/lib/nvm3/files/NVMFile.js.map +1 -1
  134. package/build/esm/lib/nvm3/files/NodeInfoFiles.d.ts +2 -2
  135. package/build/esm/lib/nvm3/files/NodeInfoFiles.d.ts.map +1 -1
  136. package/build/esm/lib/nvm3/files/NodeInfoFiles.js +2 -2
  137. package/build/esm/lib/nvm3/files/NodeInfoFiles.js.map +1 -1
  138. package/build/esm/lib/nvm3/files/ProtocolNodeMaskFiles.d.ts +1 -1
  139. package/build/esm/lib/nvm3/files/ProtocolNodeMaskFiles.d.ts.map +1 -1
  140. package/build/esm/lib/nvm3/files/ProtocolNodeMaskFiles.js +1 -1
  141. package/build/esm/lib/nvm3/files/ProtocolNodeMaskFiles.js.map +1 -1
  142. package/build/esm/lib/nvm3/files/RouteCacheFiles.d.ts +1 -1
  143. package/build/esm/lib/nvm3/files/RouteCacheFiles.d.ts.map +1 -1
  144. package/build/esm/lib/nvm3/files/RouteCacheFiles.js +2 -2
  145. package/build/esm/lib/nvm3/files/RouteCacheFiles.js.map +1 -1
  146. package/build/esm/lib/nvm3/files/SUCUpdateEntriesFile.d.ts +1 -1
  147. package/build/esm/lib/nvm3/files/SUCUpdateEntriesFile.d.ts.map +1 -1
  148. package/build/esm/lib/nvm3/files/SUCUpdateEntriesFile.js +1 -1
  149. package/build/esm/lib/nvm3/files/SUCUpdateEntriesFile.js.map +1 -1
  150. package/build/esm/lib/nvm3/page.d.ts +1 -1
  151. package/build/esm/lib/nvm3/page.d.ts.map +1 -1
  152. package/build/esm/lib/nvm3/utils.d.ts +1 -1
  153. package/build/esm/lib/nvm3/utils.d.ts.map +1 -1
  154. package/build/esm/lib/nvm3/utils.js +1 -1
  155. package/build/esm/lib/nvm3/utils.js.map +1 -1
  156. package/build/esm/lib/nvm500/EntryParsers.d.ts +2 -2
  157. package/build/esm/lib/nvm500/EntryParsers.d.ts.map +1 -1
  158. package/build/esm/lib/nvm500/EntryParsers.js +2 -2
  159. package/build/esm/lib/nvm500/EntryParsers.js.map +1 -1
  160. package/build/esm/lib/nvm500/adapter.d.ts +2 -2
  161. package/build/esm/lib/nvm500/adapter.d.ts.map +1 -1
  162. package/build/esm/lib/nvm500/impls/Bridge_6_6x.d.ts +1 -1
  163. package/build/esm/lib/nvm500/impls/Bridge_6_6x.d.ts.map +1 -1
  164. package/build/esm/lib/nvm500/impls/Bridge_6_6x.js +1 -1
  165. package/build/esm/lib/nvm500/impls/Bridge_6_6x.js.map +1 -1
  166. package/build/esm/lib/nvm500/impls/Bridge_6_7x.d.ts +1 -1
  167. package/build/esm/lib/nvm500/impls/Bridge_6_7x.d.ts.map +1 -1
  168. package/build/esm/lib/nvm500/impls/Bridge_6_7x.js +1 -1
  169. package/build/esm/lib/nvm500/impls/Bridge_6_7x.js.map +1 -1
  170. package/build/esm/lib/nvm500/impls/Bridge_6_8x.d.ts +1 -1
  171. package/build/esm/lib/nvm500/impls/Bridge_6_8x.d.ts.map +1 -1
  172. package/build/esm/lib/nvm500/impls/Bridge_6_8x.js +1 -1
  173. package/build/esm/lib/nvm500/impls/Bridge_6_8x.js.map +1 -1
  174. package/build/esm/lib/nvm500/impls/Static_6_6x.d.ts +1 -1
  175. package/build/esm/lib/nvm500/impls/Static_6_6x.d.ts.map +1 -1
  176. package/build/esm/lib/nvm500/impls/Static_6_6x.js +1 -1
  177. package/build/esm/lib/nvm500/impls/Static_6_6x.js.map +1 -1
  178. package/build/esm/lib/nvm500/impls/Static_6_7x.d.ts +1 -1
  179. package/build/esm/lib/nvm500/impls/Static_6_7x.d.ts.map +1 -1
  180. package/build/esm/lib/nvm500/impls/Static_6_7x.js +1 -1
  181. package/build/esm/lib/nvm500/impls/Static_6_7x.js.map +1 -1
  182. package/build/esm/lib/nvm500/impls/Static_6_8x.d.ts +1 -1
  183. package/build/esm/lib/nvm500/impls/Static_6_8x.d.ts.map +1 -1
  184. package/build/esm/lib/nvm500/impls/Static_6_8x.js +1 -1
  185. package/build/esm/lib/nvm500/impls/Static_6_8x.js.map +1 -1
  186. package/build/esm/lib/nvm500/shared.d.ts +2 -2
  187. package/build/esm/lib/nvm500/shared.d.ts.map +1 -1
  188. package/build/esm/lib/nvm500/shared.js +1 -1
  189. package/build/esm/lib/nvm500/shared.js.map +1 -1
  190. package/build/esm/nvm500/NVMParser.d.ts +5 -5
  191. package/build/esm/nvm500/NVMParser.d.ts.map +1 -1
  192. package/package.json +3 -3
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/nvm3/files/SUCUpdateEntriesFile.ts"],
4
- "sourcesContent": ["import { Bytes } from \"@zwave-js/shared/safe\";\nimport { SUC_MAX_UPDATES, SUC_UPDATE_ENTRY_SIZE } from \"../../../consts.js\";\nimport {\n\ttype SUCUpdateEntry,\n\tencodeSUCUpdateEntry,\n\tparseSUCUpdateEntry,\n} from \"../../common/sucUpdateEntry.js\";\nimport type { NVM3Object } from \"../object.js\";\nimport {\n\tNVMFile,\n\ttype NVMFileCreationOptions,\n\ttype NVMFileDeserializationOptions,\n\tgotDeserializationOptions,\n\tnvmFileID,\n\tnvmSection,\n} from \"./NVMFile.js\";\n\nexport const SUC_UPDATES_PER_FILE_V5 = 8;\n\nexport interface SUCUpdateEntriesFileOptions extends NVMFileCreationOptions {\n\tupdateEntries: SUCUpdateEntry[];\n}\n\nexport const SUCUpdateEntriesFileIDV0 = 0x50003;\n\n@nvmFileID(SUCUpdateEntriesFileIDV0)\n@nvmSection(\"protocol\")\nexport class SUCUpdateEntriesFileV0 extends NVMFile {\n\tpublic constructor(\n\t\toptions: NVMFileDeserializationOptions | SUCUpdateEntriesFileOptions,\n\t) {\n\t\tsuper(options);\n\t\tif (gotDeserializationOptions(options)) {\n\t\t\tthis.updateEntries = [];\n\t\t\tfor (let entry = 0; entry < SUC_MAX_UPDATES; entry++) {\n\t\t\t\tconst offset = entry * SUC_UPDATE_ENTRY_SIZE;\n\t\t\t\tconst updateEntry = parseSUCUpdateEntry(this.payload, offset);\n\t\t\t\tif (updateEntry) this.updateEntries.push(updateEntry);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.updateEntries = options.updateEntries;\n\t\t}\n\t}\n\n\tpublic updateEntries: SUCUpdateEntry[];\n\n\tpublic serialize(): NVM3Object & { data: Bytes } {\n\t\tthis.payload = new Bytes(SUC_MAX_UPDATES * SUC_UPDATE_ENTRY_SIZE).fill(\n\t\t\t0,\n\t\t);\n\t\tfor (let i = 0; i < this.updateEntries.length; i++) {\n\t\t\tconst offset = i * SUC_UPDATE_ENTRY_SIZE;\n\t\t\tconst entry = this.updateEntries[i];\n\t\t\tthis.payload.set(encodeSUCUpdateEntry(entry), offset);\n\t\t}\n\t\treturn super.serialize();\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic toJSON() {\n\t\treturn {\n\t\t\t...super.toJSON(),\n\t\t\t\"SUC update entries\": this.updateEntries,\n\t\t};\n\t}\n}\n\nexport const SUCUpdateEntriesFileV5IDBase = 0x54000;\nexport const SUCUpdateEntriesFileV5IDMax = SUCUpdateEntriesFileV5IDBase\n\t+ SUC_MAX_UPDATES / SUC_UPDATES_PER_FILE_V5\n\t- 1;\nexport function sucUpdateIndexToSUCUpdateEntriesFileIDV5(\n\tindex: number,\n): number {\n\treturn (\n\t\tSUCUpdateEntriesFileV5IDBase\n\t\t+ Math.floor(index / SUC_UPDATES_PER_FILE_V5)\n\t);\n}\n\n@nvmFileID(\n\t(id) =>\n\t\tid >= SUCUpdateEntriesFileV5IDBase\n\t\t&& id <= SUCUpdateEntriesFileV5IDMax,\n)\n@nvmSection(\"protocol\")\nexport class SUCUpdateEntriesFileV5 extends NVMFile {\n\tpublic constructor(\n\t\toptions: NVMFileDeserializationOptions | SUCUpdateEntriesFileOptions,\n\t) {\n\t\tsuper(options);\n\t\tif (gotDeserializationOptions(options)) {\n\t\t\tthis.updateEntries = [];\n\t\t\tfor (let entry = 0; entry < SUC_UPDATES_PER_FILE_V5; entry++) {\n\t\t\t\tconst offset = entry * SUC_UPDATE_ENTRY_SIZE;\n\t\t\t\tconst updateEntry = parseSUCUpdateEntry(this.payload, offset);\n\t\t\t\tif (updateEntry) this.updateEntries.push(updateEntry);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.updateEntries = options.updateEntries;\n\t\t}\n\t}\n\n\tpublic updateEntries: SUCUpdateEntry[];\n\n\tpublic serialize(): NVM3Object & { data: Bytes } {\n\t\tthis.payload = new Bytes(\n\t\t\tSUC_UPDATES_PER_FILE_V5 * SUC_UPDATE_ENTRY_SIZE,\n\t\t).fill(0xff);\n\t\tfor (let i = 0; i < this.updateEntries.length; i++) {\n\t\t\tconst offset = i * SUC_UPDATE_ENTRY_SIZE;\n\t\t\tconst entry = this.updateEntries[i];\n\t\t\tthis.payload.set(encodeSUCUpdateEntry(entry), offset);\n\t\t}\n\t\treturn super.serialize();\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic toJSON() {\n\t\treturn {\n\t\t\t...super.toJSON(),\n\t\t\t\"SUC update entries\": this.updateEntries,\n\t\t};\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kBAAsB;AACtB,oBAAuD;AACvD,4BAIO;AAEP,qBAOO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,0BAA0B;AAMhC,MAAM,2BAA2B;IAI3B,0BAAsB,MAAA;8BAFlC,0BAAU,wBAAwB,OAClC,2BAAW,UAAU,CAAC;;;;oBACqB;8CAAA,YAAO;WAAA;;;;;;;;AAAnD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAoE;AAEpE,YAAM,OAAO;AACb,cAAI,0CAA0B,OAAO,GAAG;AACvC,aAAK,gBAAgB,CAAA;AACrB,iBAAS,QAAQ,GAAG,QAAQ,+BAAiB,SAAS;AACrD,gBAAM,SAAS,QAAQ;AACvB,gBAAM,kBAAc,2CAAoB,KAAK,SAAS,MAAM;AAC5D,cAAI;AAAa,iBAAK,cAAc,KAAK,WAAW;QACrD;MACD,OAAO;AACN,aAAK,gBAAgB,QAAQ;MAC9B;IACD;IAEO;IAEA,YAAS;AACf,WAAK,UAAU,IAAI,kBAAM,gCAAkB,mCAAqB,EAAE,KACjE,CAAC;AAEF,eAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AACnD,cAAM,SAAS,IAAI;AACnB,cAAM,QAAQ,KAAK,cAAc,CAAC;AAClC,aAAK,QAAQ,QAAI,4CAAqB,KAAK,GAAG,MAAM;MACrD;AACA,aAAO,MAAM,UAAS;IACvB;;IAGO,SAAM;AACZ,aAAO;QACN,GAAG,MAAM,OAAM;QACf,sBAAsB,KAAK;;IAE7B;;;;AAGM,MAAM,+BAA+B;AACrC,MAAM,8BAA8B,+BACxC,gCAAkB,0BAClB;AACG,SAAU,yCACf,OAAa;AAEb,SACC,+BACE,KAAK,MAAM,QAAQ,uBAAuB;AAE9C;AAPgB;IAeH,0BAAsB,MAAA;8BANlC,0BACA,CAAC,OACA,MAAM,gCACH,MAAM,2BAA2B,OAErC,2BAAW,UAAU,CAAC;;;;oBACqB;8CAAA,YAAO;WAAA;;;;;;;;AAAnD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAoE;AAEpE,YAAM,OAAO;AACb,cAAI,0CAA0B,OAAO,GAAG;AACvC,aAAK,gBAAgB,CAAA;AACrB,iBAAS,QAAQ,GAAG,QAAQ,yBAAyB,SAAS;AAC7D,gBAAM,SAAS,QAAQ;AACvB,gBAAM,kBAAc,2CAAoB,KAAK,SAAS,MAAM;AAC5D,cAAI;AAAa,iBAAK,cAAc,KAAK,WAAW;QACrD;MACD,OAAO;AACN,aAAK,gBAAgB,QAAQ;MAC9B;IACD;IAEO;IAEA,YAAS;AACf,WAAK,UAAU,IAAI,kBAClB,0BAA0B,mCAAqB,EAC9C,KAAK,GAAI;AACX,eAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AACnD,cAAM,SAAS,IAAI;AACnB,cAAM,QAAQ,KAAK,cAAc,CAAC;AAClC,aAAK,QAAQ,QAAI,4CAAqB,KAAK,GAAG,MAAM;MACrD;AACA,aAAO,MAAM,UAAS;IACvB;;IAGO,SAAM;AACZ,aAAO;QACN,GAAG,MAAM,OAAM;QACf,sBAAsB,KAAK;;IAE7B;;;;",
4
+ "sourcesContent": ["import { Bytes } from \"@zwave-js/shared\";\nimport { SUC_MAX_UPDATES, SUC_UPDATE_ENTRY_SIZE } from \"../../../consts.js\";\nimport {\n\ttype SUCUpdateEntry,\n\tencodeSUCUpdateEntry,\n\tparseSUCUpdateEntry,\n} from \"../../common/sucUpdateEntry.js\";\nimport type { NVM3Object } from \"../object.js\";\nimport {\n\tNVMFile,\n\ttype NVMFileCreationOptions,\n\ttype NVMFileDeserializationOptions,\n\tgotDeserializationOptions,\n\tnvmFileID,\n\tnvmSection,\n} from \"./NVMFile.js\";\n\nexport const SUC_UPDATES_PER_FILE_V5 = 8;\n\nexport interface SUCUpdateEntriesFileOptions extends NVMFileCreationOptions {\n\tupdateEntries: SUCUpdateEntry[];\n}\n\nexport const SUCUpdateEntriesFileIDV0 = 0x50003;\n\n@nvmFileID(SUCUpdateEntriesFileIDV0)\n@nvmSection(\"protocol\")\nexport class SUCUpdateEntriesFileV0 extends NVMFile {\n\tpublic constructor(\n\t\toptions: NVMFileDeserializationOptions | SUCUpdateEntriesFileOptions,\n\t) {\n\t\tsuper(options);\n\t\tif (gotDeserializationOptions(options)) {\n\t\t\tthis.updateEntries = [];\n\t\t\tfor (let entry = 0; entry < SUC_MAX_UPDATES; entry++) {\n\t\t\t\tconst offset = entry * SUC_UPDATE_ENTRY_SIZE;\n\t\t\t\tconst updateEntry = parseSUCUpdateEntry(this.payload, offset);\n\t\t\t\tif (updateEntry) this.updateEntries.push(updateEntry);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.updateEntries = options.updateEntries;\n\t\t}\n\t}\n\n\tpublic updateEntries: SUCUpdateEntry[];\n\n\tpublic serialize(): NVM3Object & { data: Bytes } {\n\t\tthis.payload = new Bytes(SUC_MAX_UPDATES * SUC_UPDATE_ENTRY_SIZE).fill(\n\t\t\t0,\n\t\t);\n\t\tfor (let i = 0; i < this.updateEntries.length; i++) {\n\t\t\tconst offset = i * SUC_UPDATE_ENTRY_SIZE;\n\t\t\tconst entry = this.updateEntries[i];\n\t\t\tthis.payload.set(encodeSUCUpdateEntry(entry), offset);\n\t\t}\n\t\treturn super.serialize();\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic toJSON() {\n\t\treturn {\n\t\t\t...super.toJSON(),\n\t\t\t\"SUC update entries\": this.updateEntries,\n\t\t};\n\t}\n}\n\nexport const SUCUpdateEntriesFileV5IDBase = 0x54000;\nexport const SUCUpdateEntriesFileV5IDMax = SUCUpdateEntriesFileV5IDBase\n\t+ SUC_MAX_UPDATES / SUC_UPDATES_PER_FILE_V5\n\t- 1;\nexport function sucUpdateIndexToSUCUpdateEntriesFileIDV5(\n\tindex: number,\n): number {\n\treturn (\n\t\tSUCUpdateEntriesFileV5IDBase\n\t\t+ Math.floor(index / SUC_UPDATES_PER_FILE_V5)\n\t);\n}\n\n@nvmFileID(\n\t(id) =>\n\t\tid >= SUCUpdateEntriesFileV5IDBase\n\t\t&& id <= SUCUpdateEntriesFileV5IDMax,\n)\n@nvmSection(\"protocol\")\nexport class SUCUpdateEntriesFileV5 extends NVMFile {\n\tpublic constructor(\n\t\toptions: NVMFileDeserializationOptions | SUCUpdateEntriesFileOptions,\n\t) {\n\t\tsuper(options);\n\t\tif (gotDeserializationOptions(options)) {\n\t\t\tthis.updateEntries = [];\n\t\t\tfor (let entry = 0; entry < SUC_UPDATES_PER_FILE_V5; entry++) {\n\t\t\t\tconst offset = entry * SUC_UPDATE_ENTRY_SIZE;\n\t\t\t\tconst updateEntry = parseSUCUpdateEntry(this.payload, offset);\n\t\t\t\tif (updateEntry) this.updateEntries.push(updateEntry);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.updateEntries = options.updateEntries;\n\t\t}\n\t}\n\n\tpublic updateEntries: SUCUpdateEntry[];\n\n\tpublic serialize(): NVM3Object & { data: Bytes } {\n\t\tthis.payload = new Bytes(\n\t\t\tSUC_UPDATES_PER_FILE_V5 * SUC_UPDATE_ENTRY_SIZE,\n\t\t).fill(0xff);\n\t\tfor (let i = 0; i < this.updateEntries.length; i++) {\n\t\t\tconst offset = i * SUC_UPDATE_ENTRY_SIZE;\n\t\t\tconst entry = this.updateEntries[i];\n\t\t\tthis.payload.set(encodeSUCUpdateEntry(entry), offset);\n\t\t}\n\t\treturn super.serialize();\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic toJSON() {\n\t\treturn {\n\t\t\t...super.toJSON(),\n\t\t\t\"SUC update entries\": this.updateEntries,\n\t\t};\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oBAAsB;AACtB,oBAAuD;AACvD,4BAIO;AAEP,qBAOO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,0BAA0B;AAMhC,MAAM,2BAA2B;IAI3B,0BAAsB,MAAA;8BAFlC,0BAAU,wBAAwB,OAClC,2BAAW,UAAU,CAAC;;;;oBACqB;8CAAA,YAAO;WAAA;;;;;;;;AAAnD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAoE;AAEpE,YAAM,OAAO;AACb,cAAI,0CAA0B,OAAO,GAAG;AACvC,aAAK,gBAAgB,CAAA;AACrB,iBAAS,QAAQ,GAAG,QAAQ,+BAAiB,SAAS;AACrD,gBAAM,SAAS,QAAQ;AACvB,gBAAM,kBAAc,2CAAoB,KAAK,SAAS,MAAM;AAC5D,cAAI;AAAa,iBAAK,cAAc,KAAK,WAAW;QACrD;MACD,OAAO;AACN,aAAK,gBAAgB,QAAQ;MAC9B;IACD;IAEO;IAEA,YAAS;AACf,WAAK,UAAU,IAAI,oBAAM,gCAAkB,mCAAqB,EAAE,KACjE,CAAC;AAEF,eAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AACnD,cAAM,SAAS,IAAI;AACnB,cAAM,QAAQ,KAAK,cAAc,CAAC;AAClC,aAAK,QAAQ,QAAI,4CAAqB,KAAK,GAAG,MAAM;MACrD;AACA,aAAO,MAAM,UAAS;IACvB;;IAGO,SAAM;AACZ,aAAO;QACN,GAAG,MAAM,OAAM;QACf,sBAAsB,KAAK;;IAE7B;;;;AAGM,MAAM,+BAA+B;AACrC,MAAM,8BAA8B,+BACxC,gCAAkB,0BAClB;AACG,SAAU,yCACf,OAAa;AAEb,SACC,+BACE,KAAK,MAAM,QAAQ,uBAAuB;AAE9C;AAPgB;IAeH,0BAAsB,MAAA;8BANlC,0BACA,CAAC,OACA,MAAM,gCACH,MAAM,2BAA2B,OAErC,2BAAW,UAAU,CAAC;;;;oBACqB;8CAAA,YAAO;WAAA;;;;;;;;AAAnD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAoE;AAEpE,YAAM,OAAO;AACb,cAAI,0CAA0B,OAAO,GAAG;AACvC,aAAK,gBAAgB,CAAA;AACrB,iBAAS,QAAQ,GAAG,QAAQ,yBAAyB,SAAS;AAC7D,gBAAM,SAAS,QAAQ;AACvB,gBAAM,kBAAc,2CAAoB,KAAK,SAAS,MAAM;AAC5D,cAAI;AAAa,iBAAK,cAAc,KAAK,WAAW;QACrD;MACD,OAAO;AACN,aAAK,gBAAgB,QAAQ;MAC9B;IACD;IAEO;IAEA,YAAS;AACf,WAAK,UAAU,IAAI,oBAClB,0BAA0B,mCAAqB,EAC9C,KAAK,GAAI;AACX,eAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AACnD,cAAM,SAAS,IAAI;AACnB,cAAM,QAAQ,KAAK,cAAc,CAAC;AAClC,aAAK,QAAQ,QAAI,4CAAqB,KAAK,GAAG,MAAM;MACrD;AACA,aAAO,MAAM,UAAS;IACvB;;IAGO,SAAM;AACZ,aAAO;QACN,GAAG,MAAM,OAAM;QACf,sBAAsB,KAAK;;IAE7B;;;;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,5 @@
1
1
  import { type PageStatus, type PageWriteSize } from "./consts.js";
2
- import { type NVM3Object } from "./object.js";
2
+ import type { NVM3Object } from "./object.js";
3
3
  export interface NVM3PageHeader {
4
4
  offset: number;
5
5
  version: number;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/nvm3/page.ts"],
4
- "sourcesContent": ["import { Bytes } from \"@zwave-js/shared\";\nimport {\n\tNVM3_MIN_PAGE_SIZE,\n\tNVM3_PAGE_COUNTER_MASK,\n\tNVM3_PAGE_COUNTER_SIZE,\n\tNVM3_PAGE_HEADER_SIZE,\n\tNVM3_PAGE_MAGIC,\n\ttype PageStatus,\n\ttype PageWriteSize,\n} from \"./consts.js\";\nimport { type NVM3Object } from \"./object.js\";\nimport { computeBergerCode } from \"./utils.js\";\n\nexport interface NVM3PageHeader {\n\toffset: number;\n\tversion: number;\n\teraseCount: number;\n\tstatus: PageStatus;\n\tencrypted: boolean;\n\tpageSize: number;\n\twriteSize: PageWriteSize;\n\tmemoryMapped: boolean;\n\tdeviceFamily: number;\n}\n\nexport interface NVM3Page {\n\theader: NVM3PageHeader;\n\tobjects: NVM3Object[];\n}\n\n// The page size field has a value from 0 to 7 describing page sizes from 512 to 65536 bytes\nexport function pageSizeToBits(pageSize: number): number {\n\treturn Math.ceil(Math.log2(pageSize) - Math.log2(NVM3_MIN_PAGE_SIZE));\n}\n\nexport function pageSizeFromBits(bits: number): number {\n\treturn NVM3_MIN_PAGE_SIZE * Math.pow(2, bits);\n}\n\nexport function serializePageHeader(\n\theader: Omit<NVM3PageHeader, \"offset\">,\n): Uint8Array {\n\tconst ret = new Bytes(NVM3_PAGE_HEADER_SIZE);\n\n\tret.writeUInt16LE(header.version, 0);\n\tret.writeUInt16LE(NVM3_PAGE_MAGIC, 2);\n\n\tlet eraseCount = header.eraseCount & NVM3_PAGE_COUNTER_MASK;\n\tconst eraseCountCode = computeBergerCode(\n\t\teraseCount,\n\t\tNVM3_PAGE_COUNTER_SIZE,\n\t);\n\teraseCount |= eraseCountCode << NVM3_PAGE_COUNTER_SIZE;\n\tret.writeInt32LE(eraseCount, 4);\n\n\tlet eraseCountInv = ~header.eraseCount & NVM3_PAGE_COUNTER_MASK;\n\tconst eraseCountInvCode = computeBergerCode(\n\t\teraseCountInv,\n\t\tNVM3_PAGE_COUNTER_SIZE,\n\t);\n\teraseCountInv |= eraseCountInvCode << NVM3_PAGE_COUNTER_SIZE;\n\tret.writeInt32LE(eraseCountInv, 8);\n\n\tret.writeUInt32LE(header.status, 12);\n\n\tconst devInfo = (header.deviceFamily & 0x7ff)\n\t\t| ((header.writeSize & 0b1) << 11)\n\t\t| ((header.memoryMapped ? 1 : 0) << 12)\n\t\t| (pageSizeToBits(header.pageSize) << 13);\n\tret.writeUInt16LE(devInfo, 16);\n\n\tconst formatInfo = header.encrypted ? 0xfffe : 0xffff;\n\tret.writeUInt16LE(formatInfo, 18);\n\n\treturn ret;\n}\n"],
4
+ "sourcesContent": ["import { Bytes } from \"@zwave-js/shared\";\nimport {\n\tNVM3_MIN_PAGE_SIZE,\n\tNVM3_PAGE_COUNTER_MASK,\n\tNVM3_PAGE_COUNTER_SIZE,\n\tNVM3_PAGE_HEADER_SIZE,\n\tNVM3_PAGE_MAGIC,\n\ttype PageStatus,\n\ttype PageWriteSize,\n} from \"./consts.js\";\nimport type { NVM3Object } from \"./object.js\";\nimport { computeBergerCode } from \"./utils.js\";\n\nexport interface NVM3PageHeader {\n\toffset: number;\n\tversion: number;\n\teraseCount: number;\n\tstatus: PageStatus;\n\tencrypted: boolean;\n\tpageSize: number;\n\twriteSize: PageWriteSize;\n\tmemoryMapped: boolean;\n\tdeviceFamily: number;\n}\n\nexport interface NVM3Page {\n\theader: NVM3PageHeader;\n\tobjects: NVM3Object[];\n}\n\n// The page size field has a value from 0 to 7 describing page sizes from 512 to 65536 bytes\nexport function pageSizeToBits(pageSize: number): number {\n\treturn Math.ceil(Math.log2(pageSize) - Math.log2(NVM3_MIN_PAGE_SIZE));\n}\n\nexport function pageSizeFromBits(bits: number): number {\n\treturn NVM3_MIN_PAGE_SIZE * Math.pow(2, bits);\n}\n\nexport function serializePageHeader(\n\theader: Omit<NVM3PageHeader, \"offset\">,\n): Uint8Array {\n\tconst ret = new Bytes(NVM3_PAGE_HEADER_SIZE);\n\n\tret.writeUInt16LE(header.version, 0);\n\tret.writeUInt16LE(NVM3_PAGE_MAGIC, 2);\n\n\tlet eraseCount = header.eraseCount & NVM3_PAGE_COUNTER_MASK;\n\tconst eraseCountCode = computeBergerCode(\n\t\teraseCount,\n\t\tNVM3_PAGE_COUNTER_SIZE,\n\t);\n\teraseCount |= eraseCountCode << NVM3_PAGE_COUNTER_SIZE;\n\tret.writeInt32LE(eraseCount, 4);\n\n\tlet eraseCountInv = ~header.eraseCount & NVM3_PAGE_COUNTER_MASK;\n\tconst eraseCountInvCode = computeBergerCode(\n\t\teraseCountInv,\n\t\tNVM3_PAGE_COUNTER_SIZE,\n\t);\n\teraseCountInv |= eraseCountInvCode << NVM3_PAGE_COUNTER_SIZE;\n\tret.writeInt32LE(eraseCountInv, 8);\n\n\tret.writeUInt32LE(header.status, 12);\n\n\tconst devInfo = (header.deviceFamily & 0x7ff)\n\t\t| ((header.writeSize & 0b1) << 11)\n\t\t| ((header.memoryMapped ? 1 : 0) << 12)\n\t\t| (pageSizeToBits(header.pageSize) << 13);\n\tret.writeUInt16LE(devInfo, 16);\n\n\tconst formatInfo = header.encrypted ? 0xfffe : 0xffff;\n\tret.writeUInt16LE(formatInfo, 18);\n\n\treturn ret;\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;AAAA,oBAAsB;AACtB,oBAQO;AAEP,mBAAkC;AAoB5B,SAAU,eAAe,UAAgB;AAC9C,SAAO,KAAK,KAAK,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,gCAAkB,CAAC;AACrE;AAFgB;AAIV,SAAU,iBAAiB,MAAY;AAC5C,SAAO,mCAAqB,KAAK,IAAI,GAAG,IAAI;AAC7C;AAFgB;AAIV,SAAU,oBACf,QAAsC;AAEtC,QAAM,MAAM,IAAI,oBAAM,mCAAqB;AAE3C,MAAI,cAAc,OAAO,SAAS,CAAC;AACnC,MAAI,cAAc,+BAAiB,CAAC;AAEpC,MAAI,aAAa,OAAO,aAAa;AACrC,QAAM,qBAAiB,gCACtB,YACA,oCAAsB;AAEvB,gBAAc,kBAAkB;AAChC,MAAI,aAAa,YAAY,CAAC;AAE9B,MAAI,gBAAgB,CAAC,OAAO,aAAa;AACzC,QAAM,wBAAoB,gCACzB,eACA,oCAAsB;AAEvB,mBAAiB,qBAAqB;AACtC,MAAI,aAAa,eAAe,CAAC;AAEjC,MAAI,cAAc,OAAO,QAAQ,EAAE;AAEnC,QAAM,UAAW,OAAO,eAAe,QAClC,OAAO,YAAY,MAAQ,MAC3B,OAAO,eAAe,IAAI,MAAM,KACjC,eAAe,OAAO,QAAQ,KAAK;AACvC,MAAI,cAAc,SAAS,EAAE;AAE7B,QAAM,aAAa,OAAO,YAAY,QAAS;AAC/C,MAAI,cAAc,YAAY,EAAE;AAEhC,SAAO;AACR;AApCgB;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,4 @@
1
- import { type NVM3 } from "../NVM3.js";
1
+ import type { NVM3 } from "../NVM3.js";
2
2
  /** Counts the number of unset bits in the given word */
3
3
  export declare function computeBergerCode(word: number, numBits?: number): number;
4
4
  export declare function validateBergerCode(word: number, code: number, numBits?: number): void;
@@ -27,7 +27,7 @@ __export(utils_exports, {
27
27
  validateBergerCodeMulti: () => validateBergerCodeMulti
28
28
  });
29
29
  module.exports = __toCommonJS(utils_exports);
30
- var import_safe = require("@zwave-js/core/safe");
30
+ var import_core = require("@zwave-js/core");
31
31
  var import_shared = require("@zwave-js/shared");
32
32
  var import_consts = require("./consts.js");
33
33
  var import_NVMFile = require("./files/NVMFile.js");
@@ -44,7 +44,7 @@ function computeBergerCode(word, numBits = 32) {
44
44
  __name(computeBergerCode, "computeBergerCode");
45
45
  function validateBergerCode(word, code, numBits = 32) {
46
46
  if (computeBergerCode(word, numBits) !== code) {
47
- throw new import_safe.ZWaveError("Berger Code validation failed!", import_safe.ZWaveErrorCodes.NVM_InvalidFormat);
47
+ throw new import_core.ZWaveError("Berger Code validation failed!", import_core.ZWaveErrorCodes.NVM_InvalidFormat);
48
48
  }
49
49
  }
50
50
  __name(validateBergerCode, "validateBergerCode");
@@ -73,7 +73,7 @@ function validateBergerCodeMulti(words, numBits) {
73
73
  numBits -= 32;
74
74
  }
75
75
  if (actual !== expected) {
76
- throw new import_safe.ZWaveError("Berger Code validation failed!", import_safe.ZWaveErrorCodes.NVM_InvalidFormat);
76
+ throw new import_core.ZWaveError("Berger Code validation failed!", import_core.ZWaveErrorCodes.NVM_InvalidFormat);
77
77
  }
78
78
  }
79
79
  __name(validateBergerCodeMulti, "validateBergerCodeMulti");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/nvm3/utils.ts"],
4
- "sourcesContent": ["import { ZWaveError, ZWaveErrorCodes } from \"@zwave-js/core/safe\";\nimport { buffer2hex, num2hex } from \"@zwave-js/shared\";\nimport { type NVM3 } from \"../NVM3.js\";\nimport { FragmentType, ObjectType, PageStatus } from \"./consts.js\";\nimport { NVMFile } from \"./files/NVMFile.js\";\nimport type { NVM3Object } from \"./object.js\";\n\n/** Counts the number of unset bits in the given word */\nexport function computeBergerCode(word: number, numBits: number = 32): number {\n\tlet ret = word;\n\n\t// Mask the number of bits we're interested in\n\tif (numBits < 32) {\n\t\tret &= (1 << numBits) - 1;\n\t}\n\n\t// And count the bits, see http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel\n\tret = ret - ((ret >> 1) & 0x55555555);\n\tret = (ret & 0x33333333) + ((ret >> 2) & 0x33333333);\n\tret = (((ret + (ret >> 4)) & 0xf0f0f0f) * 0x1010101) >> 24;\n\n\treturn numBits - ret;\n}\n\nexport function validateBergerCode(\n\tword: number,\n\tcode: number,\n\tnumBits: number = 32,\n): void {\n\tif (computeBergerCode(word, numBits) !== code) {\n\t\tthrow new ZWaveError(\n\t\t\t\"Berger Code validation failed!\",\n\t\t\tZWaveErrorCodes.NVM_InvalidFormat,\n\t\t);\n\t}\n}\n\nexport function computeBergerCodeMulti(\n\twords: number[],\n\tnumBits: number,\n): number {\n\tlet ret = 0;\n\tfor (const word of words) {\n\t\tret += computeBergerCode(word, Math.min(numBits, 32));\n\t\tif (numBits < 32) break;\n\t\tnumBits -= 32;\n\t}\n\treturn ret;\n}\n\nexport function validateBergerCodeMulti(\n\twords: number[],\n\tnumBits: number,\n): void {\n\tlet actual = 0;\n\tlet expected: number;\n\tfor (const word of words) {\n\t\tactual += computeBergerCode(word, Math.min(numBits, 32));\n\t\tif (numBits < 32) {\n\t\t\tconst maskSize = 32 - numBits;\n\t\t\tconst mask = (1 << maskSize) - 1;\n\t\t\texpected = (word >>> numBits) & mask;\n\t\t\tbreak;\n\t\t}\n\t\tnumBits -= 32;\n\t}\n\tif (actual !== expected!) {\n\t\tthrow new ZWaveError(\n\t\t\t\"Berger Code validation failed!\",\n\t\t\tZWaveErrorCodes.NVM_InvalidFormat,\n\t\t);\n\t}\n}\n\nexport function mapToObject<T, TMap extends Map<string | number, T>>(\n\tmap: TMap,\n): Record<string, T> {\n\tconst obj: Record<string | number, T> = {};\n\tfor (const [key, value] of map) {\n\t\tobj[key] = value;\n\t}\n\treturn obj;\n}\n\nfunction dumpObject(\n\tobj: NVM3Object & { offset: number },\n\tjson: boolean = false,\n): void {\n\ttry {\n\t\tif (json) {\n\t\t\tconst file = NVMFile.from(obj.key, obj.data!, \"7.0.0\");\n\t\t\tconsole.log(\n\t\t\t\tJSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\toffset: num2hex(obj.offset),\n\t\t\t\t\t\t...file.toJSON(),\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2,\n\t\t\t\t),\n\t\t\t);\n\t\t\tconsole.log();\n\t\t\treturn;\n\t\t}\n\t} catch {\n\t\t// ignore\n\t}\n\tconst prefix = json ? \"\" : \" \";\n\tconsole.log(`${prefix}\u00B7 offset: ${num2hex(obj.offset)}`);\n\tconsole.log(`${prefix} key: 0x${obj.key.toString(16)}`);\n\tconsole.log(`${prefix} type: ${ObjectType[obj.type]}`);\n\tconsole.log(`${prefix} fragment type: ${FragmentType[obj.fragmentType]}`);\n\tif (obj.data) {\n\t\tconsole.log(\n\t\t\t`${prefix} data: ${\n\t\t\t\tbuffer2hex(obj.data)\n\t\t\t} (${obj.data.length} bytes)`,\n\t\t);\n\t}\n\tconsole.log();\n}\n\nexport async function dumpNVM(nvm: NVM3): Promise<void> {\n\tfor (const [name, section] of Object.entries(nvm.info!.sections)) {\n\t\tconsole.log(`NVM section: ${name}`);\n\n\t\tfor (const page of section.pages) {\n\t\t\tconsole.log(\"\");\n\t\t\tconsole.log(`page (offset 0x${page.offset.toString(16)}):`);\n\t\t\tconsole.log(` version: ${page.version}`);\n\t\t\tconsole.log(` eraseCount: ${page.eraseCount}`);\n\t\t\tconsole.log(` status: ${PageStatus[page.status]}`);\n\t\t\tconsole.log(` encrypted: ${page.encrypted}`);\n\t\t\tconsole.log(` pageSize: ${page.pageSize}`);\n\t\t\tconsole.log(` writeSize: ${page.writeSize}`);\n\t\t\tconsole.log(` memoryMapped: ${page.memoryMapped}`);\n\t\t\tconsole.log(` deviceFamily: ${page.deviceFamily}`);\n\t\t\tconsole.log(\"\");\n\t\t\tif (page.objects.length) {\n\t\t\t\tconsole.log(` raw objects:`);\n\n\t\t\t\tfor (const objectHeader of page.objects) {\n\t\t\t\t\tconst objectData = objectHeader.type !== ObjectType.Deleted\n\t\t\t\t\t\t? await nvm.readObjectData(objectHeader)\n\t\t\t\t\t\t: undefined;\n\t\t\t\t\tdumpObject({\n\t\t\t\t\t\toffset: objectHeader.offset,\n\t\t\t\t\t\tkey: objectHeader.key,\n\t\t\t\t\t\ttype: objectHeader.type,\n\t\t\t\t\t\tfragmentType: objectHeader.fragmentType,\n\t\t\t\t\t\tdata: objectData,\n\t\t\t\t\t}, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconsole.log();\n\t\tconsole.log();\n\t}\n\n\tfor (const [name, section] of Object.entries(nvm.info!.sections)) {\n\t\tconsole.log(`${name} objects:`);\n\t\tfor (const [fileId, pageIndex] of section.objectLocations) {\n\t\t\tconst page = section.pages[pageIndex];\n\t\t\tconst objectHeader = page.objects.findLast((o) => o.key === fileId);\n\t\t\tif (!objectHeader) continue;\n\t\t\tconst objectData = await nvm.get(fileId);\n\n\t\t\tdumpObject({\n\t\t\t\toffset: objectHeader.offset,\n\t\t\t\tkey: fileId,\n\t\t\t\ttype: objectHeader.type,\n\t\t\t\tfragmentType: FragmentType.None,\n\t\t\t\tdata: objectData,\n\t\t\t}, true);\n\t\t}\n\n\t\tconsole.log();\n\t}\n}\n"],
4
+ "sourcesContent": ["import { ZWaveError, ZWaveErrorCodes } from \"@zwave-js/core\";\nimport { buffer2hex, num2hex } from \"@zwave-js/shared\";\nimport type { NVM3 } from \"../NVM3.js\";\nimport { FragmentType, ObjectType, PageStatus } from \"./consts.js\";\nimport { NVMFile } from \"./files/NVMFile.js\";\nimport type { NVM3Object } from \"./object.js\";\n\n/** Counts the number of unset bits in the given word */\nexport function computeBergerCode(word: number, numBits: number = 32): number {\n\tlet ret = word;\n\n\t// Mask the number of bits we're interested in\n\tif (numBits < 32) {\n\t\tret &= (1 << numBits) - 1;\n\t}\n\n\t// And count the bits, see http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel\n\tret = ret - ((ret >> 1) & 0x55555555);\n\tret = (ret & 0x33333333) + ((ret >> 2) & 0x33333333);\n\tret = (((ret + (ret >> 4)) & 0xf0f0f0f) * 0x1010101) >> 24;\n\n\treturn numBits - ret;\n}\n\nexport function validateBergerCode(\n\tword: number,\n\tcode: number,\n\tnumBits: number = 32,\n): void {\n\tif (computeBergerCode(word, numBits) !== code) {\n\t\tthrow new ZWaveError(\n\t\t\t\"Berger Code validation failed!\",\n\t\t\tZWaveErrorCodes.NVM_InvalidFormat,\n\t\t);\n\t}\n}\n\nexport function computeBergerCodeMulti(\n\twords: number[],\n\tnumBits: number,\n): number {\n\tlet ret = 0;\n\tfor (const word of words) {\n\t\tret += computeBergerCode(word, Math.min(numBits, 32));\n\t\tif (numBits < 32) break;\n\t\tnumBits -= 32;\n\t}\n\treturn ret;\n}\n\nexport function validateBergerCodeMulti(\n\twords: number[],\n\tnumBits: number,\n): void {\n\tlet actual = 0;\n\tlet expected: number;\n\tfor (const word of words) {\n\t\tactual += computeBergerCode(word, Math.min(numBits, 32));\n\t\tif (numBits < 32) {\n\t\t\tconst maskSize = 32 - numBits;\n\t\t\tconst mask = (1 << maskSize) - 1;\n\t\t\texpected = (word >>> numBits) & mask;\n\t\t\tbreak;\n\t\t}\n\t\tnumBits -= 32;\n\t}\n\tif (actual !== expected!) {\n\t\tthrow new ZWaveError(\n\t\t\t\"Berger Code validation failed!\",\n\t\t\tZWaveErrorCodes.NVM_InvalidFormat,\n\t\t);\n\t}\n}\n\nexport function mapToObject<T, TMap extends Map<string | number, T>>(\n\tmap: TMap,\n): Record<string, T> {\n\tconst obj: Record<string | number, T> = {};\n\tfor (const [key, value] of map) {\n\t\tobj[key] = value;\n\t}\n\treturn obj;\n}\n\nfunction dumpObject(\n\tobj: NVM3Object & { offset: number },\n\tjson: boolean = false,\n): void {\n\ttry {\n\t\tif (json) {\n\t\t\tconst file = NVMFile.from(obj.key, obj.data!, \"7.0.0\");\n\t\t\tconsole.log(\n\t\t\t\tJSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\toffset: num2hex(obj.offset),\n\t\t\t\t\t\t...file.toJSON(),\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2,\n\t\t\t\t),\n\t\t\t);\n\t\t\tconsole.log();\n\t\t\treturn;\n\t\t}\n\t} catch {\n\t\t// ignore\n\t}\n\tconst prefix = json ? \"\" : \" \";\n\tconsole.log(`${prefix}\u00B7 offset: ${num2hex(obj.offset)}`);\n\tconsole.log(`${prefix} key: 0x${obj.key.toString(16)}`);\n\tconsole.log(`${prefix} type: ${ObjectType[obj.type]}`);\n\tconsole.log(`${prefix} fragment type: ${FragmentType[obj.fragmentType]}`);\n\tif (obj.data) {\n\t\tconsole.log(\n\t\t\t`${prefix} data: ${\n\t\t\t\tbuffer2hex(obj.data)\n\t\t\t} (${obj.data.length} bytes)`,\n\t\t);\n\t}\n\tconsole.log();\n}\n\nexport async function dumpNVM(nvm: NVM3): Promise<void> {\n\tfor (const [name, section] of Object.entries(nvm.info!.sections)) {\n\t\tconsole.log(`NVM section: ${name}`);\n\n\t\tfor (const page of section.pages) {\n\t\t\tconsole.log(\"\");\n\t\t\tconsole.log(`page (offset 0x${page.offset.toString(16)}):`);\n\t\t\tconsole.log(` version: ${page.version}`);\n\t\t\tconsole.log(` eraseCount: ${page.eraseCount}`);\n\t\t\tconsole.log(` status: ${PageStatus[page.status]}`);\n\t\t\tconsole.log(` encrypted: ${page.encrypted}`);\n\t\t\tconsole.log(` pageSize: ${page.pageSize}`);\n\t\t\tconsole.log(` writeSize: ${page.writeSize}`);\n\t\t\tconsole.log(` memoryMapped: ${page.memoryMapped}`);\n\t\t\tconsole.log(` deviceFamily: ${page.deviceFamily}`);\n\t\t\tconsole.log(\"\");\n\t\t\tif (page.objects.length) {\n\t\t\t\tconsole.log(` raw objects:`);\n\n\t\t\t\tfor (const objectHeader of page.objects) {\n\t\t\t\t\tconst objectData = objectHeader.type !== ObjectType.Deleted\n\t\t\t\t\t\t? await nvm.readObjectData(objectHeader)\n\t\t\t\t\t\t: undefined;\n\t\t\t\t\tdumpObject({\n\t\t\t\t\t\toffset: objectHeader.offset,\n\t\t\t\t\t\tkey: objectHeader.key,\n\t\t\t\t\t\ttype: objectHeader.type,\n\t\t\t\t\t\tfragmentType: objectHeader.fragmentType,\n\t\t\t\t\t\tdata: objectData,\n\t\t\t\t\t}, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconsole.log();\n\t\tconsole.log();\n\t}\n\n\tfor (const [name, section] of Object.entries(nvm.info!.sections)) {\n\t\tconsole.log(`${name} objects:`);\n\t\tfor (const [fileId, pageIndex] of section.objectLocations) {\n\t\t\tconst page = section.pages[pageIndex];\n\t\t\tconst objectHeader = page.objects.findLast((o) => o.key === fileId);\n\t\t\tif (!objectHeader) continue;\n\t\t\tconst objectData = await nvm.get(fileId);\n\n\t\t\tdumpObject({\n\t\t\t\toffset: objectHeader.offset,\n\t\t\t\tkey: fileId,\n\t\t\t\ttype: objectHeader.type,\n\t\t\t\tfragmentType: FragmentType.None,\n\t\t\t\tdata: objectData,\n\t\t\t}, true);\n\t\t}\n\n\t\tconsole.log();\n\t}\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,5 @@
1
- import { type NodeProtocolInfo } from "@zwave-js/core/safe";
2
- import { Bytes } from "@zwave-js/shared/safe";
1
+ import { type NodeProtocolInfo } from "@zwave-js/core";
2
+ import { Bytes } from "@zwave-js/shared";
3
3
  import type { NVMModuleType } from "./shared.js";
4
4
  export interface NVMDescriptor {
5
5
  manufacturerID: number;
@@ -27,10 +27,10 @@ __export(EntryParsers_exports, {
27
27
  parseNVMModuleDescriptor: () => parseNVMModuleDescriptor
28
28
  });
29
29
  module.exports = __toCommonJS(EntryParsers_exports);
30
- var import_safe = require("@zwave-js/core/safe");
31
- var import_safe2 = require("@zwave-js/shared/safe");
30
+ var import_core = require("@zwave-js/core");
31
+ var import_shared = require("@zwave-js/shared");
32
32
  function parseNVMDescriptor(data, offset = 0) {
33
- const buffer = import_safe2.Bytes.view(data);
33
+ const buffer = import_shared.Bytes.view(data);
34
34
  return {
35
35
  manufacturerID: buffer.readUInt16BE(offset),
36
36
  firmwareID: buffer.readUInt16BE(offset + 2),
@@ -43,7 +43,7 @@ function parseNVMDescriptor(data, offset = 0) {
43
43
  }
44
44
  __name(parseNVMDescriptor, "parseNVMDescriptor");
45
45
  function encodeNVMDescriptor(descriptor) {
46
- const ret = new import_safe2.Bytes(12);
46
+ const ret = new import_shared.Bytes(12);
47
47
  ret.writeUInt16BE(descriptor.manufacturerID, 0);
48
48
  ret.writeUInt16BE(descriptor.firmwareID, 2);
49
49
  ret.writeUInt16BE(descriptor.productType, 4);
@@ -58,7 +58,7 @@ function encodeNVMDescriptor(descriptor) {
58
58
  }
59
59
  __name(encodeNVMDescriptor, "encodeNVMDescriptor");
60
60
  function parseNVMModuleDescriptor(data, offset = 0) {
61
- const buffer = import_safe2.Bytes.view(data);
61
+ const buffer = import_shared.Bytes.view(data);
62
62
  return {
63
63
  size: buffer.readUInt16BE(offset),
64
64
  type: buffer[offset + 2],
@@ -67,7 +67,7 @@ function parseNVMModuleDescriptor(data, offset = 0) {
67
67
  }
68
68
  __name(parseNVMModuleDescriptor, "parseNVMModuleDescriptor");
69
69
  function encodeNVMModuleDescriptor(descriptior) {
70
- const ret = new import_safe2.Bytes(5);
70
+ const ret = new import_shared.Bytes(5);
71
71
  ret.writeUInt16BE(descriptior.size, 0);
72
72
  ret[2] = descriptior.type;
73
73
  const versionParts = descriptior.version.split(".").map((i) => parseInt(i));
@@ -77,7 +77,7 @@ function encodeNVMModuleDescriptor(descriptior) {
77
77
  }
78
78
  __name(encodeNVMModuleDescriptor, "encodeNVMModuleDescriptor");
79
79
  function parseNVM500NodeInfo(buffer, offset) {
80
- const { hasSpecificDeviceClass, ...protocolInfo } = (0, import_safe.parseNodeProtocolInfo)(buffer, offset);
80
+ const { hasSpecificDeviceClass, ...protocolInfo } = (0, import_core.parseNodeProtocolInfo)(buffer, offset);
81
81
  const genericDeviceClass = buffer[offset + 3];
82
82
  const specificDeviceClass = hasSpecificDeviceClass ? buffer[offset + 4] : null;
83
83
  return {
@@ -88,12 +88,12 @@ function parseNVM500NodeInfo(buffer, offset) {
88
88
  }
89
89
  __name(parseNVM500NodeInfo, "parseNVM500NodeInfo");
90
90
  function encodeNVM500NodeInfo(nodeInfo) {
91
- return import_safe2.Bytes.concat([
92
- (0, import_safe.encodeNodeProtocolInfo)({
91
+ return import_shared.Bytes.concat([
92
+ (0, import_core.encodeNodeProtocolInfo)({
93
93
  ...nodeInfo,
94
94
  hasSpecificDeviceClass: !!nodeInfo.specificDeviceClass
95
95
  }),
96
- import_safe2.Bytes.from([
96
+ import_shared.Bytes.from([
97
97
  nodeInfo.genericDeviceClass,
98
98
  nodeInfo.specificDeviceClass ?? 0
99
99
  ])
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/nvm500/EntryParsers.ts"],
4
- "sourcesContent": ["import {\n\ttype NodeProtocolInfo,\n\tencodeNodeProtocolInfo,\n\tparseNodeProtocolInfo,\n} from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport type { NVMModuleType } from \"./shared.js\";\n\nexport interface NVMDescriptor {\n\tmanufacturerID: number;\n\tfirmwareID: number;\n\tproductType: number;\n\tproductID: number;\n\tfirmwareVersion: string;\n\tprotocolVersion: string;\n}\n\nexport function parseNVMDescriptor(\n\tdata: Uint8Array,\n\toffset: number = 0,\n): NVMDescriptor {\n\tconst buffer = Bytes.view(data);\n\treturn {\n\t\tmanufacturerID: buffer.readUInt16BE(offset),\n\t\tfirmwareID: buffer.readUInt16BE(offset + 2),\n\t\tproductType: buffer.readUInt16BE(offset + 4),\n\t\tproductID: buffer.readUInt16BE(offset + 6),\n\t\tfirmwareVersion: `${buffer[offset + 8]}.${buffer[offset + 9]}`,\n\t\t// Z-Wave protocol versions are formatted as \"6.07\" and similar\n\t\tprotocolVersion: `${buffer[offset + 10]}.${\n\t\t\tbuffer[offset + 11].toString().padStart(\n\t\t\t\t2,\n\t\t\t\t\"0\",\n\t\t\t)\n\t\t}`,\n\t};\n}\n\nexport function encodeNVMDescriptor(descriptor: NVMDescriptor): Bytes {\n\tconst ret = new Bytes(12);\n\tret.writeUInt16BE(descriptor.manufacturerID, 0);\n\tret.writeUInt16BE(descriptor.firmwareID, 2);\n\tret.writeUInt16BE(descriptor.productType, 4);\n\tret.writeUInt16BE(descriptor.productID, 6);\n\tconst fwVersionParts = descriptor.firmwareVersion\n\t\t.split(\".\")\n\t\t.map((i) => parseInt(i));\n\tret[8] = fwVersionParts[0];\n\tret[9] = fwVersionParts[1];\n\tconst protocolVersionParts = descriptor.protocolVersion\n\t\t.split(\".\")\n\t\t.map((i) => parseInt(i));\n\tret[10] = protocolVersionParts[0];\n\tret[11] = protocolVersionParts[1];\n\treturn ret;\n}\n\nexport interface NVMModuleDescriptor {\n\tsize: number;\n\ttype: NVMModuleType;\n\tversion: string;\n}\n\nexport function parseNVMModuleDescriptor(\n\tdata: Uint8Array,\n\toffset: number = 0,\n): NVMModuleDescriptor {\n\tconst buffer = Bytes.view(data);\n\treturn {\n\t\tsize: buffer.readUInt16BE(offset),\n\t\ttype: buffer[offset + 2],\n\t\tversion: `${buffer[offset + 3]}.${buffer[offset + 4]}`,\n\t};\n}\n\nexport function encodeNVMModuleDescriptor(\n\tdescriptior: NVMModuleDescriptor,\n): Bytes {\n\tconst ret = new Bytes(5);\n\tret.writeUInt16BE(descriptior.size, 0);\n\tret[2] = descriptior.type;\n\tconst versionParts = descriptior.version.split(\".\").map((i) => parseInt(i));\n\tret[3] = versionParts[0];\n\tret[4] = versionParts[1];\n\treturn ret;\n}\n\nexport interface NVM500NodeInfo\n\textends Omit<NodeProtocolInfo, \"hasSpecificDeviceClass\">\n{\n\tgenericDeviceClass: number;\n\tspecificDeviceClass: number | null;\n}\n\nexport function parseNVM500NodeInfo(\n\tbuffer: Uint8Array,\n\toffset: number,\n): NVM500NodeInfo {\n\tconst { hasSpecificDeviceClass, ...protocolInfo } = parseNodeProtocolInfo(\n\t\tbuffer,\n\t\toffset,\n\t);\n\tconst genericDeviceClass = buffer[offset + 3];\n\tconst specificDeviceClass = hasSpecificDeviceClass\n\t\t? buffer[offset + 4]\n\t\t: null;\n\treturn {\n\t\t...protocolInfo,\n\t\tgenericDeviceClass,\n\t\tspecificDeviceClass,\n\t};\n}\n\nexport function encodeNVM500NodeInfo(nodeInfo: NVM500NodeInfo): Bytes {\n\treturn Bytes.concat([\n\t\tencodeNodeProtocolInfo({\n\t\t\t...nodeInfo,\n\t\t\thasSpecificDeviceClass: !!nodeInfo.specificDeviceClass,\n\t\t}),\n\t\tBytes.from([\n\t\t\tnodeInfo.genericDeviceClass,\n\t\t\tnodeInfo.specificDeviceClass ?? 0,\n\t\t]),\n\t]);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;AAAA,kBAIO;AACP,IAAAA,eAAsB;AAYhB,SAAU,mBACf,MACA,SAAiB,GAAC;AAElB,QAAM,SAAS,mBAAM,KAAK,IAAI;AAC9B,SAAO;IACN,gBAAgB,OAAO,aAAa,MAAM;IAC1C,YAAY,OAAO,aAAa,SAAS,CAAC;IAC1C,aAAa,OAAO,aAAa,SAAS,CAAC;IAC3C,WAAW,OAAO,aAAa,SAAS,CAAC;IACzC,iBAAiB,GAAG,OAAO,SAAS,CAAC,CAAC,IAAI,OAAO,SAAS,CAAC,CAAC;;IAE5D,iBAAiB,GAAG,OAAO,SAAS,EAAE,CAAC,IACtC,OAAO,SAAS,EAAE,EAAE,SAAQ,EAAG,SAC9B,GACA,GAAG,CAEL;;AAEF;AAnBgB;AAqBV,SAAU,oBAAoB,YAAyB;AAC5D,QAAM,MAAM,IAAI,mBAAM,EAAE;AACxB,MAAI,cAAc,WAAW,gBAAgB,CAAC;AAC9C,MAAI,cAAc,WAAW,YAAY,CAAC;AAC1C,MAAI,cAAc,WAAW,aAAa,CAAC;AAC3C,MAAI,cAAc,WAAW,WAAW,CAAC;AACzC,QAAM,iBAAiB,WAAW,gBAChC,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;AACxB,MAAI,CAAC,IAAI,eAAe,CAAC;AACzB,MAAI,CAAC,IAAI,eAAe,CAAC;AACzB,QAAM,uBAAuB,WAAW,gBACtC,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;AACxB,MAAI,EAAE,IAAI,qBAAqB,CAAC;AAChC,MAAI,EAAE,IAAI,qBAAqB,CAAC;AAChC,SAAO;AACR;AAjBgB;AAyBV,SAAU,yBACf,MACA,SAAiB,GAAC;AAElB,QAAM,SAAS,mBAAM,KAAK,IAAI;AAC9B,SAAO;IACN,MAAM,OAAO,aAAa,MAAM;IAChC,MAAM,OAAO,SAAS,CAAC;IACvB,SAAS,GAAG,OAAO,SAAS,CAAC,CAAC,IAAI,OAAO,SAAS,CAAC,CAAC;;AAEtD;AAVgB;AAYV,SAAU,0BACf,aAAgC;AAEhC,QAAM,MAAM,IAAI,mBAAM,CAAC;AACvB,MAAI,cAAc,YAAY,MAAM,CAAC;AACrC,MAAI,CAAC,IAAI,YAAY;AACrB,QAAM,eAAe,YAAY,QAAQ,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;AAC1E,MAAI,CAAC,IAAI,aAAa,CAAC;AACvB,MAAI,CAAC,IAAI,aAAa,CAAC;AACvB,SAAO;AACR;AAVgB;AAmBV,SAAU,oBACf,QACA,QAAc;AAEd,QAAM,EAAE,wBAAwB,GAAG,aAAY,QAAK,mCACnD,QACA,MAAM;AAEP,QAAM,qBAAqB,OAAO,SAAS,CAAC;AAC5C,QAAM,sBAAsB,yBACzB,OAAO,SAAS,CAAC,IACjB;AACH,SAAO;IACN,GAAG;IACH;IACA;;AAEF;AAjBgB;AAmBV,SAAU,qBAAqB,UAAwB;AAC5D,SAAO,mBAAM,OAAO;QACnB,oCAAuB;MACtB,GAAG;MACH,wBAAwB,CAAC,CAAC,SAAS;KACnC;IACD,mBAAM,KAAK;MACV,SAAS;MACT,SAAS,uBAAuB;KAChC;GACD;AACF;AAXgB;",
6
- "names": ["import_safe"]
4
+ "sourcesContent": ["import {\n\ttype NodeProtocolInfo,\n\tencodeNodeProtocolInfo,\n\tparseNodeProtocolInfo,\n} from \"@zwave-js/core\";\nimport { Bytes } from \"@zwave-js/shared\";\nimport type { NVMModuleType } from \"./shared.js\";\n\nexport interface NVMDescriptor {\n\tmanufacturerID: number;\n\tfirmwareID: number;\n\tproductType: number;\n\tproductID: number;\n\tfirmwareVersion: string;\n\tprotocolVersion: string;\n}\n\nexport function parseNVMDescriptor(\n\tdata: Uint8Array,\n\toffset: number = 0,\n): NVMDescriptor {\n\tconst buffer = Bytes.view(data);\n\treturn {\n\t\tmanufacturerID: buffer.readUInt16BE(offset),\n\t\tfirmwareID: buffer.readUInt16BE(offset + 2),\n\t\tproductType: buffer.readUInt16BE(offset + 4),\n\t\tproductID: buffer.readUInt16BE(offset + 6),\n\t\tfirmwareVersion: `${buffer[offset + 8]}.${buffer[offset + 9]}`,\n\t\t// Z-Wave protocol versions are formatted as \"6.07\" and similar\n\t\tprotocolVersion: `${buffer[offset + 10]}.${\n\t\t\tbuffer[offset + 11].toString().padStart(\n\t\t\t\t2,\n\t\t\t\t\"0\",\n\t\t\t)\n\t\t}`,\n\t};\n}\n\nexport function encodeNVMDescriptor(descriptor: NVMDescriptor): Bytes {\n\tconst ret = new Bytes(12);\n\tret.writeUInt16BE(descriptor.manufacturerID, 0);\n\tret.writeUInt16BE(descriptor.firmwareID, 2);\n\tret.writeUInt16BE(descriptor.productType, 4);\n\tret.writeUInt16BE(descriptor.productID, 6);\n\tconst fwVersionParts = descriptor.firmwareVersion\n\t\t.split(\".\")\n\t\t.map((i) => parseInt(i));\n\tret[8] = fwVersionParts[0];\n\tret[9] = fwVersionParts[1];\n\tconst protocolVersionParts = descriptor.protocolVersion\n\t\t.split(\".\")\n\t\t.map((i) => parseInt(i));\n\tret[10] = protocolVersionParts[0];\n\tret[11] = protocolVersionParts[1];\n\treturn ret;\n}\n\nexport interface NVMModuleDescriptor {\n\tsize: number;\n\ttype: NVMModuleType;\n\tversion: string;\n}\n\nexport function parseNVMModuleDescriptor(\n\tdata: Uint8Array,\n\toffset: number = 0,\n): NVMModuleDescriptor {\n\tconst buffer = Bytes.view(data);\n\treturn {\n\t\tsize: buffer.readUInt16BE(offset),\n\t\ttype: buffer[offset + 2],\n\t\tversion: `${buffer[offset + 3]}.${buffer[offset + 4]}`,\n\t};\n}\n\nexport function encodeNVMModuleDescriptor(\n\tdescriptior: NVMModuleDescriptor,\n): Bytes {\n\tconst ret = new Bytes(5);\n\tret.writeUInt16BE(descriptior.size, 0);\n\tret[2] = descriptior.type;\n\tconst versionParts = descriptior.version.split(\".\").map((i) => parseInt(i));\n\tret[3] = versionParts[0];\n\tret[4] = versionParts[1];\n\treturn ret;\n}\n\nexport interface NVM500NodeInfo\n\textends Omit<NodeProtocolInfo, \"hasSpecificDeviceClass\">\n{\n\tgenericDeviceClass: number;\n\tspecificDeviceClass: number | null;\n}\n\nexport function parseNVM500NodeInfo(\n\tbuffer: Uint8Array,\n\toffset: number,\n): NVM500NodeInfo {\n\tconst { hasSpecificDeviceClass, ...protocolInfo } = parseNodeProtocolInfo(\n\t\tbuffer,\n\t\toffset,\n\t);\n\tconst genericDeviceClass = buffer[offset + 3];\n\tconst specificDeviceClass = hasSpecificDeviceClass\n\t\t? buffer[offset + 4]\n\t\t: null;\n\treturn {\n\t\t...protocolInfo,\n\t\tgenericDeviceClass,\n\t\tspecificDeviceClass,\n\t};\n}\n\nexport function encodeNVM500NodeInfo(nodeInfo: NVM500NodeInfo): Bytes {\n\treturn Bytes.concat([\n\t\tencodeNodeProtocolInfo({\n\t\t\t...nodeInfo,\n\t\t\thasSpecificDeviceClass: !!nodeInfo.specificDeviceClass,\n\t\t}),\n\t\tBytes.from([\n\t\t\tnodeInfo.genericDeviceClass,\n\t\t\tnodeInfo.specificDeviceClass ?? 0,\n\t\t]),\n\t]);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;AAAA,kBAIO;AACP,oBAAsB;AAYhB,SAAU,mBACf,MACA,SAAiB,GAAC;AAElB,QAAM,SAAS,oBAAM,KAAK,IAAI;AAC9B,SAAO;IACN,gBAAgB,OAAO,aAAa,MAAM;IAC1C,YAAY,OAAO,aAAa,SAAS,CAAC;IAC1C,aAAa,OAAO,aAAa,SAAS,CAAC;IAC3C,WAAW,OAAO,aAAa,SAAS,CAAC;IACzC,iBAAiB,GAAG,OAAO,SAAS,CAAC,CAAC,IAAI,OAAO,SAAS,CAAC,CAAC;;IAE5D,iBAAiB,GAAG,OAAO,SAAS,EAAE,CAAC,IACtC,OAAO,SAAS,EAAE,EAAE,SAAQ,EAAG,SAC9B,GACA,GAAG,CAEL;;AAEF;AAnBgB;AAqBV,SAAU,oBAAoB,YAAyB;AAC5D,QAAM,MAAM,IAAI,oBAAM,EAAE;AACxB,MAAI,cAAc,WAAW,gBAAgB,CAAC;AAC9C,MAAI,cAAc,WAAW,YAAY,CAAC;AAC1C,MAAI,cAAc,WAAW,aAAa,CAAC;AAC3C,MAAI,cAAc,WAAW,WAAW,CAAC;AACzC,QAAM,iBAAiB,WAAW,gBAChC,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;AACxB,MAAI,CAAC,IAAI,eAAe,CAAC;AACzB,MAAI,CAAC,IAAI,eAAe,CAAC;AACzB,QAAM,uBAAuB,WAAW,gBACtC,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;AACxB,MAAI,EAAE,IAAI,qBAAqB,CAAC;AAChC,MAAI,EAAE,IAAI,qBAAqB,CAAC;AAChC,SAAO;AACR;AAjBgB;AAyBV,SAAU,yBACf,MACA,SAAiB,GAAC;AAElB,QAAM,SAAS,oBAAM,KAAK,IAAI;AAC9B,SAAO;IACN,MAAM,OAAO,aAAa,MAAM;IAChC,MAAM,OAAO,SAAS,CAAC;IACvB,SAAS,GAAG,OAAO,SAAS,CAAC,CAAC,IAAI,OAAO,SAAS,CAAC,CAAC;;AAEtD;AAVgB;AAYV,SAAU,0BACf,aAAgC;AAEhC,QAAM,MAAM,IAAI,oBAAM,CAAC;AACvB,MAAI,cAAc,YAAY,MAAM,CAAC;AACrC,MAAI,CAAC,IAAI,YAAY;AACrB,QAAM,eAAe,YAAY,QAAQ,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;AAC1E,MAAI,CAAC,IAAI,aAAa,CAAC;AACvB,MAAI,CAAC,IAAI,aAAa,CAAC;AACvB,SAAO;AACR;AAVgB;AAmBV,SAAU,oBACf,QACA,QAAc;AAEd,QAAM,EAAE,wBAAwB,GAAG,aAAY,QAAK,mCACnD,QACA,MAAM;AAEP,QAAM,qBAAqB,OAAO,SAAS,CAAC;AAC5C,QAAM,sBAAsB,yBACzB,OAAO,SAAS,CAAC,IACjB;AACH,SAAO;IACN,GAAG;IACH;IACA;;AAEF;AAjBgB;AAmBV,SAAU,qBAAqB,UAAwB;AAC5D,SAAO,oBAAM,OAAO;QACnB,oCAAuB;MACtB,GAAG;MACH,wBAAwB,CAAC,CAAC,SAAS;KACnC;IACD,oBAAM,KAAK;MACV,SAAS;MACT,SAAS,uBAAuB;KAChC;GACD;AACF;AAXgB;",
6
+ "names": []
7
7
  }
@@ -1,5 +1,5 @@
1
- import { type NVM500 } from "../NVM500.js";
2
- import { type NVMAdapter, type NVMProperty, type NVMPropertyToDataType } from "../common/definitions.js";
1
+ import type { NVM500 } from "../NVM500.js";
2
+ import type { NVMAdapter, NVMProperty, NVMPropertyToDataType } from "../common/definitions.js";
3
3
  export declare class NVM500Adapter implements NVMAdapter {
4
4
  constructor(nvm: NVM500);
5
5
  private _nvm;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/nvm500/adapter.ts"],
4
- "sourcesContent": ["import {\n\ttype CommandClasses,\n\tZWaveError,\n\tZWaveErrorCodes,\n} from \"@zwave-js/core\";\nimport { Bytes } from \"@zwave-js/shared\";\nimport { assertNever } from \"alcalzone-shared/helpers\";\nimport { SUC_MAX_UPDATES } from \"../../consts.js\";\nimport { type NVM500, type NVM500Info } from \"../NVM500.js\";\nimport {\n\ttype ControllerNVMProperty,\n\ttype NVMAdapter,\n\ttype NVMProperty,\n\ttype NVMPropertyToDataType,\n\ttype NodeNVMProperty,\n} from \"../common/definitions.js\";\nimport { type Route } from \"../common/routeCache.js\";\nimport { type SUCUpdateEntry } from \"../common/sucUpdateEntry.js\";\nimport { type NodeInfo } from \"../nvm3/files/index.js\";\nimport { type NVM500NodeInfo } from \"./EntryParsers.js\";\nimport {\n\tAPPL_NODEPARM_MAX,\n\ttype NVMData,\n\ttype NVMEntryName,\n\tNVM_SERIALAPI_HOST_SIZE,\n} from \"./shared.js\";\n\nexport class NVM500Adapter implements NVMAdapter {\n\tpublic constructor(nvm: NVM500) {\n\t\tthis._nvm = nvm;\n\t}\n\n\tprivate _nvm: NVM500;\n\n\tpublic async get<T extends NVMProperty, R extends boolean = boolean>(\n\t\tproperty: T,\n\t\trequired?: R,\n\t): Promise<\n\t\tR extends true ? NonNullable<NVMPropertyToDataType<T>>\n\t\t\t: (NVMPropertyToDataType<T> | undefined)\n\t> {\n\t\tconst info = this._nvm.info ?? await this._nvm.init();\n\n\t\tlet ret: unknown;\n\t\tif (property.domain === \"controller\") {\n\t\t\tret = await this.getControllerNVMProperty(info, property);\n\t\t} else if (property.domain === \"lrnode\") {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`500 series NVM has no support for Long Range node information`,\n\t\t\t\tZWaveErrorCodes.NVM_ObjectNotFound,\n\t\t\t);\n\t\t} else {\n\t\t\tret = await this.getNodeNVMProperty(property);\n\t\t}\n\t\tif (required && ret === undefined) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`NVM data for property ${JSON.stringify(property)} not found`,\n\t\t\t\tZWaveErrorCodes.NVM_ObjectNotFound,\n\t\t\t);\n\t\t}\n\t\treturn ret as any;\n\t}\n\n\tprivate async getOnly<T extends NVMData>(\n\t\tproperty: NVMEntryName,\n\t): Promise<T | undefined> {\n\t\tconst data = await this._nvm.get(property);\n\t\treturn data?.[0] as T | undefined;\n\t}\n\n\tprivate async getSingle<T extends NVMData>(\n\t\tproperty: NVMEntryName,\n\t\tindex: number,\n\t): Promise<T | undefined> {\n\t\tconst data = await this._nvm.getSingle(property, index);\n\t\treturn data as T | undefined;\n\t}\n\n\tprivate getAll<T extends NVMData>(\n\t\tproperty: NVMEntryName,\n\t): Promise<T[] | undefined> {\n\t\treturn this._nvm.get(property) as any;\n\t}\n\n\tprivate async getControllerNVMProperty(\n\t\tinfo: NVM500Info,\n\t\tproperty: ControllerNVMProperty,\n\t): Promise<unknown> {\n\t\tswitch (property.type) {\n\t\t\tcase \"protocolVersion\":\n\t\t\t\treturn info.nvmDescriptor.protocolVersion;\n\t\t\tcase \"applicationVersion\":\n\t\t\t\treturn info.nvmDescriptor.firmwareVersion;\n\n\t\t\tcase \"protocolFileFormat\":\n\t\t\tcase \"applicationFileFormat\":\n\t\t\t\t// Not supported in 500 series, but we use 500 in JSON to designate a 500 series NVM\n\t\t\t\treturn 500;\n\n\t\t\tcase \"applicationData\":\n\t\t\t\treturn this.getOnly<Uint8Array>(\n\t\t\t\t\t\"EEOFFSET_HOST_OFFSET_START_far\",\n\t\t\t\t);\n\n\t\t\tcase \"applicationName\":\n\t\t\t\t// Not supported in 500 series\n\t\t\t\treturn;\n\n\t\t\tcase \"homeId\": {\n\t\t\t\t// 500 series stores the home ID as a number\n\t\t\t\tconst homeId = await this.getOnly<number>(\n\t\t\t\t\t\"EX_NVM_HOME_ID_far\",\n\t\t\t\t);\n\t\t\t\tif (homeId == undefined) return;\n\t\t\t\tconst ret = new Bytes(4).fill(0);\n\t\t\t\t// FIXME: BE? LE?\n\t\t\t\tret.writeUInt32BE(homeId, 0);\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\tcase \"learnedHomeId\": {\n\t\t\t\t// 500 series stores the home ID as a number\n\t\t\t\tconst homeId = await this.getOnly<number>(\"NVM_HOMEID_far\");\n\t\t\t\tif (homeId == undefined) return;\n\t\t\t\tconst ret = new Bytes(4).fill(0);\n\t\t\t\t// FIXME: BE? LE?\n\t\t\t\tret.writeUInt32BE(homeId, 0);\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\tcase \"nodeId\":\n\t\t\t\treturn this.getOnly<number>(\"NVM_NODEID_far\");\n\n\t\t\tcase \"lastNodeId\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EX_NVM_LAST_USED_NODE_ID_START_far\",\n\t\t\t\t);\n\n\t\t\tcase \"staticControllerNodeId\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far\",\n\t\t\t\t);\n\t\t\tcase \"sucLastIndex\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EX_NVM_SUC_LAST_INDEX_START_far\",\n\t\t\t\t);\n\t\t\tcase \"controllerConfiguration\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EX_NVM_CONTROLLER_CONFIGURATION_far\",\n\t\t\t\t);\n\n\t\t\tcase \"maxNodeId\":\n\t\t\t\treturn this.getOnly<number>(\"EX_NVM_MAX_NODE_ID_far\");\n\t\t\tcase \"reservedId\":\n\t\t\t\treturn this.getOnly<number>(\"EX_NVM_RESERVED_ID_far\");\n\t\t\tcase \"systemState\":\n\t\t\t\treturn this.getOnly<number>(\"NVM_SYSTEM_STATE\");\n\n\t\t\tcase \"commandClasses\": {\n\t\t\t\tconst numCCs = await this.getOnly<number>(\n\t\t\t\t\t\"EEOFFSET_CMDCLASS_LEN_far\",\n\t\t\t\t);\n\t\t\t\tconst ret = await this.getAll<CommandClasses>(\n\t\t\t\t\t\"EEOFFSET_CMDCLASS_far\",\n\t\t\t\t);\n\t\t\t\treturn ret?.slice(0, numCCs);\n\t\t\t}\n\n\t\t\tcase \"preferredRepeaters\":\n\t\t\t\treturn this.getOnly<number[]>(\"NVM_PREFERRED_REPEATERS_far\");\n\n\t\t\tcase \"appRouteLock\": {\n\t\t\t\treturn this.getOnly<number[]>(\n\t\t\t\t\t\"EX_NVM_ROUTECACHE_APP_LOCK_far\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase \"routeSlaveSUC\": {\n\t\t\t\treturn this.getOnly<number[]>(\n\t\t\t\t\t\"EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase \"sucPendingUpdate\": {\n\t\t\t\treturn this.getOnly<number[]>(\"EX_NVM_PENDING_UPDATE_far\");\n\t\t\t}\n\t\t\tcase \"pendingDiscovery\": {\n\t\t\t\treturn this.getOnly<number[]>(\"NVM_PENDING_DISCOVERY_far\");\n\t\t\t}\n\n\t\t\tcase \"nodeIds\": {\n\t\t\t\tconst nodeInfos = await this.getAll<NVM500NodeInfo>(\n\t\t\t\t\t\"EX_NVM_NODE_TABLE_START_far\",\n\t\t\t\t);\n\t\t\t\treturn nodeInfos\n\t\t\t\t\t?.map((info, index) => info ? (index + 1) : undefined)\n\t\t\t\t\t.filter((id) => id != undefined);\n\t\t\t}\n\n\t\t\tcase \"virtualNodeIds\": {\n\t\t\t\tconst ret = await this.getOnly<number[]>(\n\t\t\t\t\t\"EX_NVM_BRIDGE_NODEPOOL_START_far\",\n\t\t\t\t);\n\t\t\t\treturn ret ?? [];\n\t\t\t}\n\n\t\t\tcase \"sucUpdateEntries\": {\n\t\t\t\tconst ret = await this.getAll<SUCUpdateEntry>(\n\t\t\t\t\t\"EX_NVM_SUC_NODE_LIST_START_far\",\n\t\t\t\t);\n\t\t\t\treturn ret?.filter(Boolean);\n\t\t\t}\n\n\t\t\tcase \"watchdogStarted\":\n\t\t\t\treturn this.getOnly<number>(\"EEOFFSET_WATCHDOG_STARTED_far\");\n\n\t\t\tcase \"powerLevelNormal\":\n\t\t\t\treturn this.getAll<number>(\n\t\t\t\t\t\"EEOFFSET_POWERLEVEL_NORMAL_far\",\n\t\t\t\t);\n\t\t\tcase \"powerLevelLow\":\n\t\t\t\treturn this.getAll<number>(\n\t\t\t\t\t\"EEOFFSET_POWERLEVEL_LOW_far\",\n\t\t\t\t);\n\t\t\tcase \"powerMode\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EEOFFSET_MODULE_POWER_MODE_far\",\n\t\t\t\t);\n\t\t\tcase \"powerModeExtintEnable\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EEOFFSET_MODULE_POWER_MODE_EXTINT_ENABLE_far\",\n\t\t\t\t);\n\t\t\tcase \"powerModeWutTimeout\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EEOFFSET_MODULE_POWER_MODE_WUT_TIMEOUT_far\",\n\t\t\t\t);\n\n\t\t\tcase \"sucAwarenessPushNeeded\":\n\t\t\tcase \"lastNodeIdLR\":\n\t\t\tcase \"maxNodeIdLR\":\n\t\t\tcase \"reservedIdLR\":\n\t\t\tcase \"primaryLongRangeChannelId\":\n\t\t\tcase \"dcdcConfig\":\n\t\t\tcase \"lrNodeIds\":\n\t\t\tcase \"includedInsecurely\":\n\t\t\tcase \"includedSecurelyInsecureCCs\":\n\t\t\tcase \"includedSecurelySecureCCs\":\n\t\t\tcase \"rfRegion\":\n\t\t\tcase \"txPower\":\n\t\t\tcase \"measured0dBm\":\n\t\t\tcase \"enablePTI\":\n\t\t\tcase \"maxTXPower\":\n\t\t\tcase \"nodeIdType\":\n\t\t\tcase \"isListening\":\n\t\t\tcase \"optionalFunctionality\":\n\t\t\tcase \"genericDeviceClass\":\n\t\t\tcase \"specificDeviceClass\":\n\t\t\t\t// Not supported on 500 series, 700+ series only\n\t\t\t\treturn;\n\n\t\t\tdefault:\n\t\t\t\tassertNever(property.type);\n\t\t}\n\t}\n\n\tprivate async getNodeNVMProperty(\n\t\tproperty: NodeNVMProperty,\n\t): Promise<unknown> {\n\t\tswitch (property.type) {\n\t\t\tcase \"info\": {\n\t\t\t\tconst nodeId = property.nodeId;\n\t\t\t\tconst nodeInfo = await this.getSingle<NVM500NodeInfo>(\n\t\t\t\t\t\"EX_NVM_NODE_TABLE_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t);\n\t\t\t\tconst sucUpdateIndex = await this.getSingle<number>(\n\t\t\t\t\t\"EX_NVM_SUC_CONTROLLER_LIST_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t) ?? 0xff;\n\t\t\t\tconst neighbors = await this.getSingle<number[]>(\n\t\t\t\t\t\"EX_NVM_ROUTING_TABLE_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t) ?? [];\n\n\t\t\t\tif (!nodeInfo) return;\n\n\t\t\t\treturn {\n\t\t\t\t\tnodeId,\n\t\t\t\t\t...nodeInfo,\n\t\t\t\t\tneighbors,\n\t\t\t\t\tsucUpdateIndex,\n\t\t\t\t} satisfies NodeInfo;\n\t\t\t}\n\n\t\t\tcase \"routes\": {\n\t\t\t\tconst lwr = await this.getSingle<Route>(\n\t\t\t\t\t\"EX_NVM_ROUTECACHE_START_far\",\n\t\t\t\t\tproperty.nodeId - 1,\n\t\t\t\t);\n\t\t\t\tconst nlwr = await this.getSingle<Route>(\n\t\t\t\t\t\"EX_NVM_ROUTECACHE_NLWR_SR_START_far\",\n\t\t\t\t\tproperty.nodeId - 1,\n\t\t\t\t);\n\t\t\t\treturn { lwr, nlwr };\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate setOnly(\n\t\tproperty: NVMEntryName,\n\t\tvalue: NVMData,\n\t): Promise<void> {\n\t\treturn this._nvm.set(property, [value]);\n\t}\n\n\tprivate setSingle(\n\t\tproperty: NVMEntryName,\n\t\tindex: number,\n\t\tvalue: NVMData,\n\t): Promise<void> {\n\t\treturn this._nvm.setSingle(property, index, value);\n\t}\n\n\tprivate setAll(\n\t\tproperty: NVMEntryName,\n\t\tvalue: NVMData[],\n\t): Promise<void> {\n\t\treturn this._nvm.set(property, value);\n\t}\n\n\tset<T extends NVMProperty>(\n\t\tproperty: T,\n\t\tvalue: NVMPropertyToDataType<T>,\n\t): Promise<void> {\n\t\tif (property.domain === \"controller\") {\n\t\t\treturn this.setControllerNVMProperty(property, value);\n\t\t} else if (property.domain === \"lrnode\") {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`500 series NVM has no support for Long Range node information`,\n\t\t\t\tZWaveErrorCodes.NVM_ObjectNotFound,\n\t\t\t);\n\t\t} else {\n\t\t\treturn this.setNodeNVMProperty(property, value);\n\t\t}\n\t}\n\n\tprivate async setControllerNVMProperty(\n\t\tproperty: ControllerNVMProperty,\n\t\tvalue: any,\n\t): Promise<void> {\n\t\tswitch (property.type) {\n\t\t\tcase \"protocolVersion\":\n\t\t\tcase \"applicationVersion\":\n\t\t\t\t// Only written during erase\n\t\t\t\treturn;\n\n\t\t\tcase \"protocolFileFormat\":\n\t\t\tcase \"applicationFileFormat\":\n\t\t\t\t// Cannot be written\n\t\t\t\treturn;\n\n\t\t\tcase \"applicationData\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EEOFFSET_HOST_OFFSET_START_far\",\n\t\t\t\t\tvalue ?? new Bytes(NVM_SERIALAPI_HOST_SIZE).fill(0xff),\n\t\t\t\t);\n\n\t\t\tcase \"applicationName\":\n\t\t\t\t// Not supported in 500 series\n\t\t\t\treturn;\n\n\t\t\tcase \"homeId\": {\n\t\t\t\t// 500 series stores the home ID as a number\n\t\t\t\tconst homeId = value.readUInt32BE(0);\n\t\t\t\treturn this.setOnly(\"EX_NVM_HOME_ID_far\", homeId);\n\t\t\t}\n\n\t\t\tcase \"learnedHomeId\": {\n\t\t\t\t// 500 series stores the home ID as a number\n\t\t\t\tconst learnedHomeId = value?.readUInt32BE(0) ?? 0x00000000;\n\t\t\t\treturn this.setOnly(\"NVM_HOMEID_far\", learnedHomeId);\n\t\t\t}\n\n\t\t\tcase \"nodeId\":\n\t\t\t\treturn this.setOnly(\"NVM_NODEID_far\", value);\n\n\t\t\tcase \"lastNodeId\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_LAST_USED_NODE_ID_START_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\n\t\t\tcase \"staticControllerNodeId\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\tcase \"sucLastIndex\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_SUC_LAST_INDEX_START_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\tcase \"controllerConfiguration\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_CONTROLLER_CONFIGURATION_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\n\t\t\tcase \"maxNodeId\":\n\t\t\t\treturn this.setOnly(\"EX_NVM_MAX_NODE_ID_far\", value);\n\t\t\tcase \"reservedId\":\n\t\t\t\treturn this.setOnly(\"EX_NVM_RESERVED_ID_far\", value);\n\t\t\tcase \"systemState\":\n\t\t\t\treturn this.setOnly(\"NVM_SYSTEM_STATE\", value);\n\n\t\t\tcase \"commandClasses\": {\n\t\t\t\tawait this.setOnly(\n\t\t\t\t\t\"EEOFFSET_CMDCLASS_LEN_far\",\n\t\t\t\t\tvalue.length,\n\t\t\t\t);\n\t\t\t\tconst CCs = new Array(APPL_NODEPARM_MAX).fill(0xff);\n\t\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\t\tif (i < APPL_NODEPARM_MAX) {\n\t\t\t\t\t\tCCs[i] = value[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tawait this.setAll(\n\t\t\t\t\t\"EEOFFSET_CMDCLASS_far\",\n\t\t\t\t\tCCs,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcase \"preferredRepeaters\":\n\t\t\t\treturn this.setOnly(\"NVM_PREFERRED_REPEATERS_far\", value);\n\n\t\t\tcase \"appRouteLock\": {\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_ROUTECACHE_APP_LOCK_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase \"routeSlaveSUC\": {\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase \"sucPendingUpdate\": {\n\t\t\t\treturn this.setOnly(\"EX_NVM_PENDING_UPDATE_far\", value);\n\t\t\t}\n\t\t\tcase \"pendingDiscovery\": {\n\t\t\t\treturn this.setOnly(\"NVM_PENDING_DISCOVERY_far\", value);\n\t\t\t}\n\n\t\t\tcase \"nodeIds\":\n\t\t\t\t// Cannot be written. Is implied by the node info table\n\t\t\t\treturn;\n\n\t\t\tcase \"virtualNodeIds\": {\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_BRIDGE_NODEPOOL_START_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase \"sucUpdateEntries\": {\n\t\t\t\tconst entries = value as SUCUpdateEntry[];\n\t\t\t\tconst sucUpdateEntries = new Array(SUC_MAX_UPDATES).fill(\n\t\t\t\t\tundefined,\n\t\t\t\t);\n\t\t\t\tfor (let i = 0; i < entries.length; i++) {\n\t\t\t\t\tif (i < SUC_MAX_UPDATES) {\n\t\t\t\t\t\tsucUpdateEntries[i] = entries[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.setAll(\n\t\t\t\t\t\"EX_NVM_SUC_NODE_LIST_START_far\",\n\t\t\t\t\tsucUpdateEntries,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase \"watchdogStarted\":\n\t\t\t\treturn this.setOnly(\"EEOFFSET_WATCHDOG_STARTED_far\", value);\n\n\t\t\tcase \"powerLevelNormal\":\n\t\t\t\treturn this.setAll(\n\t\t\t\t\t\"EEOFFSET_POWERLEVEL_NORMAL_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\tcase \"powerLevelLow\":\n\t\t\t\treturn this.setAll(\n\t\t\t\t\t\"EEOFFSET_POWERLEVEL_LOW_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\tcase \"powerMode\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EEOFFSET_MODULE_POWER_MODE_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\tcase \"powerModeExtintEnable\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EEOFFSET_MODULE_POWER_MODE_EXTINT_ENABLE_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\tcase \"powerModeWutTimeout\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EEOFFSET_MODULE_POWER_MODE_WUT_TIMEOUT_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\n\t\t\tcase \"sucAwarenessPushNeeded\":\n\t\t\tcase \"lastNodeIdLR\":\n\t\t\tcase \"maxNodeIdLR\":\n\t\t\tcase \"reservedIdLR\":\n\t\t\tcase \"primaryLongRangeChannelId\":\n\t\t\tcase \"dcdcConfig\":\n\t\t\tcase \"lrNodeIds\":\n\t\t\tcase \"includedInsecurely\":\n\t\t\tcase \"includedSecurelyInsecureCCs\":\n\t\t\tcase \"includedSecurelySecureCCs\":\n\t\t\tcase \"rfRegion\":\n\t\t\tcase \"txPower\":\n\t\t\tcase \"measured0dBm\":\n\t\t\tcase \"enablePTI\":\n\t\t\tcase \"maxTXPower\":\n\t\t\tcase \"nodeIdType\":\n\t\t\tcase \"isListening\":\n\t\t\tcase \"optionalFunctionality\":\n\t\t\tcase \"genericDeviceClass\":\n\t\t\tcase \"specificDeviceClass\":\n\t\t\t\t// Not supported on 500 series, 700+ series only\n\t\t\t\treturn;\n\n\t\t\tdefault:\n\t\t\t\tassertNever(property.type);\n\t\t}\n\t}\n\n\tprivate async setNodeNVMProperty(\n\t\tproperty: NodeNVMProperty,\n\t\tvalue: any,\n\t): Promise<void> {\n\t\tswitch (property.type) {\n\t\t\tcase \"info\": {\n\t\t\t\tconst nodeId = property.nodeId;\n\t\t\t\tconst node = value as NodeInfo;\n\t\t\t\tawait this.setSingle(\n\t\t\t\t\t\"EX_NVM_NODE_TABLE_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t\tnode\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\tisListening: node.isListening,\n\t\t\t\t\t\t\tisFrequentListening: node.isFrequentListening,\n\t\t\t\t\t\t\tisRouting: node.isRouting,\n\t\t\t\t\t\t\tsupportedDataRates: node.supportedDataRates,\n\t\t\t\t\t\t\tprotocolVersion: node.protocolVersion,\n\t\t\t\t\t\t\toptionalFunctionality: node.optionalFunctionality,\n\t\t\t\t\t\t\tnodeType: node.nodeType,\n\t\t\t\t\t\t\tsupportsSecurity: node.supportsSecurity,\n\t\t\t\t\t\t\tsupportsBeaming: node.supportsBeaming,\n\t\t\t\t\t\t\tgenericDeviceClass: node.genericDeviceClass,\n\t\t\t\t\t\t\tspecificDeviceClass: node.specificDeviceClass\n\t\t\t\t\t\t\t\t?? null,\n\t\t\t\t\t\t} satisfies NVM500NodeInfo\n\t\t\t\t\t\t: undefined,\n\t\t\t\t);\n\t\t\t\tawait this.setSingle(\n\t\t\t\t\t\"EX_NVM_SUC_CONTROLLER_LIST_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t\tnode?.sucUpdateIndex ?? 0xfe,\n\t\t\t\t);\n\t\t\t\tawait this.setSingle(\n\t\t\t\t\t\"EX_NVM_ROUTING_TABLE_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t\tnode?.neighbors,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase \"routes\": {\n\t\t\t\tconst nodeId = property.nodeId;\n\t\t\t\tconst routes = value as { lwr?: Route; nlwr?: Route };\n\t\t\t\tawait this.setSingle(\n\t\t\t\t\t\"EX_NVM_ROUTECACHE_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t\troutes.lwr,\n\t\t\t\t);\n\t\t\t\tawait this.setSingle(\n\t\t\t\t\t\"EX_NVM_ROUTECACHE_NLWR_SR_START_far\",\n\t\t\t\t\tproperty.nodeId - 1,\n\t\t\t\t\troutes.nlwr,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/require-await\n\tpublic async delete(_property: NVMProperty): Promise<void> {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic hasPendingChanges(): boolean {\n\t\t// We don't buffer changes\n\t\treturn false;\n\t}\n\n\tpublic async commit(): Promise<void> {\n\t\t// We don't buffer changes at the moment\n\t}\n}\n"],
4
+ "sourcesContent": ["import {\n\ttype CommandClasses,\n\tZWaveError,\n\tZWaveErrorCodes,\n} from \"@zwave-js/core\";\nimport { Bytes } from \"@zwave-js/shared\";\nimport { assertNever } from \"alcalzone-shared/helpers\";\nimport { SUC_MAX_UPDATES } from \"../../consts.js\";\nimport type { NVM500, NVM500Info } from \"../NVM500.js\";\nimport type {\n\tControllerNVMProperty,\n\tNVMAdapter,\n\tNVMProperty,\n\tNVMPropertyToDataType,\n\tNodeNVMProperty,\n} from \"../common/definitions.js\";\nimport type { Route } from \"../common/routeCache.js\";\nimport type { SUCUpdateEntry } from \"../common/sucUpdateEntry.js\";\nimport type { NodeInfo } from \"../nvm3/files/index.js\";\nimport type { NVM500NodeInfo } from \"./EntryParsers.js\";\nimport {\n\tAPPL_NODEPARM_MAX,\n\ttype NVMData,\n\ttype NVMEntryName,\n\tNVM_SERIALAPI_HOST_SIZE,\n} from \"./shared.js\";\n\nexport class NVM500Adapter implements NVMAdapter {\n\tpublic constructor(nvm: NVM500) {\n\t\tthis._nvm = nvm;\n\t}\n\n\tprivate _nvm: NVM500;\n\n\tpublic async get<T extends NVMProperty, R extends boolean = boolean>(\n\t\tproperty: T,\n\t\trequired?: R,\n\t): Promise<\n\t\tR extends true ? NonNullable<NVMPropertyToDataType<T>>\n\t\t\t: (NVMPropertyToDataType<T> | undefined)\n\t> {\n\t\tconst info = this._nvm.info ?? await this._nvm.init();\n\n\t\tlet ret: unknown;\n\t\tif (property.domain === \"controller\") {\n\t\t\tret = await this.getControllerNVMProperty(info, property);\n\t\t} else if (property.domain === \"lrnode\") {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`500 series NVM has no support for Long Range node information`,\n\t\t\t\tZWaveErrorCodes.NVM_ObjectNotFound,\n\t\t\t);\n\t\t} else {\n\t\t\tret = await this.getNodeNVMProperty(property);\n\t\t}\n\t\tif (required && ret === undefined) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`NVM data for property ${JSON.stringify(property)} not found`,\n\t\t\t\tZWaveErrorCodes.NVM_ObjectNotFound,\n\t\t\t);\n\t\t}\n\t\treturn ret as any;\n\t}\n\n\tprivate async getOnly<T extends NVMData>(\n\t\tproperty: NVMEntryName,\n\t): Promise<T | undefined> {\n\t\tconst data = await this._nvm.get(property);\n\t\treturn data?.[0] as T | undefined;\n\t}\n\n\tprivate async getSingle<T extends NVMData>(\n\t\tproperty: NVMEntryName,\n\t\tindex: number,\n\t): Promise<T | undefined> {\n\t\tconst data = await this._nvm.getSingle(property, index);\n\t\treturn data as T | undefined;\n\t}\n\n\tprivate getAll<T extends NVMData>(\n\t\tproperty: NVMEntryName,\n\t): Promise<T[] | undefined> {\n\t\treturn this._nvm.get(property) as any;\n\t}\n\n\tprivate async getControllerNVMProperty(\n\t\tinfo: NVM500Info,\n\t\tproperty: ControllerNVMProperty,\n\t): Promise<unknown> {\n\t\tswitch (property.type) {\n\t\t\tcase \"protocolVersion\":\n\t\t\t\treturn info.nvmDescriptor.protocolVersion;\n\t\t\tcase \"applicationVersion\":\n\t\t\t\treturn info.nvmDescriptor.firmwareVersion;\n\n\t\t\tcase \"protocolFileFormat\":\n\t\t\tcase \"applicationFileFormat\":\n\t\t\t\t// Not supported in 500 series, but we use 500 in JSON to designate a 500 series NVM\n\t\t\t\treturn 500;\n\n\t\t\tcase \"applicationData\":\n\t\t\t\treturn this.getOnly<Uint8Array>(\n\t\t\t\t\t\"EEOFFSET_HOST_OFFSET_START_far\",\n\t\t\t\t);\n\n\t\t\tcase \"applicationName\":\n\t\t\t\t// Not supported in 500 series\n\t\t\t\treturn;\n\n\t\t\tcase \"homeId\": {\n\t\t\t\t// 500 series stores the home ID as a number\n\t\t\t\tconst homeId = await this.getOnly<number>(\n\t\t\t\t\t\"EX_NVM_HOME_ID_far\",\n\t\t\t\t);\n\t\t\t\tif (homeId == undefined) return;\n\t\t\t\tconst ret = new Bytes(4).fill(0);\n\t\t\t\t// FIXME: BE? LE?\n\t\t\t\tret.writeUInt32BE(homeId, 0);\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\tcase \"learnedHomeId\": {\n\t\t\t\t// 500 series stores the home ID as a number\n\t\t\t\tconst homeId = await this.getOnly<number>(\"NVM_HOMEID_far\");\n\t\t\t\tif (homeId == undefined) return;\n\t\t\t\tconst ret = new Bytes(4).fill(0);\n\t\t\t\t// FIXME: BE? LE?\n\t\t\t\tret.writeUInt32BE(homeId, 0);\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\tcase \"nodeId\":\n\t\t\t\treturn this.getOnly<number>(\"NVM_NODEID_far\");\n\n\t\t\tcase \"lastNodeId\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EX_NVM_LAST_USED_NODE_ID_START_far\",\n\t\t\t\t);\n\n\t\t\tcase \"staticControllerNodeId\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far\",\n\t\t\t\t);\n\t\t\tcase \"sucLastIndex\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EX_NVM_SUC_LAST_INDEX_START_far\",\n\t\t\t\t);\n\t\t\tcase \"controllerConfiguration\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EX_NVM_CONTROLLER_CONFIGURATION_far\",\n\t\t\t\t);\n\n\t\t\tcase \"maxNodeId\":\n\t\t\t\treturn this.getOnly<number>(\"EX_NVM_MAX_NODE_ID_far\");\n\t\t\tcase \"reservedId\":\n\t\t\t\treturn this.getOnly<number>(\"EX_NVM_RESERVED_ID_far\");\n\t\t\tcase \"systemState\":\n\t\t\t\treturn this.getOnly<number>(\"NVM_SYSTEM_STATE\");\n\n\t\t\tcase \"commandClasses\": {\n\t\t\t\tconst numCCs = await this.getOnly<number>(\n\t\t\t\t\t\"EEOFFSET_CMDCLASS_LEN_far\",\n\t\t\t\t);\n\t\t\t\tconst ret = await this.getAll<CommandClasses>(\n\t\t\t\t\t\"EEOFFSET_CMDCLASS_far\",\n\t\t\t\t);\n\t\t\t\treturn ret?.slice(0, numCCs);\n\t\t\t}\n\n\t\t\tcase \"preferredRepeaters\":\n\t\t\t\treturn this.getOnly<number[]>(\"NVM_PREFERRED_REPEATERS_far\");\n\n\t\t\tcase \"appRouteLock\": {\n\t\t\t\treturn this.getOnly<number[]>(\n\t\t\t\t\t\"EX_NVM_ROUTECACHE_APP_LOCK_far\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase \"routeSlaveSUC\": {\n\t\t\t\treturn this.getOnly<number[]>(\n\t\t\t\t\t\"EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase \"sucPendingUpdate\": {\n\t\t\t\treturn this.getOnly<number[]>(\"EX_NVM_PENDING_UPDATE_far\");\n\t\t\t}\n\t\t\tcase \"pendingDiscovery\": {\n\t\t\t\treturn this.getOnly<number[]>(\"NVM_PENDING_DISCOVERY_far\");\n\t\t\t}\n\n\t\t\tcase \"nodeIds\": {\n\t\t\t\tconst nodeInfos = await this.getAll<NVM500NodeInfo>(\n\t\t\t\t\t\"EX_NVM_NODE_TABLE_START_far\",\n\t\t\t\t);\n\t\t\t\treturn nodeInfos\n\t\t\t\t\t?.map((info, index) => info ? (index + 1) : undefined)\n\t\t\t\t\t.filter((id) => id != undefined);\n\t\t\t}\n\n\t\t\tcase \"virtualNodeIds\": {\n\t\t\t\tconst ret = await this.getOnly<number[]>(\n\t\t\t\t\t\"EX_NVM_BRIDGE_NODEPOOL_START_far\",\n\t\t\t\t);\n\t\t\t\treturn ret ?? [];\n\t\t\t}\n\n\t\t\tcase \"sucUpdateEntries\": {\n\t\t\t\tconst ret = await this.getAll<SUCUpdateEntry>(\n\t\t\t\t\t\"EX_NVM_SUC_NODE_LIST_START_far\",\n\t\t\t\t);\n\t\t\t\treturn ret?.filter(Boolean);\n\t\t\t}\n\n\t\t\tcase \"watchdogStarted\":\n\t\t\t\treturn this.getOnly<number>(\"EEOFFSET_WATCHDOG_STARTED_far\");\n\n\t\t\tcase \"powerLevelNormal\":\n\t\t\t\treturn this.getAll<number>(\n\t\t\t\t\t\"EEOFFSET_POWERLEVEL_NORMAL_far\",\n\t\t\t\t);\n\t\t\tcase \"powerLevelLow\":\n\t\t\t\treturn this.getAll<number>(\n\t\t\t\t\t\"EEOFFSET_POWERLEVEL_LOW_far\",\n\t\t\t\t);\n\t\t\tcase \"powerMode\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EEOFFSET_MODULE_POWER_MODE_far\",\n\t\t\t\t);\n\t\t\tcase \"powerModeExtintEnable\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EEOFFSET_MODULE_POWER_MODE_EXTINT_ENABLE_far\",\n\t\t\t\t);\n\t\t\tcase \"powerModeWutTimeout\":\n\t\t\t\treturn this.getOnly<number>(\n\t\t\t\t\t\"EEOFFSET_MODULE_POWER_MODE_WUT_TIMEOUT_far\",\n\t\t\t\t);\n\n\t\t\tcase \"sucAwarenessPushNeeded\":\n\t\t\tcase \"lastNodeIdLR\":\n\t\t\tcase \"maxNodeIdLR\":\n\t\t\tcase \"reservedIdLR\":\n\t\t\tcase \"primaryLongRangeChannelId\":\n\t\t\tcase \"dcdcConfig\":\n\t\t\tcase \"lrNodeIds\":\n\t\t\tcase \"includedInsecurely\":\n\t\t\tcase \"includedSecurelyInsecureCCs\":\n\t\t\tcase \"includedSecurelySecureCCs\":\n\t\t\tcase \"rfRegion\":\n\t\t\tcase \"txPower\":\n\t\t\tcase \"measured0dBm\":\n\t\t\tcase \"enablePTI\":\n\t\t\tcase \"maxTXPower\":\n\t\t\tcase \"nodeIdType\":\n\t\t\tcase \"isListening\":\n\t\t\tcase \"optionalFunctionality\":\n\t\t\tcase \"genericDeviceClass\":\n\t\t\tcase \"specificDeviceClass\":\n\t\t\t\t// Not supported on 500 series, 700+ series only\n\t\t\t\treturn;\n\n\t\t\tdefault:\n\t\t\t\tassertNever(property.type);\n\t\t}\n\t}\n\n\tprivate async getNodeNVMProperty(\n\t\tproperty: NodeNVMProperty,\n\t): Promise<unknown> {\n\t\tswitch (property.type) {\n\t\t\tcase \"info\": {\n\t\t\t\tconst nodeId = property.nodeId;\n\t\t\t\tconst nodeInfo = await this.getSingle<NVM500NodeInfo>(\n\t\t\t\t\t\"EX_NVM_NODE_TABLE_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t);\n\t\t\t\tconst sucUpdateIndex = await this.getSingle<number>(\n\t\t\t\t\t\"EX_NVM_SUC_CONTROLLER_LIST_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t) ?? 0xff;\n\t\t\t\tconst neighbors = await this.getSingle<number[]>(\n\t\t\t\t\t\"EX_NVM_ROUTING_TABLE_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t) ?? [];\n\n\t\t\t\tif (!nodeInfo) return;\n\n\t\t\t\treturn {\n\t\t\t\t\tnodeId,\n\t\t\t\t\t...nodeInfo,\n\t\t\t\t\tneighbors,\n\t\t\t\t\tsucUpdateIndex,\n\t\t\t\t} satisfies NodeInfo;\n\t\t\t}\n\n\t\t\tcase \"routes\": {\n\t\t\t\tconst lwr = await this.getSingle<Route>(\n\t\t\t\t\t\"EX_NVM_ROUTECACHE_START_far\",\n\t\t\t\t\tproperty.nodeId - 1,\n\t\t\t\t);\n\t\t\t\tconst nlwr = await this.getSingle<Route>(\n\t\t\t\t\t\"EX_NVM_ROUTECACHE_NLWR_SR_START_far\",\n\t\t\t\t\tproperty.nodeId - 1,\n\t\t\t\t);\n\t\t\t\treturn { lwr, nlwr };\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate setOnly(\n\t\tproperty: NVMEntryName,\n\t\tvalue: NVMData,\n\t): Promise<void> {\n\t\treturn this._nvm.set(property, [value]);\n\t}\n\n\tprivate setSingle(\n\t\tproperty: NVMEntryName,\n\t\tindex: number,\n\t\tvalue: NVMData,\n\t): Promise<void> {\n\t\treturn this._nvm.setSingle(property, index, value);\n\t}\n\n\tprivate setAll(\n\t\tproperty: NVMEntryName,\n\t\tvalue: NVMData[],\n\t): Promise<void> {\n\t\treturn this._nvm.set(property, value);\n\t}\n\n\tset<T extends NVMProperty>(\n\t\tproperty: T,\n\t\tvalue: NVMPropertyToDataType<T>,\n\t): Promise<void> {\n\t\tif (property.domain === \"controller\") {\n\t\t\treturn this.setControllerNVMProperty(property, value);\n\t\t} else if (property.domain === \"lrnode\") {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`500 series NVM has no support for Long Range node information`,\n\t\t\t\tZWaveErrorCodes.NVM_ObjectNotFound,\n\t\t\t);\n\t\t} else {\n\t\t\treturn this.setNodeNVMProperty(property, value);\n\t\t}\n\t}\n\n\tprivate async setControllerNVMProperty(\n\t\tproperty: ControllerNVMProperty,\n\t\tvalue: any,\n\t): Promise<void> {\n\t\tswitch (property.type) {\n\t\t\tcase \"protocolVersion\":\n\t\t\tcase \"applicationVersion\":\n\t\t\t\t// Only written during erase\n\t\t\t\treturn;\n\n\t\t\tcase \"protocolFileFormat\":\n\t\t\tcase \"applicationFileFormat\":\n\t\t\t\t// Cannot be written\n\t\t\t\treturn;\n\n\t\t\tcase \"applicationData\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EEOFFSET_HOST_OFFSET_START_far\",\n\t\t\t\t\tvalue ?? new Bytes(NVM_SERIALAPI_HOST_SIZE).fill(0xff),\n\t\t\t\t);\n\n\t\t\tcase \"applicationName\":\n\t\t\t\t// Not supported in 500 series\n\t\t\t\treturn;\n\n\t\t\tcase \"homeId\": {\n\t\t\t\t// 500 series stores the home ID as a number\n\t\t\t\tconst homeId = value.readUInt32BE(0);\n\t\t\t\treturn this.setOnly(\"EX_NVM_HOME_ID_far\", homeId);\n\t\t\t}\n\n\t\t\tcase \"learnedHomeId\": {\n\t\t\t\t// 500 series stores the home ID as a number\n\t\t\t\tconst learnedHomeId = value?.readUInt32BE(0) ?? 0x00000000;\n\t\t\t\treturn this.setOnly(\"NVM_HOMEID_far\", learnedHomeId);\n\t\t\t}\n\n\t\t\tcase \"nodeId\":\n\t\t\t\treturn this.setOnly(\"NVM_NODEID_far\", value);\n\n\t\t\tcase \"lastNodeId\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_LAST_USED_NODE_ID_START_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\n\t\t\tcase \"staticControllerNodeId\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\tcase \"sucLastIndex\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_SUC_LAST_INDEX_START_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\tcase \"controllerConfiguration\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_CONTROLLER_CONFIGURATION_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\n\t\t\tcase \"maxNodeId\":\n\t\t\t\treturn this.setOnly(\"EX_NVM_MAX_NODE_ID_far\", value);\n\t\t\tcase \"reservedId\":\n\t\t\t\treturn this.setOnly(\"EX_NVM_RESERVED_ID_far\", value);\n\t\t\tcase \"systemState\":\n\t\t\t\treturn this.setOnly(\"NVM_SYSTEM_STATE\", value);\n\n\t\t\tcase \"commandClasses\": {\n\t\t\t\tawait this.setOnly(\n\t\t\t\t\t\"EEOFFSET_CMDCLASS_LEN_far\",\n\t\t\t\t\tvalue.length,\n\t\t\t\t);\n\t\t\t\tconst CCs = new Array(APPL_NODEPARM_MAX).fill(0xff);\n\t\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\t\tif (i < APPL_NODEPARM_MAX) {\n\t\t\t\t\t\tCCs[i] = value[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tawait this.setAll(\n\t\t\t\t\t\"EEOFFSET_CMDCLASS_far\",\n\t\t\t\t\tCCs,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcase \"preferredRepeaters\":\n\t\t\t\treturn this.setOnly(\"NVM_PREFERRED_REPEATERS_far\", value);\n\n\t\t\tcase \"appRouteLock\": {\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_ROUTECACHE_APP_LOCK_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase \"routeSlaveSUC\": {\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase \"sucPendingUpdate\": {\n\t\t\t\treturn this.setOnly(\"EX_NVM_PENDING_UPDATE_far\", value);\n\t\t\t}\n\t\t\tcase \"pendingDiscovery\": {\n\t\t\t\treturn this.setOnly(\"NVM_PENDING_DISCOVERY_far\", value);\n\t\t\t}\n\n\t\t\tcase \"nodeIds\":\n\t\t\t\t// Cannot be written. Is implied by the node info table\n\t\t\t\treturn;\n\n\t\t\tcase \"virtualNodeIds\": {\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EX_NVM_BRIDGE_NODEPOOL_START_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase \"sucUpdateEntries\": {\n\t\t\t\tconst entries = value as SUCUpdateEntry[];\n\t\t\t\tconst sucUpdateEntries = new Array(SUC_MAX_UPDATES).fill(\n\t\t\t\t\tundefined,\n\t\t\t\t);\n\t\t\t\tfor (let i = 0; i < entries.length; i++) {\n\t\t\t\t\tif (i < SUC_MAX_UPDATES) {\n\t\t\t\t\t\tsucUpdateEntries[i] = entries[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.setAll(\n\t\t\t\t\t\"EX_NVM_SUC_NODE_LIST_START_far\",\n\t\t\t\t\tsucUpdateEntries,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase \"watchdogStarted\":\n\t\t\t\treturn this.setOnly(\"EEOFFSET_WATCHDOG_STARTED_far\", value);\n\n\t\t\tcase \"powerLevelNormal\":\n\t\t\t\treturn this.setAll(\n\t\t\t\t\t\"EEOFFSET_POWERLEVEL_NORMAL_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\tcase \"powerLevelLow\":\n\t\t\t\treturn this.setAll(\n\t\t\t\t\t\"EEOFFSET_POWERLEVEL_LOW_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\tcase \"powerMode\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EEOFFSET_MODULE_POWER_MODE_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\tcase \"powerModeExtintEnable\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EEOFFSET_MODULE_POWER_MODE_EXTINT_ENABLE_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\tcase \"powerModeWutTimeout\":\n\t\t\t\treturn this.setOnly(\n\t\t\t\t\t\"EEOFFSET_MODULE_POWER_MODE_WUT_TIMEOUT_far\",\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\n\t\t\tcase \"sucAwarenessPushNeeded\":\n\t\t\tcase \"lastNodeIdLR\":\n\t\t\tcase \"maxNodeIdLR\":\n\t\t\tcase \"reservedIdLR\":\n\t\t\tcase \"primaryLongRangeChannelId\":\n\t\t\tcase \"dcdcConfig\":\n\t\t\tcase \"lrNodeIds\":\n\t\t\tcase \"includedInsecurely\":\n\t\t\tcase \"includedSecurelyInsecureCCs\":\n\t\t\tcase \"includedSecurelySecureCCs\":\n\t\t\tcase \"rfRegion\":\n\t\t\tcase \"txPower\":\n\t\t\tcase \"measured0dBm\":\n\t\t\tcase \"enablePTI\":\n\t\t\tcase \"maxTXPower\":\n\t\t\tcase \"nodeIdType\":\n\t\t\tcase \"isListening\":\n\t\t\tcase \"optionalFunctionality\":\n\t\t\tcase \"genericDeviceClass\":\n\t\t\tcase \"specificDeviceClass\":\n\t\t\t\t// Not supported on 500 series, 700+ series only\n\t\t\t\treturn;\n\n\t\t\tdefault:\n\t\t\t\tassertNever(property.type);\n\t\t}\n\t}\n\n\tprivate async setNodeNVMProperty(\n\t\tproperty: NodeNVMProperty,\n\t\tvalue: any,\n\t): Promise<void> {\n\t\tswitch (property.type) {\n\t\t\tcase \"info\": {\n\t\t\t\tconst nodeId = property.nodeId;\n\t\t\t\tconst node = value as NodeInfo;\n\t\t\t\tawait this.setSingle(\n\t\t\t\t\t\"EX_NVM_NODE_TABLE_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t\tnode\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\tisListening: node.isListening,\n\t\t\t\t\t\t\tisFrequentListening: node.isFrequentListening,\n\t\t\t\t\t\t\tisRouting: node.isRouting,\n\t\t\t\t\t\t\tsupportedDataRates: node.supportedDataRates,\n\t\t\t\t\t\t\tprotocolVersion: node.protocolVersion,\n\t\t\t\t\t\t\toptionalFunctionality: node.optionalFunctionality,\n\t\t\t\t\t\t\tnodeType: node.nodeType,\n\t\t\t\t\t\t\tsupportsSecurity: node.supportsSecurity,\n\t\t\t\t\t\t\tsupportsBeaming: node.supportsBeaming,\n\t\t\t\t\t\t\tgenericDeviceClass: node.genericDeviceClass,\n\t\t\t\t\t\t\tspecificDeviceClass: node.specificDeviceClass\n\t\t\t\t\t\t\t\t?? null,\n\t\t\t\t\t\t} satisfies NVM500NodeInfo\n\t\t\t\t\t\t: undefined,\n\t\t\t\t);\n\t\t\t\tawait this.setSingle(\n\t\t\t\t\t\"EX_NVM_SUC_CONTROLLER_LIST_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t\tnode?.sucUpdateIndex ?? 0xfe,\n\t\t\t\t);\n\t\t\t\tawait this.setSingle(\n\t\t\t\t\t\"EX_NVM_ROUTING_TABLE_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t\tnode?.neighbors,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase \"routes\": {\n\t\t\t\tconst nodeId = property.nodeId;\n\t\t\t\tconst routes = value as { lwr?: Route; nlwr?: Route };\n\t\t\t\tawait this.setSingle(\n\t\t\t\t\t\"EX_NVM_ROUTECACHE_START_far\",\n\t\t\t\t\tnodeId - 1,\n\t\t\t\t\troutes.lwr,\n\t\t\t\t);\n\t\t\t\tawait this.setSingle(\n\t\t\t\t\t\"EX_NVM_ROUTECACHE_NLWR_SR_START_far\",\n\t\t\t\t\tproperty.nodeId - 1,\n\t\t\t\t\troutes.nlwr,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/require-await\n\tpublic async delete(_property: NVMProperty): Promise<void> {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic hasPendingChanges(): boolean {\n\t\t// We don't buffer changes\n\t\treturn false;\n\t}\n\n\tpublic async commit(): Promise<void> {\n\t\t// We don't buffer changes at the moment\n\t}\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["import_shared", "info"]
7
7
  }
@@ -1,3 +1,3 @@
1
- import type { NVM500Impl } from "../shared.js";
1
+ import { type NVM500Impl } from "../shared.js";
2
2
  export declare const Bridge_6_6x: NVM500Impl;
3
3
  //# sourceMappingURL=Bridge_6_6x.d.ts.map
@@ -21,7 +21,7 @@ __export(Bridge_6_6x_exports, {
21
21
  Bridge_6_6x: () => Bridge_6_6x
22
22
  });
23
23
  module.exports = __toCommonJS(Bridge_6_6x_exports);
24
- var import_safe = require("@zwave-js/core/safe");
24
+ var import_core = require("@zwave-js/core");
25
25
  var import_consts = require("../../../consts.js");
26
26
  var import_shared = require("../shared.js");
27
27
  const NVM_Layout_Bridge_6_6x = [
@@ -46,13 +46,13 @@ const NVM_Layout_Bridge_6_6x = [
46
46
  {
47
47
  name: "NVM_PREFERRED_REPEATERS_far",
48
48
  type: import_shared.NVMEntryType.NodeMask,
49
- size: import_safe.NUM_NODEMASK_BYTES + 3,
49
+ size: import_core.NUM_NODEMASK_BYTES + 3,
50
50
  count: 1
51
51
  },
52
52
  {
53
53
  name: "NVM_PENDING_DISCOVERY_far",
54
54
  type: import_shared.NVMEntryType.NodeMask,
55
- size: import_safe.NUM_NODEMASK_BYTES + 3,
55
+ size: import_core.NUM_NODEMASK_BYTES + 3,
56
56
  count: 1
57
57
  },
58
58
  {
@@ -63,12 +63,12 @@ const NVM_Layout_Bridge_6_6x = [
63
63
  {
64
64
  name: "EX_NVM_NODE_TABLE_START_far",
65
65
  type: import_shared.NVMEntryType.NodeInfo,
66
- count: import_safe.MAX_NODES
66
+ count: import_core.MAX_NODES
67
67
  },
68
68
  {
69
69
  name: "EX_NVM_ROUTING_TABLE_START_far",
70
70
  type: import_shared.NVMEntryType.NodeMask,
71
- count: import_safe.MAX_NODES
71
+ count: import_core.MAX_NODES
72
72
  },
73
73
  {
74
74
  name: "EX_NVM_LAST_USED_NODE_ID_START_far",
@@ -126,12 +126,12 @@ const NVM_Layout_Bridge_6_6x = [
126
126
  {
127
127
  name: "EX_NVM_ROUTECACHE_START_far",
128
128
  type: import_shared.NVMEntryType.Route,
129
- count: import_safe.MAX_NODES
129
+ count: import_core.MAX_NODES
130
130
  },
131
131
  {
132
132
  name: "EX_NVM_ROUTECACHE_NLWR_SR_START_far",
133
133
  type: import_shared.NVMEntryType.Route,
134
- count: import_safe.MAX_NODES
134
+ count: import_core.MAX_NODES
135
135
  },
136
136
  { name: "EX_NVM_ROUTECACHE_MAGIC_far", type: import_shared.NVMEntryType.Byte, count: 1 },
137
137
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/nvm500/impls/Bridge_6_6x.ts"],
4
- "sourcesContent": ["import { MAX_NODES, NUM_NODEMASK_BYTES } from \"@zwave-js/core/safe\";\nimport { SUC_MAX_UPDATES } from \"../../../consts.js\";\nimport type { NVM500Impl } from \"../shared.js\";\nimport {\n\tAPPL_NODEPARM_MAX,\n\tNVMEntryType,\n\ttype NVMLayout,\n\tNVM_SERIALAPI_HOST_SIZE,\n\tRTC_TIMER_SIZE,\n\tSUC_CONTROLLER_LIST_SIZE,\n\tTOTAL_RTC_TIMER_MAX,\n} from \"../shared.js\";\n\nconst NVM_Layout_Bridge_6_6x: NVMLayout = [\n\t{ name: \"nvmTotalEnd\", type: NVMEntryType.Word, count: 1 },\n\t{ name: \"nvmZWlibrarySize\", type: NVMEntryType.NVMModuleSize, count: 1 },\n\t{ name: \"NVM_INTERNAL_RESERVED_1_far\", type: NVMEntryType.Byte, count: 4 },\n\t{\n\t\tname: \"EX_NVM_HOME_ID_far\",\n\t\ttype: NVMEntryType.DWord,\n\t\tcount: 1,\n\t},\n\t{ name: \"NVM_INTERNAL_RESERVED_2_far\", type: NVMEntryType.Byte, count: 4 },\n\t{ name: \"NVM_HOMEID_far\", type: NVMEntryType.DWord, count: 1 },\n\t{ name: \"NVM_NODEID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{ name: \"NVM_CONFIGURATION_VALID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"NVM_CONFIGURATION_REALLYVALID_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{ name: \"NVM_INTERNAL_RESERVED_3_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"NVM_PREFERRED_REPEATERS_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tsize: NUM_NODEMASK_BYTES + 3,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"NVM_PENDING_DISCOVERY_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tsize: NUM_NODEMASK_BYTES + 3,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"NVM_RTC_TIMERS_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: TOTAL_RTC_TIMER_MAX * RTC_TIMER_SIZE,\n\t},\n\t{\n\t\tname: \"EX_NVM_NODE_TABLE_START_far\",\n\t\ttype: NVMEntryType.NodeInfo,\n\t\tcount: MAX_NODES,\n\t},\n\t{\n\t\tname: \"EX_NVM_ROUTING_TABLE_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: MAX_NODES,\n\t},\n\t{\n\t\tname: \"EX_NVM_LAST_USED_NODE_ID_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_PENDING_UPDATE_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{ name: \"EX_NVM_SUC_ACTIVE_START_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EX_NVM_SUC_NODE_LIST_START_far\",\n\t\ttype: NVMEntryType.SUCUpdateEntry,\n\t\tcount: SUC_MAX_UPDATES,\n\t},\n\t{\n\t\tname: \"EX_NVM_SUC_CONTROLLER_LIST_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: SUC_CONTROLLER_LIST_SIZE,\n\t},\n\t{\n\t\tname: \"EX_NVM_SUC_LAST_INDEX_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_ZENSOR_TABLE_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_BRIDGE_NODEPOOL_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_CONTROLLER_CONFIGURATION_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{ name: \"EX_NVM_MAX_NODE_ID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{ name: \"EX_NVM_RESERVED_ID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EX_NVM_ROUTECACHE_START_far\",\n\t\ttype: NVMEntryType.Route,\n\t\tcount: MAX_NODES,\n\t},\n\t{\n\t\tname: \"EX_NVM_ROUTECACHE_NLWR_SR_START_far\",\n\t\ttype: NVMEntryType.Route,\n\t\tcount: MAX_NODES,\n\t},\n\t{ name: \"EX_NVM_ROUTECACHE_MAGIC_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EX_NVM_ROUTECACHE_APP_LOCK_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmZWlibraryDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmApplicationSize\",\n\t\ttype: NVMEntryType.NVMModuleSize,\n\t\t// The Bridge API saves an additional node mask for the virtual nodes in the\n\t\t// previous module, so we can use this offset to distinguish between the two.\n\t\toffset: 0x2fde,\n\t\tcount: 1,\n\t},\n\t{ name: \"EEOFFSET_MAGIC_far\", type: NVMEntryType.Byte, count: 1 },\n\t{ name: \"EEOFFSET_CMDCLASS_LEN_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EEOFFSET_CMDCLASS_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: APPL_NODEPARM_MAX,\n\t},\n\t{\n\t\tname: \"EEOFFSET_WATCHDOG_STARTED_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmApplicationDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmHostApplicationSize\",\n\t\ttype: NVMEntryType.NVMModuleSize,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EEOFFSET_HOST_OFFSET_START_far\",\n\t\ttype: NVMEntryType.Buffer,\n\t\tsize: NVM_SERIALAPI_HOST_SIZE,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmHostApplicationDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{ name: \"nvmDescriptorSize\", type: NVMEntryType.NVMModuleSize, count: 1 },\n\t{ name: \"nvmDescriptor\", type: NVMEntryType.NVMDescriptor, count: 1 },\n\t{\n\t\tname: \"nvmDescriptorDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{ name: \"nvmModuleSizeEndMarker\", type: NVMEntryType.Word, count: 1 },\n];\n\nexport const Bridge_6_6x: NVM500Impl = {\n\tname: \"Bridge 6.6x\",\n\tlibrary: \"bridge\",\n\tprotocolVersions: [\"4.33\", \"4.62\"],\n\tlayout: NVM_Layout_Bridge_6_6x,\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { MAX_NODES, NUM_NODEMASK_BYTES } from \"@zwave-js/core\";\nimport { SUC_MAX_UPDATES } from \"../../../consts.js\";\nimport {\n\tAPPL_NODEPARM_MAX,\n\ttype NVM500Impl,\n\tNVMEntryType,\n\ttype NVMLayout,\n\tNVM_SERIALAPI_HOST_SIZE,\n\tRTC_TIMER_SIZE,\n\tSUC_CONTROLLER_LIST_SIZE,\n\tTOTAL_RTC_TIMER_MAX,\n} from \"../shared.js\";\n\nconst NVM_Layout_Bridge_6_6x: NVMLayout = [\n\t{ name: \"nvmTotalEnd\", type: NVMEntryType.Word, count: 1 },\n\t{ name: \"nvmZWlibrarySize\", type: NVMEntryType.NVMModuleSize, count: 1 },\n\t{ name: \"NVM_INTERNAL_RESERVED_1_far\", type: NVMEntryType.Byte, count: 4 },\n\t{\n\t\tname: \"EX_NVM_HOME_ID_far\",\n\t\ttype: NVMEntryType.DWord,\n\t\tcount: 1,\n\t},\n\t{ name: \"NVM_INTERNAL_RESERVED_2_far\", type: NVMEntryType.Byte, count: 4 },\n\t{ name: \"NVM_HOMEID_far\", type: NVMEntryType.DWord, count: 1 },\n\t{ name: \"NVM_NODEID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{ name: \"NVM_CONFIGURATION_VALID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"NVM_CONFIGURATION_REALLYVALID_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{ name: \"NVM_INTERNAL_RESERVED_3_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"NVM_PREFERRED_REPEATERS_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tsize: NUM_NODEMASK_BYTES + 3,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"NVM_PENDING_DISCOVERY_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tsize: NUM_NODEMASK_BYTES + 3,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"NVM_RTC_TIMERS_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: TOTAL_RTC_TIMER_MAX * RTC_TIMER_SIZE,\n\t},\n\t{\n\t\tname: \"EX_NVM_NODE_TABLE_START_far\",\n\t\ttype: NVMEntryType.NodeInfo,\n\t\tcount: MAX_NODES,\n\t},\n\t{\n\t\tname: \"EX_NVM_ROUTING_TABLE_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: MAX_NODES,\n\t},\n\t{\n\t\tname: \"EX_NVM_LAST_USED_NODE_ID_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_PENDING_UPDATE_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{ name: \"EX_NVM_SUC_ACTIVE_START_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EX_NVM_SUC_NODE_LIST_START_far\",\n\t\ttype: NVMEntryType.SUCUpdateEntry,\n\t\tcount: SUC_MAX_UPDATES,\n\t},\n\t{\n\t\tname: \"EX_NVM_SUC_CONTROLLER_LIST_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: SUC_CONTROLLER_LIST_SIZE,\n\t},\n\t{\n\t\tname: \"EX_NVM_SUC_LAST_INDEX_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_ZENSOR_TABLE_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_BRIDGE_NODEPOOL_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_CONTROLLER_CONFIGURATION_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{ name: \"EX_NVM_MAX_NODE_ID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{ name: \"EX_NVM_RESERVED_ID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EX_NVM_ROUTECACHE_START_far\",\n\t\ttype: NVMEntryType.Route,\n\t\tcount: MAX_NODES,\n\t},\n\t{\n\t\tname: \"EX_NVM_ROUTECACHE_NLWR_SR_START_far\",\n\t\ttype: NVMEntryType.Route,\n\t\tcount: MAX_NODES,\n\t},\n\t{ name: \"EX_NVM_ROUTECACHE_MAGIC_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EX_NVM_ROUTECACHE_APP_LOCK_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmZWlibraryDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmApplicationSize\",\n\t\ttype: NVMEntryType.NVMModuleSize,\n\t\t// The Bridge API saves an additional node mask for the virtual nodes in the\n\t\t// previous module, so we can use this offset to distinguish between the two.\n\t\toffset: 0x2fde,\n\t\tcount: 1,\n\t},\n\t{ name: \"EEOFFSET_MAGIC_far\", type: NVMEntryType.Byte, count: 1 },\n\t{ name: \"EEOFFSET_CMDCLASS_LEN_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EEOFFSET_CMDCLASS_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: APPL_NODEPARM_MAX,\n\t},\n\t{\n\t\tname: \"EEOFFSET_WATCHDOG_STARTED_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmApplicationDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmHostApplicationSize\",\n\t\ttype: NVMEntryType.NVMModuleSize,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EEOFFSET_HOST_OFFSET_START_far\",\n\t\ttype: NVMEntryType.Buffer,\n\t\tsize: NVM_SERIALAPI_HOST_SIZE,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmHostApplicationDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{ name: \"nvmDescriptorSize\", type: NVMEntryType.NVMModuleSize, count: 1 },\n\t{ name: \"nvmDescriptor\", type: NVMEntryType.NVMDescriptor, count: 1 },\n\t{\n\t\tname: \"nvmDescriptorDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{ name: \"nvmModuleSizeEndMarker\", type: NVMEntryType.Word, count: 1 },\n];\n\nexport const Bridge_6_6x: NVM500Impl = {\n\tname: \"Bridge 6.6x\",\n\tlibrary: \"bridge\",\n\tprotocolVersions: [\"4.33\", \"4.62\"],\n\tlayout: NVM_Layout_Bridge_6_6x,\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,3 @@
1
- import type { NVM500Impl } from "../shared.js";
1
+ import { type NVM500Impl } from "../shared.js";
2
2
  export declare const Bridge_6_7x: NVM500Impl;
3
3
  //# sourceMappingURL=Bridge_6_7x.d.ts.map
@@ -21,7 +21,7 @@ __export(Bridge_6_7x_exports, {
21
21
  Bridge_6_7x: () => Bridge_6_7x
22
22
  });
23
23
  module.exports = __toCommonJS(Bridge_6_7x_exports);
24
- var import_safe = require("@zwave-js/core/safe");
24
+ var import_core = require("@zwave-js/core");
25
25
  var import_consts = require("../../../consts.js");
26
26
  var import_shared = require("../shared.js");
27
27
  const NVM_Layout_Bridge_6_7x = [
@@ -46,13 +46,13 @@ const NVM_Layout_Bridge_6_7x = [
46
46
  {
47
47
  name: "NVM_PREFERRED_REPEATERS_far",
48
48
  type: import_shared.NVMEntryType.NodeMask,
49
- size: import_safe.NUM_NODEMASK_BYTES + 3,
49
+ size: import_core.NUM_NODEMASK_BYTES + 3,
50
50
  count: 1
51
51
  },
52
52
  {
53
53
  name: "NVM_PENDING_DISCOVERY_far",
54
54
  type: import_shared.NVMEntryType.NodeMask,
55
- size: import_safe.NUM_NODEMASK_BYTES + 3,
55
+ size: import_core.NUM_NODEMASK_BYTES + 3,
56
56
  count: 1
57
57
  },
58
58
  {
@@ -63,12 +63,12 @@ const NVM_Layout_Bridge_6_7x = [
63
63
  {
64
64
  name: "EX_NVM_NODE_TABLE_START_far",
65
65
  type: import_shared.NVMEntryType.NodeInfo,
66
- count: import_safe.MAX_NODES
66
+ count: import_core.MAX_NODES
67
67
  },
68
68
  {
69
69
  name: "EX_NVM_ROUTING_TABLE_START_far",
70
70
  type: import_shared.NVMEntryType.NodeMask,
71
- count: import_safe.MAX_NODES
71
+ count: import_core.MAX_NODES
72
72
  },
73
73
  {
74
74
  name: "EX_NVM_LAST_USED_NODE_ID_START_far",
@@ -126,12 +126,12 @@ const NVM_Layout_Bridge_6_7x = [
126
126
  {
127
127
  name: "EX_NVM_ROUTECACHE_START_far",
128
128
  type: import_shared.NVMEntryType.Route,
129
- count: import_safe.MAX_NODES
129
+ count: import_core.MAX_NODES
130
130
  },
131
131
  {
132
132
  name: "EX_NVM_ROUTECACHE_NLWR_SR_START_far",
133
133
  type: import_shared.NVMEntryType.Route,
134
- count: import_safe.MAX_NODES
134
+ count: import_core.MAX_NODES
135
135
  },
136
136
  { name: "EX_NVM_ROUTECACHE_MAGIC_far", type: import_shared.NVMEntryType.Byte, count: 1 },
137
137
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/nvm500/impls/Bridge_6_7x.ts"],
4
- "sourcesContent": ["import { MAX_NODES, NUM_NODEMASK_BYTES } from \"@zwave-js/core/safe\";\nimport { SUC_MAX_UPDATES } from \"../../../consts.js\";\nimport type { NVM500Impl } from \"../shared.js\";\nimport {\n\tAPPL_NODEPARM_MAX,\n\tNVMEntryType,\n\ttype NVMLayout,\n\tNVM_SERIALAPI_HOST_SIZE,\n\tPOWERLEVEL_CHANNELS,\n\tRTC_TIMER_SIZE,\n\tSUC_CONTROLLER_LIST_SIZE,\n\tTOTAL_RTC_TIMER_MAX,\n} from \"../shared.js\";\n\nconst NVM_Layout_Bridge_6_7x: NVMLayout = [\n\t{ name: \"nvmTotalEnd\", type: NVMEntryType.Word, count: 1 },\n\t{ name: \"nvmZWlibrarySize\", type: NVMEntryType.NVMModuleSize, count: 1 },\n\t{ name: \"NVM_INTERNAL_RESERVED_1_far\", type: NVMEntryType.Byte, count: 4 },\n\t{\n\t\tname: \"EX_NVM_HOME_ID_far\",\n\t\ttype: NVMEntryType.DWord,\n\t\tcount: 1,\n\t},\n\t{ name: \"NVM_INTERNAL_RESERVED_2_far\", type: NVMEntryType.Byte, count: 4 },\n\t{ name: \"NVM_HOMEID_far\", type: NVMEntryType.DWord, count: 1 },\n\t{ name: \"NVM_NODEID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{ name: \"NVM_CONFIGURATION_VALID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"NVM_CONFIGURATION_REALLYVALID_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{ name: \"NVM_INTERNAL_RESERVED_3_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"NVM_PREFERRED_REPEATERS_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tsize: NUM_NODEMASK_BYTES + 3,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"NVM_PENDING_DISCOVERY_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tsize: NUM_NODEMASK_BYTES + 3,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"NVM_RTC_TIMERS_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: TOTAL_RTC_TIMER_MAX * RTC_TIMER_SIZE,\n\t},\n\t{\n\t\tname: \"EX_NVM_NODE_TABLE_START_far\",\n\t\ttype: NVMEntryType.NodeInfo,\n\t\tcount: MAX_NODES,\n\t},\n\t{\n\t\tname: \"EX_NVM_ROUTING_TABLE_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: MAX_NODES,\n\t},\n\t{\n\t\tname: \"EX_NVM_LAST_USED_NODE_ID_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_PENDING_UPDATE_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{ name: \"EX_NVM_SUC_ACTIVE_START_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EX_NVM_SUC_NODE_LIST_START_far\",\n\t\ttype: NVMEntryType.SUCUpdateEntry,\n\t\tcount: SUC_MAX_UPDATES,\n\t},\n\t{\n\t\tname: \"EX_NVM_SUC_CONTROLLER_LIST_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: SUC_CONTROLLER_LIST_SIZE,\n\t},\n\t{\n\t\tname: \"EX_NVM_SUC_LAST_INDEX_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_ZENSOR_TABLE_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_BRIDGE_NODEPOOL_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_CONTROLLER_CONFIGURATION_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{ name: \"EX_NVM_MAX_NODE_ID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{ name: \"EX_NVM_RESERVED_ID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EX_NVM_ROUTECACHE_START_far\",\n\t\ttype: NVMEntryType.Route,\n\t\tcount: MAX_NODES,\n\t},\n\t{\n\t\tname: \"EX_NVM_ROUTECACHE_NLWR_SR_START_far\",\n\t\ttype: NVMEntryType.Route,\n\t\tcount: MAX_NODES,\n\t},\n\t{ name: \"EX_NVM_ROUTECACHE_MAGIC_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EX_NVM_ROUTECACHE_APP_LOCK_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"NVM_SECURITY0_KEY_far\",\n\t\ttype: NVMEntryType.Buffer,\n\t\tsize: 16,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmZWlibraryDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmApplicationSize\",\n\t\ttype: NVMEntryType.NVMModuleSize,\n\t\t// The Bridge API saves an additional node mask for the virtual nodes in the\n\t\t// previous module, so we can use this offset to distinguish between the two.\n\t\toffset: 0x2fee,\n\t\tcount: 1,\n\t},\n\t{ name: \"EEOFFSET_MAGIC_far\", type: NVMEntryType.Byte, count: 1 },\n\t{ name: \"EEOFFSET_CMDCLASS_LEN_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EEOFFSET_CMDCLASS_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: APPL_NODEPARM_MAX,\n\t},\n\t{\n\t\tname: \"EEOFFSET_WATCHDOG_STARTED_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EEOFFSET_POWERLEVEL_NORMAL_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: POWERLEVEL_CHANNELS,\n\t},\n\t{\n\t\tname: \"EEOFFSET_POWERLEVEL_LOW_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: POWERLEVEL_CHANNELS,\n\t},\n\t{\n\t\tname: \"nvmApplicationDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmHostApplicationSize\",\n\t\ttype: NVMEntryType.NVMModuleSize,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EEOFFSET_HOST_OFFSET_START_far\",\n\t\ttype: NVMEntryType.Buffer,\n\t\tsize: NVM_SERIALAPI_HOST_SIZE,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmHostApplicationDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{ name: \"nvmDescriptorSize\", type: NVMEntryType.NVMModuleSize, count: 1 },\n\t{ name: \"nvmDescriptor\", type: NVMEntryType.NVMDescriptor, count: 1 },\n\t{\n\t\tname: \"nvmDescriptorDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{ name: \"nvmModuleSizeEndMarker\", type: NVMEntryType.Word, count: 1 },\n];\n\nexport const Bridge_6_7x: NVM500Impl = {\n\tname: \"Bridge 6.7x\",\n\tlibrary: \"bridge\",\n\tprotocolVersions: [\n\t\t\"4.60\",\n\t\t\"4.61\",\n\t\t\"5.02\",\n\t\t\"5.03\",\n\t\t// Technically the following is a 6.8x SDK, but according to\n\t\t// https://github.com/zwave-js/zwave-js/issues/7385, it still uses\n\t\t// a 6.7x NVM layout\n\t\t\"6.01\",\n\t],\n\tlayout: NVM_Layout_Bridge_6_7x,\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { MAX_NODES, NUM_NODEMASK_BYTES } from \"@zwave-js/core\";\nimport { SUC_MAX_UPDATES } from \"../../../consts.js\";\nimport {\n\tAPPL_NODEPARM_MAX,\n\ttype NVM500Impl,\n\tNVMEntryType,\n\ttype NVMLayout,\n\tNVM_SERIALAPI_HOST_SIZE,\n\tPOWERLEVEL_CHANNELS,\n\tRTC_TIMER_SIZE,\n\tSUC_CONTROLLER_LIST_SIZE,\n\tTOTAL_RTC_TIMER_MAX,\n} from \"../shared.js\";\n\nconst NVM_Layout_Bridge_6_7x: NVMLayout = [\n\t{ name: \"nvmTotalEnd\", type: NVMEntryType.Word, count: 1 },\n\t{ name: \"nvmZWlibrarySize\", type: NVMEntryType.NVMModuleSize, count: 1 },\n\t{ name: \"NVM_INTERNAL_RESERVED_1_far\", type: NVMEntryType.Byte, count: 4 },\n\t{\n\t\tname: \"EX_NVM_HOME_ID_far\",\n\t\ttype: NVMEntryType.DWord,\n\t\tcount: 1,\n\t},\n\t{ name: \"NVM_INTERNAL_RESERVED_2_far\", type: NVMEntryType.Byte, count: 4 },\n\t{ name: \"NVM_HOMEID_far\", type: NVMEntryType.DWord, count: 1 },\n\t{ name: \"NVM_NODEID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{ name: \"NVM_CONFIGURATION_VALID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"NVM_CONFIGURATION_REALLYVALID_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{ name: \"NVM_INTERNAL_RESERVED_3_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"NVM_PREFERRED_REPEATERS_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tsize: NUM_NODEMASK_BYTES + 3,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"NVM_PENDING_DISCOVERY_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tsize: NUM_NODEMASK_BYTES + 3,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"NVM_RTC_TIMERS_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: TOTAL_RTC_TIMER_MAX * RTC_TIMER_SIZE,\n\t},\n\t{\n\t\tname: \"EX_NVM_NODE_TABLE_START_far\",\n\t\ttype: NVMEntryType.NodeInfo,\n\t\tcount: MAX_NODES,\n\t},\n\t{\n\t\tname: \"EX_NVM_ROUTING_TABLE_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: MAX_NODES,\n\t},\n\t{\n\t\tname: \"EX_NVM_LAST_USED_NODE_ID_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_PENDING_UPDATE_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{ name: \"EX_NVM_SUC_ACTIVE_START_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EX_NVM_SUC_NODE_LIST_START_far\",\n\t\ttype: NVMEntryType.SUCUpdateEntry,\n\t\tcount: SUC_MAX_UPDATES,\n\t},\n\t{\n\t\tname: \"EX_NVM_SUC_CONTROLLER_LIST_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: SUC_CONTROLLER_LIST_SIZE,\n\t},\n\t{\n\t\tname: \"EX_NVM_SUC_LAST_INDEX_START_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_ZENSOR_TABLE_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_BRIDGE_NODEPOOL_START_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EX_NVM_CONTROLLER_CONFIGURATION_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{ name: \"EX_NVM_MAX_NODE_ID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{ name: \"EX_NVM_RESERVED_ID_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EX_NVM_ROUTECACHE_START_far\",\n\t\ttype: NVMEntryType.Route,\n\t\tcount: MAX_NODES,\n\t},\n\t{\n\t\tname: \"EX_NVM_ROUTECACHE_NLWR_SR_START_far\",\n\t\ttype: NVMEntryType.Route,\n\t\tcount: MAX_NODES,\n\t},\n\t{ name: \"EX_NVM_ROUTECACHE_MAGIC_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EX_NVM_ROUTECACHE_APP_LOCK_far\",\n\t\ttype: NVMEntryType.NodeMask,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"NVM_SECURITY0_KEY_far\",\n\t\ttype: NVMEntryType.Buffer,\n\t\tsize: 16,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmZWlibraryDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmApplicationSize\",\n\t\ttype: NVMEntryType.NVMModuleSize,\n\t\t// The Bridge API saves an additional node mask for the virtual nodes in the\n\t\t// previous module, so we can use this offset to distinguish between the two.\n\t\toffset: 0x2fee,\n\t\tcount: 1,\n\t},\n\t{ name: \"EEOFFSET_MAGIC_far\", type: NVMEntryType.Byte, count: 1 },\n\t{ name: \"EEOFFSET_CMDCLASS_LEN_far\", type: NVMEntryType.Byte, count: 1 },\n\t{\n\t\tname: \"EEOFFSET_CMDCLASS_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: APPL_NODEPARM_MAX,\n\t},\n\t{\n\t\tname: \"EEOFFSET_WATCHDOG_STARTED_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EEOFFSET_POWERLEVEL_NORMAL_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: POWERLEVEL_CHANNELS,\n\t},\n\t{\n\t\tname: \"EEOFFSET_POWERLEVEL_LOW_far\",\n\t\ttype: NVMEntryType.Byte,\n\t\tcount: POWERLEVEL_CHANNELS,\n\t},\n\t{\n\t\tname: \"nvmApplicationDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmHostApplicationSize\",\n\t\ttype: NVMEntryType.NVMModuleSize,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"EEOFFSET_HOST_OFFSET_START_far\",\n\t\ttype: NVMEntryType.Buffer,\n\t\tsize: NVM_SERIALAPI_HOST_SIZE,\n\t\tcount: 1,\n\t},\n\t{\n\t\tname: \"nvmHostApplicationDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{ name: \"nvmDescriptorSize\", type: NVMEntryType.NVMModuleSize, count: 1 },\n\t{ name: \"nvmDescriptor\", type: NVMEntryType.NVMDescriptor, count: 1 },\n\t{\n\t\tname: \"nvmDescriptorDescriptor\",\n\t\ttype: NVMEntryType.NVMModuleDescriptor,\n\t\tcount: 1,\n\t},\n\t{ name: \"nvmModuleSizeEndMarker\", type: NVMEntryType.Word, count: 1 },\n];\n\nexport const Bridge_6_7x: NVM500Impl = {\n\tname: \"Bridge 6.7x\",\n\tlibrary: \"bridge\",\n\tprotocolVersions: [\n\t\t\"4.60\",\n\t\t\"4.61\",\n\t\t\"5.02\",\n\t\t\"5.03\",\n\t\t// Technically the following is a 6.8x SDK, but according to\n\t\t// https://github.com/zwave-js/zwave-js/issues/7385, it still uses\n\t\t// a 6.7x NVM layout\n\t\t\"6.01\",\n\t],\n\tlayout: NVM_Layout_Bridge_6_7x,\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,3 @@
1
- import type { NVM500Impl } from "../shared.js";
1
+ import { type NVM500Impl } from "../shared.js";
2
2
  export declare const Bridge_6_8x: NVM500Impl;
3
3
  //# sourceMappingURL=Bridge_6_8x.d.ts.map