zwave-js 14.1.0 → 14.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/build/cjs/Driver.d.ts +1 -1
  2. package/build/cjs/Driver.js.map +1 -1
  3. package/build/cjs/lib/_version.d.ts +1 -1
  4. package/build/cjs/lib/_version.js +1 -1
  5. package/build/cjs/lib/_version.js.map +1 -1
  6. package/build/cjs/lib/controller/MockControllerBehaviors.js +2 -2
  7. package/build/cjs/lib/controller/MockControllerBehaviors.js.map +2 -2
  8. package/build/cjs/lib/driver/Driver.d.ts +1 -1
  9. package/build/cjs/lib/driver/Driver.js +9 -8
  10. package/build/cjs/lib/driver/Driver.js.map +2 -2
  11. package/build/cjs/lib/driver/MessageGenerators.js +4 -4
  12. package/build/cjs/lib/driver/MessageGenerators.js.map +2 -2
  13. package/build/cjs/lib/driver/NetworkCache.d.ts +1 -2
  14. package/build/cjs/lib/driver/NetworkCache.js.map +2 -2
  15. package/build/cjs/lib/driver/UpdateConfig.js +6 -4
  16. package/build/cjs/lib/driver/UpdateConfig.js.map +3 -3
  17. package/build/cjs/lib/driver/ZWaveOptions.d.ts +2 -2
  18. package/build/cjs/lib/driver/ZWaveOptions.js.map +2 -2
  19. package/build/cjs/lib/node/Node.js +2 -2
  20. package/build/cjs/lib/node/Node.js.map +3 -3
  21. package/build/cjs/lib/zniffer/Zniffer.js +4 -4
  22. package/build/cjs/lib/zniffer/Zniffer.js.map +2 -2
  23. package/build/esm/Driver.d.ts +1 -1
  24. package/build/esm/Driver.d.ts.map +1 -1
  25. package/build/esm/lib/_version.d.ts +1 -1
  26. package/build/esm/lib/_version.js +1 -1
  27. package/build/esm/lib/controller/MockControllerBehaviors.js +2 -2
  28. package/build/esm/lib/controller/MockControllerBehaviors.js.map +1 -1
  29. package/build/esm/lib/driver/Driver.d.ts +1 -1
  30. package/build/esm/lib/driver/Driver.d.ts.map +1 -1
  31. package/build/esm/lib/driver/Driver.js +9 -9
  32. package/build/esm/lib/driver/Driver.js.map +1 -1
  33. package/build/esm/lib/driver/MessageGenerators.d.ts.map +1 -1
  34. package/build/esm/lib/driver/MessageGenerators.js +4 -4
  35. package/build/esm/lib/driver/MessageGenerators.js.map +1 -1
  36. package/build/esm/lib/driver/NetworkCache.d.ts +1 -2
  37. package/build/esm/lib/driver/NetworkCache.d.ts.map +1 -1
  38. package/build/esm/lib/driver/NetworkCache.js.map +1 -1
  39. package/build/esm/lib/driver/UpdateConfig.d.ts.map +1 -1
  40. package/build/esm/lib/driver/UpdateConfig.js +6 -4
  41. package/build/esm/lib/driver/UpdateConfig.js.map +1 -1
  42. package/build/esm/lib/driver/ZWaveOptions.d.ts +2 -2
  43. package/build/esm/lib/driver/ZWaveOptions.d.ts.map +1 -1
  44. package/build/esm/lib/driver/ZWaveOptions.js.map +1 -1
  45. package/build/esm/lib/node/Node.js +2 -2
  46. package/build/esm/lib/node/Node.js.map +1 -1
  47. package/build/esm/lib/zniffer/Zniffer.d.ts.map +1 -1
  48. package/build/esm/lib/zniffer/Zniffer.js +4 -4
  49. package/build/esm/lib/zniffer/Zniffer.js.map +1 -1
  50. package/package.json +9 -9
@@ -218,7 +218,7 @@ supported frequencies: ${[...this._supportedFrequencies].map(([region, name]) =>
218
218
  /**
219
219
  * Is called when the serial port has received a Zniffer frame
220
220
  */
221
- serialport_onData(data) {
221
+ async serialport_onData(data) {
222
222
  let msg;
223
223
  try {
224
224
  msg = import_serial.ZnifferMessage.parse(data);
@@ -239,7 +239,7 @@ supported frequencies: ${[...this._supportedFrequencies].map(([region, name]) =>
239
239
  if (this._options.maxCapturedFrames != void 0 && this._capturedFrames.length > this._options.maxCapturedFrames) {
240
240
  this._capturedFrames.shift();
241
241
  }
242
- this.handleDataMessage(dataMsg, capture);
242
+ await this.handleDataMessage(dataMsg, capture);
243
243
  }
244
244
  }
245
245
  /**
@@ -256,7 +256,7 @@ supported frequencies: ${[...this._supportedFrequencies].map(([region, name]) =>
256
256
  /**
257
257
  * Is called when a Request-type message was received
258
258
  */
259
- handleDataMessage(msg, capture) {
259
+ async handleDataMessage(msg, capture) {
260
260
  try {
261
261
  let convertedRSSI;
262
262
  if (this._options.convertRSSI && this._chipType) {
@@ -296,7 +296,7 @@ supported frequencies: ${[...this._supportedFrequencies].map(([region, name]) =>
296
296
  }
297
297
  const frameType = mpdu.headerType === import_core.MPDUHeaderType.Multicast ? "multicast" : destNodeId === import_core.NODE_ID_BROADCAST || destNodeId === import_core.NODE_ID_BROADCAST_LR ? "broadcast" : "singlecast";
298
298
  try {
299
- cc = import_cc.CommandClass.parse(mpdu.payload, {
299
+ cc = await import_cc.CommandClass.parseAsync(mpdu.payload, {
300
300
  homeId: mpdu.homeId,
301
301
  ownNodeId: destNodeId,
302
302
  sourceNodeId: mpdu.sourceNodeId,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/zniffer/Zniffer.ts"],
4
- "sourcesContent": ["import {\n\tCommandClass,\n\tSecurity2CCMessageEncapsulation,\n\tSecurity2CCNonceGet,\n\tSecurity2CCNonceReport,\n\tSecurityCCNonceReport,\n} from \"@zwave-js/cc\";\nimport { DeviceConfig } from \"@zwave-js/config\";\nimport {\n\tCommandClasses,\n\ttype FrameType,\n\ttype LogConfig,\n\tMPDUHeaderType,\n\ttype MaybeNotKnown,\n\tNODE_ID_BROADCAST,\n\tNODE_ID_BROADCAST_LR,\n\ttype RSSI,\n\tSPANState,\n\tSecurityClass,\n\tSecurityManager,\n\tSecurityManager2,\n\ttype SecurityManagers,\n\ttype UnknownZWaveChipType,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tZWaveLogContainer,\n\tZnifferRegion,\n\tZnifferRegionLegacy,\n\tgetChipTypeAndVersion,\n\tisLongRangeNodeId,\n\tsecurityClassIsS2,\n} from \"@zwave-js/core\";\nimport { sdkVersionGte } from \"@zwave-js/core\";\nimport { type CCParsingContext, type HostIDs } from \"@zwave-js/host\";\nimport {\n\ttype ZWaveSerialPortImplementation,\n\ttype ZnifferDataMessage,\n\tZnifferFrameType,\n\tZnifferGetFrequenciesRequest,\n\tZnifferGetFrequenciesResponse,\n\tZnifferGetFrequencyInfoRequest,\n\tZnifferGetFrequencyInfoResponse,\n\tZnifferGetVersionRequest,\n\tZnifferGetVersionResponse,\n\tZnifferMessage,\n\tZnifferMessageType,\n\tZnifferSerialPort,\n\tZnifferSerialPortBase,\n\tZnifferSetBaudRateRequest,\n\tZnifferSetBaudRateResponse,\n\tZnifferSetFrequencyRequest,\n\tZnifferSetFrequencyResponse,\n\tZnifferSocket,\n\tZnifferStartRequest,\n\tZnifferStartResponse,\n\tZnifferStopRequest,\n\tZnifferStopResponse,\n\tisZWaveSerialPortImplementation,\n} from \"@zwave-js/serial\";\nimport {\n\tBytes,\n\tTypedEventEmitter,\n\tgetEnumMemberName,\n\tisEnumMember,\n\tnoop,\n\tnum2hex,\n\tpick,\n} from \"@zwave-js/shared\";\nimport {\n\ttype DeferredPromise,\n\tcreateDeferredPromise,\n} from \"alcalzone-shared/deferred-promise\";\nimport fs from \"node:fs/promises\";\nimport { type ZWaveOptions } from \"../driver/ZWaveOptions.js\";\nimport { ZnifferLogger } from \"../log/Zniffer.js\";\nimport {\n\ttype CorruptedFrame,\n\ttype Frame,\n\tbeamToFrame,\n\tmpduToFrame,\n\tparseBeamFrame,\n\tparseMPDU,\n\tznifferDataMessageToCorruptedFrame,\n} from \"./MPDU.js\";\n\nconst logo: string = `\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\n\u255A\u2550\u2550\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\n \u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\n \u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u255D \u2588\u2588\u2554\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588 \u2588\u2588\u2551 \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\n\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n`.trim();\n\nexport interface ZnifferEventCallbacks {\n\tready: () => void;\n\terror: (err: Error) => void;\n\tframe: (frame: Frame, rawData: Uint8Array) => void;\n\t\"corrupted frame\": (err: CorruptedFrame, rawData: Uint8Array) => void;\n}\n\nexport type ZnifferEvents = Extract<keyof ZnifferEventCallbacks, string>;\n\ninterface AwaitedThing<T> {\n\thandler: (thing: T) => void;\n\ttimeout?: NodeJS.Timeout;\n\tpredicate: (msg: T) => boolean;\n}\n\ntype AwaitedMessageEntry = AwaitedThing<ZnifferMessage>;\n\nexport interface ZnifferOptions {\n\t/**\n\t * Optional log configuration\n\t */\n\tlogConfig?: Partial<LogConfig>;\n\n\t/** Security keys for decrypting Z-Wave traffic */\n\tsecurityKeys?: ZWaveOptions[\"securityKeys\"];\n\t/** Security keys for decrypting Z-Wave Long Range traffic */\n\tsecurityKeysLongRange?: ZWaveOptions[\"securityKeysLongRange\"];\n\n\t/**\n\t * The RSSI values reported by the Zniffer are not actual RSSI values.\n\t * They can be converted to dBm, but the conversion is chip dependent and not documented for 700/800 series Zniffers.\n\t *\n\t * Set this option to `true` enable the conversion. Otherwise the raw values from the Zniffer will be used.\n\t */\n\tconvertRSSI?: boolean;\n\n\t/**\n\t * The frequency to initialize the Zniffer with. If not specified, the current setting will be kept.\n\t *\n\t * On 700/800 series Zniffers, this value matches the {@link ZnifferRegion}.\n\t *\n\t * On 400/500 series Zniffers, the value is firmware-specific.\n\t * Supported regions and their names have to be queried using the `getFrequencies` and `getFrequencyInfo(frequency)` commands.\n\t */\n\tdefaultFrequency?: number;\n\n\t/** Limit the number of frames that are kept in memory. */\n\tmaxCapturedFrames?: number;\n}\n\nfunction is700PlusSeries(\n\tchipType: string | UnknownZWaveChipType,\n): boolean {\n\tif (typeof chipType !== \"string\") {\n\t\treturn chipType.type >= 0x07;\n\t}\n\n\tconst chipTypeNumeric = getChipTypeAndVersion(chipType);\n\tif (chipTypeNumeric) {\n\t\treturn chipTypeNumeric.type >= 0x07;\n\t}\n\n\treturn false;\n}\n\nfunction tryConvertRSSI(\n\trssi: number,\n\tchipType: string | UnknownZWaveChipType,\n): number {\n\t// For 400/500 series, the conversion is documented in the Zniffer user guide.\n\t// The conversion for 700/800 series was reverse-engineered from the Zniffer firmware.\n\t// Here, we assume that only these two representations exist:\n\tif (is700PlusSeries(chipType)) {\n\t\treturn rssi * 4 - 256;\n\t} else {\n\t\treturn rssi * 1.5 - 153.5;\n\t}\n}\n\ninterface CapturedData {\n\ttimestamp: Date;\n\trawData: Uint8Array;\n\tframeData: Uint8Array;\n\tparsedFrame?: Frame | CorruptedFrame;\n}\n\nexport interface CapturedFrame {\n\ttimestamp: Date;\n\tframeData: Uint8Array;\n\tparsedFrame: Frame | CorruptedFrame;\n}\n\nexport class Zniffer extends TypedEventEmitter<ZnifferEventCallbacks> {\n\tpublic constructor(\n\t\tprivate port: string | ZWaveSerialPortImplementation,\n\t\toptions: ZnifferOptions = {},\n\t) {\n\t\tsuper();\n\n\t\t// Ensure the given serial port is valid\n\t\tif (\n\t\t\ttypeof port !== \"string\"\n\t\t\t&& !isZWaveSerialPortImplementation(port)\n\t\t) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`The port must be a string or a valid custom serial port implementation!`,\n\t\t\t\tZWaveErrorCodes.Driver_InvalidOptions,\n\t\t\t);\n\t\t}\n\n\t\t// Initialize logging\n\t\tthis._logContainer = new ZWaveLogContainer(options.logConfig);\n\t\tthis.znifferLog = new ZnifferLogger(this, this._logContainer);\n\n\t\tthis._options = options;\n\n\t\tthis._active = false;\n\n\t\tthis.parsingContext = {\n\t\t\tgetHighestSecurityClass(\n\t\t\t\t_nodeId: number,\n\t\t\t): MaybeNotKnown<SecurityClass> {\n\t\t\t\treturn SecurityClass.S2_AccessControl;\n\t\t\t},\n\n\t\t\thasSecurityClass(\n\t\t\t\t_nodeId: number,\n\t\t\t\t_securityClass: SecurityClass,\n\t\t\t): MaybeNotKnown<boolean> {\n\t\t\t\t// We don't actually know. Attempt parsing with all security classes\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\tsetSecurityClass(\n\t\t\t\t_nodeId: number,\n\t\t\t\t_securityClass: SecurityClass,\n\t\t\t\t_granted: boolean,\n\t\t\t): void {\n\t\t\t\t// Do nothing\n\t\t\t},\n\n\t\t\tgetDeviceConfig(_nodeId: number): DeviceConfig | undefined {\n\t\t\t\t// Disable strict validation while parsing certain CCs\n\t\t\t\t// Most of this stuff isn't actually needed, only the compat flags...\n\t\t\t\treturn new DeviceConfig(\n\t\t\t\t\t\"unknown.json\",\n\t\t\t\t\tfalse,\n\t\t\t\t\t\"UNKNOWN_MANUFACTURER\",\n\t\t\t\t\t0x0000,\n\t\t\t\t\t\"UNKNOWN_PRODUCT\",\n\t\t\t\t\t\"UNKNOWN_DESCRIPTION\",\n\t\t\t\t\t[],\n\t\t\t\t\t{\n\t\t\t\t\t\tmin: \"0.0\",\n\t\t\t\t\t\tmax: \"255.255\",\n\t\t\t\t\t},\n\t\t\t\t\ttrue,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\t// ...down here:\n\t\t\t\t\t{\n\t\t\t\t\t\tdisableStrictEntryControlDataValidation: true,\n\t\t\t\t\t\tdisableStrictMeasurementValidation: true,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate _options: ZnifferOptions;\n\n\t/** The serial port instance */\n\tprivate serial: ZnifferSerialPortBase | undefined;\n\tprivate parsingContext: Omit<\n\t\tCCParsingContext,\n\t\tkeyof HostIDs | \"sourceNodeId\" | \"frameType\" | keyof SecurityManagers\n\t>;\n\n\tprivate _destroyPromise: DeferredPromise<void> | undefined;\n\tprivate get wasDestroyed(): boolean {\n\t\treturn !!this._destroyPromise;\n\t}\n\n\tprivate _chipType: string | UnknownZWaveChipType | undefined;\n\n\tprivate _currentFrequency: number | undefined;\n\t/** The currently configured frequency */\n\tpublic get currentFrequency(): number | undefined {\n\t\treturn this._currentFrequency;\n\t}\n\n\tprivate _supportedFrequencies: Map<number, string> = new Map();\n\t/** A map of supported frequency identifiers and their names */\n\tpublic get supportedFrequencies(): ReadonlyMap<number, string> {\n\t\treturn this._supportedFrequencies;\n\t}\n\n\tprivate _logContainer: ZWaveLogContainer;\n\tprivate znifferLog: ZnifferLogger;\n\n\t/** The security managers for each node */\n\tprivate securityManagers: Map<number, {\n\t\tsecurityManager: SecurityManager | undefined;\n\t\tsecurityManager2: SecurityManager2 | undefined;\n\t\tsecurityManagerLR: SecurityManager2 | undefined;\n\t}> = new Map();\n\n\t/** A list of awaited messages */\n\tprivate awaitedMessages: AwaitedMessageEntry[] = [];\n\n\tprivate _active: boolean;\n\t/** Whether the Zniffer instance is currently capturing */\n\tpublic get active(): boolean {\n\t\treturn this._active;\n\t}\n\n\tprivate _capturedFrames: CapturedData[] = [];\n\n\t/** A list of raw captured frames that can be saved to a .zlf file later */\n\tpublic get capturedFrames(): Readonly<CapturedFrame>[] {\n\t\treturn this._capturedFrames.filter((f) => f.parsedFrame !== undefined)\n\t\t\t.map((f) => ({\n\t\t\t\ttimestamp: f.timestamp,\n\t\t\t\tframeData: f.frameData,\n\t\t\t\tparsedFrame: f.parsedFrame!,\n\t\t\t}));\n\t}\n\n\tpublic async init(): Promise<void> {\n\t\tif (this.wasDestroyed) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The Zniffer was destroyed. Create a new instance and initialize that one.\",\n\t\t\t\tZWaveErrorCodes.Driver_Destroyed,\n\t\t\t);\n\t\t}\n\n\t\t// Open the serial port\n\t\tif (typeof this.port === \"string\") {\n\t\t\tif (this.port.startsWith(\"tcp://\")) {\n\t\t\t\tconst url = new URL(this.port);\n\t\t\t\t// this.znifferLog.print(`opening serial port ${this.port}`);\n\t\t\t\tthis.serial = new ZnifferSocket(\n\t\t\t\t\t{\n\t\t\t\t\t\thost: url.hostname,\n\t\t\t\t\t\tport: parseInt(url.port),\n\t\t\t\t\t},\n\t\t\t\t\tthis._logContainer,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t// this.znifferLog.print(`opening serial port ${this.port}`);\n\t\t\t\tthis.serial = new ZnifferSerialPort(\n\t\t\t\t\tthis.port,\n\t\t\t\t\tthis._logContainer,\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// this.znifferLog.print(\n\t\t\t// \t\"opening serial port using the provided custom implementation\",\n\t\t\t// );\n\t\t\tthis.serial = new ZnifferSerialPortBase(\n\t\t\t\tthis.port,\n\t\t\t\tthis._logContainer,\n\t\t\t);\n\t\t}\n\t\tthis.serial\n\t\t\t.on(\"data\", this.serialport_onData.bind(this))\n\t\t\t.on(\"error\", (err) => {\n\t\t\t\tthis.emit(\"error\", err);\n\t\t\t});\n\n\t\tawait this.serial.open();\n\n\t\tthis.znifferLog.print(logo, \"info\");\n\n\t\tawait this.stop();\n\n\t\tconst versionInfo = await this.getVersion();\n\t\tthis._chipType = versionInfo.chipType;\n\t\tthis.znifferLog.print(\n\t\t\t`received Zniffer info:\n Chip type: ${\n\t\t\t\ttypeof versionInfo.chipType === \"string\"\n\t\t\t\t\t? versionInfo.chipType\n\t\t\t\t\t: `unknown (${num2hex(versionInfo.chipType.type)}, ${\n\t\t\t\t\t\tnum2hex(versionInfo.chipType.version)\n\t\t\t\t\t})`\n\t\t\t}\n Zniffer version: ${versionInfo.majorVersion}.${versionInfo.minorVersion}`,\n\t\t\t\"info\",\n\t\t);\n\n\t\tawait this.setBaudrate(0);\n\n\t\tconst freqs = await this.getFrequencies();\n\t\tthis._currentFrequency = freqs.currentFrequency;\n\t\tif (is700PlusSeries(this._chipType)) {\n\t\t\t// The frequencies match the ZnifferRegion enum\n\t\t\tfor (const freq of freqs.supportedFrequencies) {\n\t\t\t\tthis._supportedFrequencies.set(\n\t\t\t\t\tfreq,\n\t\t\t\t\tgetEnumMemberName(ZnifferRegion, freq),\n\t\t\t\t);\n\t\t\t}\n\t\t\t// ... but there might be unknown regions. Query those from the Zniffer\n\t\t\tconst unknownRegions = freqs.supportedFrequencies.filter((f) =>\n\t\t\t\t!isEnumMember(ZnifferRegion, f)\n\t\t\t);\n\t\t\tfor (const freq of unknownRegions) {\n\t\t\t\tconst freqInfo = await this.getFrequencyInfo(freq);\n\t\t\t\tthis._supportedFrequencies.set(freq, freqInfo.frequencyName);\n\t\t\t}\n\t\t} else if (\n\t\t\t// Version 2.55+ supports querying the frequency names\n\t\t\tsdkVersionGte(\n\t\t\t\t`${versionInfo.majorVersion}.${versionInfo.minorVersion}`,\n\t\t\t\t\"2.55\",\n\t\t\t)\n\t\t) {\n\t\t\t// The frequencies are firmware-specific. Query them from the Zniffer\n\t\t\tfor (const freq of freqs.supportedFrequencies) {\n\t\t\t\tconst freqInfo = await this.getFrequencyInfo(freq);\n\t\t\t\tthis._supportedFrequencies.set(freq, freqInfo.frequencyName);\n\t\t\t}\n\t\t} else {\n\t\t\t// The frequencies match the ZnifferRegionLegacy enum, and their info cannot be queried\n\t\t\tfor (const freq of freqs.supportedFrequencies) {\n\t\t\t\tthis._supportedFrequencies.set(\n\t\t\t\t\tfreq,\n\t\t\t\t\tgetEnumMemberName(ZnifferRegionLegacy, freq),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis.znifferLog.print(\n\t\t\t`received frequency info:\ncurrent frequency: ${\n\t\t\t\tthis._supportedFrequencies.get(freqs.currentFrequency)\n\t\t\t\t\t?? `unknown (${num2hex(freqs.currentFrequency)})`\n\t\t\t}\nsupported frequencies: ${\n\t\t\t\t[...this._supportedFrequencies].map(([region, name]) =>\n\t\t\t\t\t`\\n \u00B7 ${region.toString().padStart(2, \" \")}: ${name}`\n\t\t\t\t).join(\"\")\n\t\t\t}`,\n\t\t\t\"info\",\n\t\t);\n\n\t\tif (\n\t\t\ttypeof this._options.defaultFrequency === \"number\"\n\t\t\t&& freqs.currentFrequency !== this._options.defaultFrequency\n\t\t\t&& this._supportedFrequencies.has(this._options.defaultFrequency)\n\t\t) {\n\t\t\tawait this.setFrequency(this._options.defaultFrequency);\n\t\t}\n\n\t\tthis.emit(\"ready\");\n\t}\n\n\t/**\n\t * Is called when the serial port has received a Zniffer frame\n\t */\n\tprivate serialport_onData(\n\t\tdata: Uint8Array,\n\t): void {\n\t\tlet msg: ZnifferMessage | undefined;\n\t\ttry {\n\t\t\tmsg = ZnifferMessage.parse(data);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (msg.type === ZnifferMessageType.Command) {\n\t\t\tthis.handleResponse(msg);\n\t\t} else {\n\t\t\tconst dataMsg = msg as ZnifferDataMessage;\n\t\t\tconst capture: CapturedData = {\n\t\t\t\ttimestamp: new Date(),\n\t\t\t\trawData: data,\n\t\t\t\tframeData: dataMsg.payload,\n\t\t\t};\n\t\t\tthis._capturedFrames.push(capture);\n\t\t\tif (\n\t\t\t\tthis._options.maxCapturedFrames != undefined\n\t\t\t\t&& this._capturedFrames.length > this._options.maxCapturedFrames\n\t\t\t) {\n\t\t\t\tthis._capturedFrames.shift();\n\t\t\t}\n\t\t\tthis.handleDataMessage(dataMsg, capture);\n\t\t}\n\t}\n\n\t/**\n\t * Is called when a Request-type message was received\n\t */\n\tprivate handleResponse(msg: ZnifferMessage): void {\n\t\t// Check if we have a dynamic handler waiting for this message\n\t\tfor (const entry of this.awaitedMessages) {\n\t\t\tif (entry.predicate(msg)) {\n\t\t\t\t// We do\n\t\t\t\tentry.handler(msg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Is called when a Request-type message was received\n\t */\n\tprivate handleDataMessage(\n\t\tmsg: ZnifferDataMessage,\n\t\tcapture: CapturedData,\n\t): void {\n\t\ttry {\n\t\t\tlet convertedRSSI: RSSI | undefined;\n\t\t\tif (this._options.convertRSSI && this._chipType) {\n\t\t\t\tconvertedRSSI = tryConvertRSSI(\n\t\t\t\t\tmsg.rssiRaw,\n\t\t\t\t\tthis._chipType,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Short-circuit if we're dealing with beam frames\n\t\t\tif (\n\t\t\t\tmsg.frameType === ZnifferFrameType.BeamStart\n\t\t\t\t|| msg.frameType === ZnifferFrameType.BeamStop\n\t\t\t) {\n\t\t\t\tconst beam = parseBeamFrame(msg);\n\t\t\t\tbeam.frameInfo.rssi = convertedRSSI;\n\n\t\t\t\t// Emit the captured frame in a format that's easier to work with for applications.\n\t\t\t\tthis.znifferLog.beam(beam);\n\t\t\t\tconst frame = beamToFrame(beam);\n\t\t\t\tcapture.parsedFrame = frame;\n\t\t\t\tthis.emit(\"frame\", frame, capture.frameData);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only handle messages with a valid checksum, expose the others as CRC errors\n\t\t\tif (!msg.checksumOK) {\n\t\t\t\tthis.znifferLog.crcError(msg);\n\t\t\t\tconst frame = znifferDataMessageToCorruptedFrame(msg);\n\t\t\t\tcapture.parsedFrame = frame;\n\t\t\t\tthis.emit(\"corrupted frame\", frame, capture.frameData);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst mpdu = parseMPDU(msg);\n\t\t\tmpdu.frameInfo.rssi = convertedRSSI;\n\n\t\t\t// Try to decode the CC while assuming the role of the receiver\n\t\t\tlet destSecurityManager: SecurityManager | undefined;\n\t\t\tlet destSecurityManager2: SecurityManager2 | undefined;\n\t\t\tlet destSecurityManagerLR: SecurityManager2 | undefined;\n\t\t\t// Only frames with a destination node id contains something that requires access to the own node ID\n\t\t\tlet destNodeId = 0xff;\n\n\t\t\tlet cc: CommandClass | undefined;\n\n\t\t\t// FIXME: Cache data => parsed CC, so we can understand re-transmitted S2 frames\n\n\t\t\tif (\n\t\t\t\tmpdu.payload.length > 0\n\t\t\t\t&& mpdu.headerType !== MPDUHeaderType.Acknowledgement\n\t\t\t) {\n\t\t\t\tif (\"destinationNodeId\" in mpdu) {\n\t\t\t\t\tdestNodeId = mpdu.destinationNodeId;\n\t\t\t\t\t({\n\t\t\t\t\t\tsecurityManager: destSecurityManager,\n\t\t\t\t\t\tsecurityManager2: destSecurityManager2,\n\t\t\t\t\t\tsecurityManagerLR: destSecurityManagerLR,\n\t\t\t\t\t} = this.getSecurityManagers(mpdu.destinationNodeId));\n\t\t\t\t}\n\n\t\t\t\t// TODO: Support parsing multicast S2 frames\n\t\t\t\tconst frameType: FrameType =\n\t\t\t\t\tmpdu.headerType === MPDUHeaderType.Multicast\n\t\t\t\t\t\t? \"multicast\"\n\t\t\t\t\t\t: (destNodeId === NODE_ID_BROADCAST\n\t\t\t\t\t\t\t\t|| destNodeId === NODE_ID_BROADCAST_LR)\n\t\t\t\t\t\t? \"broadcast\"\n\t\t\t\t\t\t: \"singlecast\";\n\t\t\t\ttry {\n\t\t\t\t\tcc = CommandClass.parse(\n\t\t\t\t\t\tmpdu.payload,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\thomeId: mpdu.homeId,\n\t\t\t\t\t\t\townNodeId: destNodeId,\n\t\t\t\t\t\t\tsourceNodeId: mpdu.sourceNodeId,\n\t\t\t\t\t\t\tframeType,\n\t\t\t\t\t\t\tsecurityManager: destSecurityManager,\n\t\t\t\t\t\t\tsecurityManager2: destSecurityManager2,\n\t\t\t\t\t\t\tsecurityManagerLR: destSecurityManagerLR,\n\t\t\t\t\t\t\t...this.parsingContext,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t} catch (e: any) {\n\t\t\t\t\t// Ignore\n\t\t\t\t\tconsole.error(e.stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.znifferLog.mpdu(mpdu, cc);\n\n\t\t\t// Emit the captured frame in a format that's easier to work with for applications.\n\t\t\tconst frame = mpduToFrame(mpdu, cc);\n\t\t\tcapture.parsedFrame = frame;\n\t\t\tthis.emit(\"frame\", frame, capture.frameData);\n\n\t\t\t// Update the security managers when nonces are exchanged, so we can\n\t\t\t// decrypt the communication\n\t\t\tif (cc?.ccId === CommandClasses[\"Security 2\"]) {\n\t\t\t\tconst securityManagers = this.getSecurityManagers(\n\t\t\t\t\tmpdu.sourceNodeId,\n\t\t\t\t);\n\t\t\t\tconst isLR = isLongRangeNodeId(mpdu.sourceNodeId)\n\t\t\t\t\t|| isLongRangeNodeId(destNodeId);\n\t\t\t\tconst senderSecurityManager = isLR\n\t\t\t\t\t? securityManagers.securityManagerLR\n\t\t\t\t\t: securityManagers.securityManager2;\n\t\t\t\tconst destSecurityManager = isLR\n\t\t\t\t\t? destSecurityManagerLR\n\t\t\t\t\t: destSecurityManager2;\n\n\t\t\t\tif (senderSecurityManager && destSecurityManager) {\n\t\t\t\t\tif (cc instanceof Security2CCNonceGet) {\n\t\t\t\t\t\t// Nonce Get -> all nonces are now invalid\n\t\t\t\t\t\tsenderSecurityManager.deleteNonce(destNodeId);\n\t\t\t\t\t\tdestSecurityManager.deleteNonce(mpdu.sourceNodeId);\n\t\t\t\t\t} else if (cc instanceof Security2CCNonceReport && cc.SOS) {\n\t\t\t\t\t\t// Nonce Report (SOS) -> We only know the receiver's nonce\n\t\t\t\t\t\tsenderSecurityManager.setSPANState(destNodeId, {\n\t\t\t\t\t\t\ttype: SPANState.LocalEI,\n\t\t\t\t\t\t\treceiverEI: cc.receiverEI!,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdestSecurityManager.storeRemoteEI(\n\t\t\t\t\t\t\tmpdu.sourceNodeId,\n\t\t\t\t\t\t\tcc.receiverEI!,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (cc instanceof Security2CCMessageEncapsulation) {\n\t\t\t\t\t\tconst senderEI = cc.getSenderEI();\n\t\t\t\t\t\tif (senderEI) {\n\t\t\t\t\t\t\t// The receiver should now have a valid SPAN state, since decoding the S2 CC updates it.\n\t\t\t\t\t\t\t// The security manager for the sender however, does not. Therefore, update it manually,\n\t\t\t\t\t\t\t// if the receiver SPAN is indeed valid.\n\n\t\t\t\t\t\t\tconst receiverSPANState = destSecurityManager\n\t\t\t\t\t\t\t\t.getSPANState(mpdu.sourceNodeId);\n\t\t\t\t\t\t\tif (receiverSPANState.type === SPANState.SPAN) {\n\t\t\t\t\t\t\t\tsenderSecurityManager.setSPANState(\n\t\t\t\t\t\t\t\t\tdestNodeId,\n\t\t\t\t\t\t\t\t\treceiverSPANState,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tcc?.ccId === CommandClasses.Security\n\t\t\t\t&& cc instanceof SecurityCCNonceReport\n\t\t\t) {\n\t\t\t\tconst senderSecurityManager =\n\t\t\t\t\tthis.getSecurityManagers(mpdu.sourceNodeId).securityManager;\n\t\t\t\tconst destSecurityManager =\n\t\t\t\t\tthis.getSecurityManagers(destNodeId).securityManager;\n\n\t\t\t\tif (senderSecurityManager && destSecurityManager) {\n\t\t\t\t\t// Both nodes have a shared nonce now\n\t\t\t\t\tsenderSecurityManager.setNonce(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tissuer: mpdu.sourceNodeId,\n\t\t\t\t\t\t\tnonceId: senderSecurityManager.getNonceId(\n\t\t\t\t\t\t\t\tcc.nonce,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnonce: cc.nonce,\n\t\t\t\t\t\t\treceiver: destNodeId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ free: true },\n\t\t\t\t\t);\n\n\t\t\t\t\tdestSecurityManager.setNonce(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tissuer: mpdu.sourceNodeId,\n\t\t\t\t\t\t\tnonceId: senderSecurityManager.getNonceId(\n\t\t\t\t\t\t\t\tcc.nonce,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnonce: cc.nonce,\n\t\t\t\t\t\t\treceiver: destNodeId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ free: true },\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e: any) {\n\t\t\tconsole.error(e);\n\t\t}\n\t}\n\n\t/**\n\t * Waits until a certain serial message is received or a timeout has elapsed. Returns the received message.\n\t * @param timeout The number of milliseconds to wait. If the timeout elapses, the returned promise will be rejected\n\t * @param predicate A predicate function to test all incoming messages.\n\t */\n\tprivate waitForMessage<T extends ZnifferMessage>(\n\t\tpredicate: (msg: ZnifferMessage) => boolean,\n\t\ttimeout: number,\n\t): Promise<T> {\n\t\treturn new Promise<T>((resolve, reject) => {\n\t\t\tconst promise = createDeferredPromise<ZnifferMessage>();\n\t\t\tconst entry: AwaitedMessageEntry = {\n\t\t\t\tpredicate,\n\t\t\t\thandler: (msg) => promise.resolve(msg),\n\t\t\t\ttimeout: undefined,\n\t\t\t};\n\t\t\tthis.awaitedMessages.push(entry);\n\t\t\tconst removeEntry = () => {\n\t\t\t\tif (entry.timeout) clearTimeout(entry.timeout);\n\t\t\t\tconst index = this.awaitedMessages.indexOf(entry);\n\t\t\t\tif (index !== -1) this.awaitedMessages.splice(index, 1);\n\t\t\t};\n\t\t\t// When the timeout elapses, remove the wait entry and reject the returned Promise\n\t\t\tentry.timeout = setTimeout(() => {\n\t\t\t\tremoveEntry();\n\t\t\t\treject(\n\t\t\t\t\tnew ZWaveError(\n\t\t\t\t\t\t`Received no matching message within the provided timeout!`,\n\t\t\t\t\t\tZWaveErrorCodes.Controller_Timeout,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}, timeout);\n\t\t\t// When the promise is resolved, remove the wait entry and resolve the returned Promise\n\t\t\tvoid promise.then((cc) => {\n\t\t\t\tremoveEntry();\n\t\t\t\tresolve(cc as T);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate async getVersion() {\n\t\tconst req = new ZnifferGetVersionRequest();\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tconst res = await this.waitForMessage<ZnifferGetVersionResponse>(\n\t\t\t(msg) => msg instanceof ZnifferGetVersionResponse,\n\t\t\t1000,\n\t\t);\n\n\t\treturn pick(res, [\"chipType\", \"majorVersion\", \"minorVersion\"]);\n\t}\n\n\tprivate async getFrequencies() {\n\t\tconst req = new ZnifferGetFrequenciesRequest();\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tconst res = await this.waitForMessage<ZnifferGetFrequenciesResponse>(\n\t\t\t(msg) => msg instanceof ZnifferGetFrequenciesResponse,\n\t\t\t1000,\n\t\t);\n\n\t\treturn pick(res, [\n\t\t\t\"currentFrequency\",\n\t\t\t\"supportedFrequencies\",\n\t\t]);\n\t}\n\n\tpublic async setFrequency(frequency: number): Promise<void> {\n\t\tconst req = new ZnifferSetFrequencyRequest({ frequency });\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tawait this.waitForMessage<ZnifferSetFrequencyResponse>(\n\t\t\t(msg) => msg instanceof ZnifferSetFrequencyResponse,\n\t\t\t1000,\n\t\t);\n\t\tthis._currentFrequency = frequency;\n\t}\n\n\tprivate async getFrequencyInfo(frequency: number) {\n\t\tconst req = new ZnifferGetFrequencyInfoRequest({ frequency });\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tconst res = await this.waitForMessage<ZnifferGetFrequencyInfoResponse>(\n\t\t\t(msg) =>\n\t\t\t\tmsg instanceof ZnifferGetFrequencyInfoResponse\n\t\t\t\t&& msg.frequency === frequency,\n\t\t\t1000,\n\t\t);\n\n\t\treturn pick(res, [\"numChannels\", \"frequencyName\"]);\n\t}\n\n\t/** Starts the capture and discards all previously captured frames */\n\tpublic async start(): Promise<void> {\n\t\tif (this.wasDestroyed) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The Zniffer is not ready or has been destroyed\",\n\t\t\t\tZWaveErrorCodes.Driver_NotReady,\n\t\t\t);\n\t\t}\n\n\t\tif (this._active) return;\n\t\tthis._capturedFrames = [];\n\t\tthis._active = true;\n\n\t\tconst req = new ZnifferStartRequest();\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tawait this.waitForMessage<ZnifferStartResponse>(\n\t\t\t(msg) => msg instanceof ZnifferStartResponse,\n\t\t\t1000,\n\t\t);\n\t}\n\n\tpublic async stop(): Promise<void> {\n\t\tif (!this._active) return;\n\t\tthis._active = false;\n\n\t\tif (!this.serial) return;\n\n\t\tconst req = new ZnifferStopRequest();\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tawait this.waitForMessage<ZnifferStopResponse>(\n\t\t\t(msg) => msg instanceof ZnifferStopResponse,\n\t\t\t1000,\n\t\t);\n\t}\n\n\tprivate async setBaudrate(baudrate: 0): Promise<void> {\n\t\tconst req = new ZnifferSetBaudRateRequest({ baudrate });\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tawait this.waitForMessage<ZnifferSetBaudRateResponse>(\n\t\t\t(msg) => msg instanceof ZnifferSetBaudRateResponse,\n\t\t\t1000,\n\t\t);\n\t}\n\n\tprivate getSecurityManagers(\n\t\tsourceNodeId: number,\n\t) {\n\t\tif (this.securityManagers.has(sourceNodeId)) {\n\t\t\treturn this.securityManagers.get(sourceNodeId)!;\n\t\t}\n\t\t// Initialize security\n\t\t// Set up the S0 security manager. We can only do that after the controller\n\t\t// interview because we need to know the controller node id.\n\t\tconst S0Key = this._options.securityKeys?.S0_Legacy;\n\t\tlet securityManager: SecurityManager | undefined;\n\t\tif (S0Key) {\n\t\t\t// this.znifferLog.print(\n\t\t\t// \t\"Network key for S0 configured, enabling S0 security manager...\",\n\t\t\t// );\n\t\t\tsecurityManager = new SecurityManager({\n\t\t\t\tnetworkKey: S0Key,\n\t\t\t\t// FIXME: Track nonces separately for each destination node\n\t\t\t\townNodeId: sourceNodeId,\n\t\t\t\tnonceTimeout: Number.POSITIVE_INFINITY,\n\t\t\t});\n\t\t\t// } else {\n\t\t\t// \tthis.znifferLog.print(\n\t\t\t// \t\t\"No network key for S0 configured, cannot decrypt communication from secure (S0) devices!\",\n\t\t\t// \t\t\"warn\",\n\t\t\t// \t);\n\t\t}\n\n\t\tlet securityManager2: SecurityManager2 | undefined;\n\t\tif (\n\t\t\tthis._options.securityKeys\n\t\t\t// Only set it up if we have security keys for at least one S2 security class\n\t\t\t&& Object.keys(this._options.securityKeys).some(\n\t\t\t\t(key) =>\n\t\t\t\t\tkey.startsWith(\"S2_\")\n\t\t\t\t\t&& key in SecurityClass\n\t\t\t\t\t&& securityClassIsS2((SecurityClass as any)[key]),\n\t\t\t)\n\t\t) {\n\t\t\t// this.znifferLog.print(\n\t\t\t// \t\"At least one network key for S2 configured, enabling S2 security manager...\",\n\t\t\t// );\n\t\t\tsecurityManager2 = new SecurityManager2();\n\t\t\t// Small hack: Zniffer does not care about S2 duplicates\n\t\t\tsecurityManager2.isDuplicateSinglecast = () => false;\n\n\t\t\t// Set up all keys\n\t\t\tfor (\n\t\t\t\tconst secClass of [\n\t\t\t\t\t\"S2_Unauthenticated\",\n\t\t\t\t\t\"S2_Authenticated\",\n\t\t\t\t\t\"S2_AccessControl\",\n\t\t\t\t\t\"S0_Legacy\",\n\t\t\t\t] as const\n\t\t\t) {\n\t\t\t\tconst key = this._options.securityKeys[secClass];\n\t\t\t\tif (key) {\n\t\t\t\t\tsecurityManager2.setKey(SecurityClass[secClass], key);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// } else {\n\t\t\t// \tthis.znifferLog.print(\n\t\t\t// \t\t\"No network key for S2 configured, cannot decrypt communication from secure (S2) devices!\",\n\t\t\t// \t\t\"warn\",\n\t\t\t// \t);\n\t\t}\n\n\t\tlet securityManagerLR: SecurityManager2 | undefined;\n\t\tif (\n\t\t\tthis._options.securityKeysLongRange?.S2_AccessControl\n\t\t\t|| this._options.securityKeysLongRange?.S2_Authenticated\n\t\t) {\n\t\t\t// this.znifferLog.print(\n\t\t\t// \t\"At least one network key for Z-Wave Long Range configured, enabling security manager...\",\n\t\t\t// );\n\t\t\tsecurityManagerLR = new SecurityManager2();\n\t\t\t// Small hack: Zniffer does not care about S2 duplicates\n\t\t\tsecurityManagerLR.isDuplicateSinglecast = () => false;\n\n\t\t\t// Set up all keys\n\t\t\tif (this._options.securityKeysLongRange?.S2_AccessControl) {\n\t\t\t\tsecurityManagerLR.setKey(\n\t\t\t\t\tSecurityClass.S2_AccessControl,\n\t\t\t\t\tthis._options.securityKeysLongRange.S2_AccessControl,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (this._options.securityKeysLongRange?.S2_Authenticated) {\n\t\t\t\tsecurityManagerLR.setKey(\n\t\t\t\t\tSecurityClass.S2_Authenticated,\n\t\t\t\t\tthis._options.securityKeysLongRange.S2_Authenticated,\n\t\t\t\t);\n\t\t\t}\n\t\t\t// } else {\n\t\t\t// \tthis.znifferLog.print(\n\t\t\t// \t\t\"No network key for Z-Wave Long Range configured, cannot decrypt Long Range communication!\",\n\t\t\t// \t\t\"warn\",\n\t\t\t// \t);\n\t\t}\n\n\t\tconst ret = {\n\t\t\tsecurityManager,\n\t\t\tsecurityManager2,\n\t\t\tsecurityManagerLR,\n\t\t};\n\t\tthis.securityManagers.set(sourceNodeId, ret);\n\t\treturn ret;\n\t}\n\n\t/** Clears the list of captured frames */\n\tpublic clearCapturedFrames(): void {\n\t\tthis._capturedFrames = [];\n\t}\n\n\t/**\n\t * Get the captured frames in the official Zniffer application format.\n\t * @param frameFilter Optional predicate function to filter the frames included in the capture\n\t */\n\tpublic getCaptureAsZLFBuffer(\n\t\tframeFilter?: (frame: CapturedFrame) => boolean,\n\t): Uint8Array {\n\t\t// Mimics the current Zniffer software, without using features like sessions and comments\n\t\tconst header = new Bytes(2048).fill(0);\n\t\theader[0] = 0x68; // zniffer version\n\t\theader.writeUInt16BE(0x2312, 0x07fe); // checksum\n\t\tlet filteredFrames = this._capturedFrames;\n\t\tif (frameFilter) {\n\t\t\tfilteredFrames = filteredFrames.filter((f) =>\n\t\t\t\t// Always include Zniffer-protocol frames\n\t\t\t\tf.parsedFrame == undefined\n\t\t\t\t// Apply the filter to all other frames\n\t\t\t\t|| frameFilter({\n\t\t\t\t\tframeData: f.frameData,\n\t\t\t\t\tparsedFrame: f.parsedFrame,\n\t\t\t\t\ttimestamp: f.timestamp,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\treturn Bytes.concat([\n\t\t\theader,\n\t\t\t...filteredFrames.map(captureToZLFEntry),\n\t\t]);\n\t}\n\n\t/**\n\t * Saves the captured frames in a `.zlf` file that can be read by the official Zniffer application.\n\t * @param frameFilter Optional predicate function to filter the frames included in the capture\n\t */\n\tpublic async saveCaptureToFile(\n\t\tfilePath: string,\n\t\tframeFilter?: (frame: CapturedFrame) => boolean,\n\t): Promise<void> {\n\t\tawait fs.writeFile(filePath, this.getCaptureAsZLFBuffer(frameFilter));\n\t}\n\n\t/**\n\t * Terminates the Zniffer instance and closes the underlying serial connection.\n\t * Must be called under any circumstances.\n\t */\n\tpublic async destroy(): Promise<void> {\n\t\t// Ensure this is only called once and all subsequent calls block\n\t\tif (this._destroyPromise) return this._destroyPromise;\n\t\tthis._destroyPromise = createDeferredPromise();\n\n\t\tthis.znifferLog.print(\"Destroying Zniffer instance...\");\n\n\t\tif (this._active) {\n\t\t\tawait this.stop().catch(noop);\n\t\t}\n\n\t\tif (this.serial != undefined) {\n\t\t\t// Avoid spewing errors if the port was in the middle of receiving something\n\t\t\tthis.serial.removeAllListeners();\n\t\t\tif (this.serial.isOpen) await this.serial.close();\n\t\t\tthis.serial = undefined;\n\t\t}\n\n\t\tthis.znifferLog.print(\"Zniffer instance destroyed\");\n\n\t\t// destroy loggers as the very last thing\n\t\tthis._logContainer.destroy();\n\n\t\tthis._destroyPromise.resolve();\n\t}\n}\n\nfunction captureToZLFEntry(\n\tcapture: CapturedData,\n): Uint8Array {\n\tconst buffer = new Bytes(14 + capture.rawData.length).fill(0);\n\t// Convert the date to a .NET datetime\n\tlet ticks = BigInt(capture.timestamp.getTime()) * 10000n\n\t\t+ 621355968000000000n;\n\tticks = ticks | 4000000000000000n; // marks the time as .NET DateTimeKind.Local\n\n\tbuffer.writeBigUInt64LE(ticks, 0);\n\tconst direction = 0b0000_0000; // inbound, outbound would be 0b1000_0000\n\n\tbuffer[8] = direction | 0x01; // dir + session ID\n\tbuffer[9] = capture.rawData.length;\n\t// bytes 10-12 are empty\n\tbuffer.set(capture.rawData, 13);\n\tbuffer[buffer.length - 1] = 0xfe; // end of frame\n\treturn buffer;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n\tCommandClass,\n\tSecurity2CCMessageEncapsulation,\n\tSecurity2CCNonceGet,\n\tSecurity2CCNonceReport,\n\tSecurityCCNonceReport,\n} from \"@zwave-js/cc\";\nimport { DeviceConfig } from \"@zwave-js/config\";\nimport {\n\tCommandClasses,\n\ttype FrameType,\n\ttype LogConfig,\n\tMPDUHeaderType,\n\ttype MaybeNotKnown,\n\tNODE_ID_BROADCAST,\n\tNODE_ID_BROADCAST_LR,\n\ttype RSSI,\n\tSPANState,\n\tSecurityClass,\n\tSecurityManager,\n\tSecurityManager2,\n\ttype SecurityManagers,\n\ttype UnknownZWaveChipType,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tZWaveLogContainer,\n\tZnifferRegion,\n\tZnifferRegionLegacy,\n\tgetChipTypeAndVersion,\n\tisLongRangeNodeId,\n\tsecurityClassIsS2,\n} from \"@zwave-js/core\";\nimport { sdkVersionGte } from \"@zwave-js/core\";\nimport { type CCParsingContext, type HostIDs } from \"@zwave-js/host\";\nimport {\n\ttype ZWaveSerialPortImplementation,\n\ttype ZnifferDataMessage,\n\tZnifferFrameType,\n\tZnifferGetFrequenciesRequest,\n\tZnifferGetFrequenciesResponse,\n\tZnifferGetFrequencyInfoRequest,\n\tZnifferGetFrequencyInfoResponse,\n\tZnifferGetVersionRequest,\n\tZnifferGetVersionResponse,\n\tZnifferMessage,\n\tZnifferMessageType,\n\tZnifferSerialPort,\n\tZnifferSerialPortBase,\n\tZnifferSetBaudRateRequest,\n\tZnifferSetBaudRateResponse,\n\tZnifferSetFrequencyRequest,\n\tZnifferSetFrequencyResponse,\n\tZnifferSocket,\n\tZnifferStartRequest,\n\tZnifferStartResponse,\n\tZnifferStopRequest,\n\tZnifferStopResponse,\n\tisZWaveSerialPortImplementation,\n} from \"@zwave-js/serial\";\nimport {\n\tBytes,\n\tTypedEventEmitter,\n\tgetEnumMemberName,\n\tisEnumMember,\n\tnoop,\n\tnum2hex,\n\tpick,\n} from \"@zwave-js/shared\";\nimport {\n\ttype DeferredPromise,\n\tcreateDeferredPromise,\n} from \"alcalzone-shared/deferred-promise\";\nimport fs from \"node:fs/promises\";\nimport { type ZWaveOptions } from \"../driver/ZWaveOptions.js\";\nimport { ZnifferLogger } from \"../log/Zniffer.js\";\nimport {\n\ttype CorruptedFrame,\n\ttype Frame,\n\tbeamToFrame,\n\tmpduToFrame,\n\tparseBeamFrame,\n\tparseMPDU,\n\tznifferDataMessageToCorruptedFrame,\n} from \"./MPDU.js\";\n\nconst logo: string = `\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\n\u255A\u2550\u2550\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\n \u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\n \u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u255D \u2588\u2588\u2554\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588 \u2588\u2588\u2551 \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\n\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n`.trim();\n\nexport interface ZnifferEventCallbacks {\n\tready: () => void;\n\terror: (err: Error) => void;\n\tframe: (frame: Frame, rawData: Uint8Array) => void;\n\t\"corrupted frame\": (err: CorruptedFrame, rawData: Uint8Array) => void;\n}\n\nexport type ZnifferEvents = Extract<keyof ZnifferEventCallbacks, string>;\n\ninterface AwaitedThing<T> {\n\thandler: (thing: T) => void;\n\ttimeout?: NodeJS.Timeout;\n\tpredicate: (msg: T) => boolean;\n}\n\ntype AwaitedMessageEntry = AwaitedThing<ZnifferMessage>;\n\nexport interface ZnifferOptions {\n\t/**\n\t * Optional log configuration\n\t */\n\tlogConfig?: Partial<LogConfig>;\n\n\t/** Security keys for decrypting Z-Wave traffic */\n\tsecurityKeys?: ZWaveOptions[\"securityKeys\"];\n\t/** Security keys for decrypting Z-Wave Long Range traffic */\n\tsecurityKeysLongRange?: ZWaveOptions[\"securityKeysLongRange\"];\n\n\t/**\n\t * The RSSI values reported by the Zniffer are not actual RSSI values.\n\t * They can be converted to dBm, but the conversion is chip dependent and not documented for 700/800 series Zniffers.\n\t *\n\t * Set this option to `true` enable the conversion. Otherwise the raw values from the Zniffer will be used.\n\t */\n\tconvertRSSI?: boolean;\n\n\t/**\n\t * The frequency to initialize the Zniffer with. If not specified, the current setting will be kept.\n\t *\n\t * On 700/800 series Zniffers, this value matches the {@link ZnifferRegion}.\n\t *\n\t * On 400/500 series Zniffers, the value is firmware-specific.\n\t * Supported regions and their names have to be queried using the `getFrequencies` and `getFrequencyInfo(frequency)` commands.\n\t */\n\tdefaultFrequency?: number;\n\n\t/** Limit the number of frames that are kept in memory. */\n\tmaxCapturedFrames?: number;\n}\n\nfunction is700PlusSeries(\n\tchipType: string | UnknownZWaveChipType,\n): boolean {\n\tif (typeof chipType !== \"string\") {\n\t\treturn chipType.type >= 0x07;\n\t}\n\n\tconst chipTypeNumeric = getChipTypeAndVersion(chipType);\n\tif (chipTypeNumeric) {\n\t\treturn chipTypeNumeric.type >= 0x07;\n\t}\n\n\treturn false;\n}\n\nfunction tryConvertRSSI(\n\trssi: number,\n\tchipType: string | UnknownZWaveChipType,\n): number {\n\t// For 400/500 series, the conversion is documented in the Zniffer user guide.\n\t// The conversion for 700/800 series was reverse-engineered from the Zniffer firmware.\n\t// Here, we assume that only these two representations exist:\n\tif (is700PlusSeries(chipType)) {\n\t\treturn rssi * 4 - 256;\n\t} else {\n\t\treturn rssi * 1.5 - 153.5;\n\t}\n}\n\ninterface CapturedData {\n\ttimestamp: Date;\n\trawData: Uint8Array;\n\tframeData: Uint8Array;\n\tparsedFrame?: Frame | CorruptedFrame;\n}\n\nexport interface CapturedFrame {\n\ttimestamp: Date;\n\tframeData: Uint8Array;\n\tparsedFrame: Frame | CorruptedFrame;\n}\n\nexport class Zniffer extends TypedEventEmitter<ZnifferEventCallbacks> {\n\tpublic constructor(\n\t\tprivate port: string | ZWaveSerialPortImplementation,\n\t\toptions: ZnifferOptions = {},\n\t) {\n\t\tsuper();\n\n\t\t// Ensure the given serial port is valid\n\t\tif (\n\t\t\ttypeof port !== \"string\"\n\t\t\t&& !isZWaveSerialPortImplementation(port)\n\t\t) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`The port must be a string or a valid custom serial port implementation!`,\n\t\t\t\tZWaveErrorCodes.Driver_InvalidOptions,\n\t\t\t);\n\t\t}\n\n\t\t// Initialize logging\n\t\tthis._logContainer = new ZWaveLogContainer(options.logConfig);\n\t\tthis.znifferLog = new ZnifferLogger(this, this._logContainer);\n\n\t\tthis._options = options;\n\n\t\tthis._active = false;\n\n\t\tthis.parsingContext = {\n\t\t\tgetHighestSecurityClass(\n\t\t\t\t_nodeId: number,\n\t\t\t): MaybeNotKnown<SecurityClass> {\n\t\t\t\treturn SecurityClass.S2_AccessControl;\n\t\t\t},\n\n\t\t\thasSecurityClass(\n\t\t\t\t_nodeId: number,\n\t\t\t\t_securityClass: SecurityClass,\n\t\t\t): MaybeNotKnown<boolean> {\n\t\t\t\t// We don't actually know. Attempt parsing with all security classes\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\tsetSecurityClass(\n\t\t\t\t_nodeId: number,\n\t\t\t\t_securityClass: SecurityClass,\n\t\t\t\t_granted: boolean,\n\t\t\t): void {\n\t\t\t\t// Do nothing\n\t\t\t},\n\n\t\t\tgetDeviceConfig(_nodeId: number): DeviceConfig | undefined {\n\t\t\t\t// Disable strict validation while parsing certain CCs\n\t\t\t\t// Most of this stuff isn't actually needed, only the compat flags...\n\t\t\t\treturn new DeviceConfig(\n\t\t\t\t\t\"unknown.json\",\n\t\t\t\t\tfalse,\n\t\t\t\t\t\"UNKNOWN_MANUFACTURER\",\n\t\t\t\t\t0x0000,\n\t\t\t\t\t\"UNKNOWN_PRODUCT\",\n\t\t\t\t\t\"UNKNOWN_DESCRIPTION\",\n\t\t\t\t\t[],\n\t\t\t\t\t{\n\t\t\t\t\t\tmin: \"0.0\",\n\t\t\t\t\t\tmax: \"255.255\",\n\t\t\t\t\t},\n\t\t\t\t\ttrue,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\t// ...down here:\n\t\t\t\t\t{\n\t\t\t\t\t\tdisableStrictEntryControlDataValidation: true,\n\t\t\t\t\t\tdisableStrictMeasurementValidation: true,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate _options: ZnifferOptions;\n\n\t/** The serial port instance */\n\tprivate serial: ZnifferSerialPortBase | undefined;\n\tprivate parsingContext: Omit<\n\t\tCCParsingContext,\n\t\tkeyof HostIDs | \"sourceNodeId\" | \"frameType\" | keyof SecurityManagers\n\t>;\n\n\tprivate _destroyPromise: DeferredPromise<void> | undefined;\n\tprivate get wasDestroyed(): boolean {\n\t\treturn !!this._destroyPromise;\n\t}\n\n\tprivate _chipType: string | UnknownZWaveChipType | undefined;\n\n\tprivate _currentFrequency: number | undefined;\n\t/** The currently configured frequency */\n\tpublic get currentFrequency(): number | undefined {\n\t\treturn this._currentFrequency;\n\t}\n\n\tprivate _supportedFrequencies: Map<number, string> = new Map();\n\t/** A map of supported frequency identifiers and their names */\n\tpublic get supportedFrequencies(): ReadonlyMap<number, string> {\n\t\treturn this._supportedFrequencies;\n\t}\n\n\tprivate _logContainer: ZWaveLogContainer;\n\tprivate znifferLog: ZnifferLogger;\n\n\t/** The security managers for each node */\n\tprivate securityManagers: Map<number, {\n\t\tsecurityManager: SecurityManager | undefined;\n\t\tsecurityManager2: SecurityManager2 | undefined;\n\t\tsecurityManagerLR: SecurityManager2 | undefined;\n\t}> = new Map();\n\n\t/** A list of awaited messages */\n\tprivate awaitedMessages: AwaitedMessageEntry[] = [];\n\n\tprivate _active: boolean;\n\t/** Whether the Zniffer instance is currently capturing */\n\tpublic get active(): boolean {\n\t\treturn this._active;\n\t}\n\n\tprivate _capturedFrames: CapturedData[] = [];\n\n\t/** A list of raw captured frames that can be saved to a .zlf file later */\n\tpublic get capturedFrames(): Readonly<CapturedFrame>[] {\n\t\treturn this._capturedFrames.filter((f) => f.parsedFrame !== undefined)\n\t\t\t.map((f) => ({\n\t\t\t\ttimestamp: f.timestamp,\n\t\t\t\tframeData: f.frameData,\n\t\t\t\tparsedFrame: f.parsedFrame!,\n\t\t\t}));\n\t}\n\n\tpublic async init(): Promise<void> {\n\t\tif (this.wasDestroyed) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The Zniffer was destroyed. Create a new instance and initialize that one.\",\n\t\t\t\tZWaveErrorCodes.Driver_Destroyed,\n\t\t\t);\n\t\t}\n\n\t\t// Open the serial port\n\t\tif (typeof this.port === \"string\") {\n\t\t\tif (this.port.startsWith(\"tcp://\")) {\n\t\t\t\tconst url = new URL(this.port);\n\t\t\t\t// this.znifferLog.print(`opening serial port ${this.port}`);\n\t\t\t\tthis.serial = new ZnifferSocket(\n\t\t\t\t\t{\n\t\t\t\t\t\thost: url.hostname,\n\t\t\t\t\t\tport: parseInt(url.port),\n\t\t\t\t\t},\n\t\t\t\t\tthis._logContainer,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t// this.znifferLog.print(`opening serial port ${this.port}`);\n\t\t\t\tthis.serial = new ZnifferSerialPort(\n\t\t\t\t\tthis.port,\n\t\t\t\t\tthis._logContainer,\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// this.znifferLog.print(\n\t\t\t// \t\"opening serial port using the provided custom implementation\",\n\t\t\t// );\n\t\t\tthis.serial = new ZnifferSerialPortBase(\n\t\t\t\tthis.port,\n\t\t\t\tthis._logContainer,\n\t\t\t);\n\t\t}\n\t\tthis.serial\n\t\t\t.on(\"data\", this.serialport_onData.bind(this))\n\t\t\t.on(\"error\", (err) => {\n\t\t\t\tthis.emit(\"error\", err);\n\t\t\t});\n\n\t\tawait this.serial.open();\n\n\t\tthis.znifferLog.print(logo, \"info\");\n\n\t\tawait this.stop();\n\n\t\tconst versionInfo = await this.getVersion();\n\t\tthis._chipType = versionInfo.chipType;\n\t\tthis.znifferLog.print(\n\t\t\t`received Zniffer info:\n Chip type: ${\n\t\t\t\ttypeof versionInfo.chipType === \"string\"\n\t\t\t\t\t? versionInfo.chipType\n\t\t\t\t\t: `unknown (${num2hex(versionInfo.chipType.type)}, ${\n\t\t\t\t\t\tnum2hex(versionInfo.chipType.version)\n\t\t\t\t\t})`\n\t\t\t}\n Zniffer version: ${versionInfo.majorVersion}.${versionInfo.minorVersion}`,\n\t\t\t\"info\",\n\t\t);\n\n\t\tawait this.setBaudrate(0);\n\n\t\tconst freqs = await this.getFrequencies();\n\t\tthis._currentFrequency = freqs.currentFrequency;\n\t\tif (is700PlusSeries(this._chipType)) {\n\t\t\t// The frequencies match the ZnifferRegion enum\n\t\t\tfor (const freq of freqs.supportedFrequencies) {\n\t\t\t\tthis._supportedFrequencies.set(\n\t\t\t\t\tfreq,\n\t\t\t\t\tgetEnumMemberName(ZnifferRegion, freq),\n\t\t\t\t);\n\t\t\t}\n\t\t\t// ... but there might be unknown regions. Query those from the Zniffer\n\t\t\tconst unknownRegions = freqs.supportedFrequencies.filter((f) =>\n\t\t\t\t!isEnumMember(ZnifferRegion, f)\n\t\t\t);\n\t\t\tfor (const freq of unknownRegions) {\n\t\t\t\tconst freqInfo = await this.getFrequencyInfo(freq);\n\t\t\t\tthis._supportedFrequencies.set(freq, freqInfo.frequencyName);\n\t\t\t}\n\t\t} else if (\n\t\t\t// Version 2.55+ supports querying the frequency names\n\t\t\tsdkVersionGte(\n\t\t\t\t`${versionInfo.majorVersion}.${versionInfo.minorVersion}`,\n\t\t\t\t\"2.55\",\n\t\t\t)\n\t\t) {\n\t\t\t// The frequencies are firmware-specific. Query them from the Zniffer\n\t\t\tfor (const freq of freqs.supportedFrequencies) {\n\t\t\t\tconst freqInfo = await this.getFrequencyInfo(freq);\n\t\t\t\tthis._supportedFrequencies.set(freq, freqInfo.frequencyName);\n\t\t\t}\n\t\t} else {\n\t\t\t// The frequencies match the ZnifferRegionLegacy enum, and their info cannot be queried\n\t\t\tfor (const freq of freqs.supportedFrequencies) {\n\t\t\t\tthis._supportedFrequencies.set(\n\t\t\t\t\tfreq,\n\t\t\t\t\tgetEnumMemberName(ZnifferRegionLegacy, freq),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis.znifferLog.print(\n\t\t\t`received frequency info:\ncurrent frequency: ${\n\t\t\t\tthis._supportedFrequencies.get(freqs.currentFrequency)\n\t\t\t\t\t?? `unknown (${num2hex(freqs.currentFrequency)})`\n\t\t\t}\nsupported frequencies: ${\n\t\t\t\t[...this._supportedFrequencies].map(([region, name]) =>\n\t\t\t\t\t`\\n \u00B7 ${region.toString().padStart(2, \" \")}: ${name}`\n\t\t\t\t).join(\"\")\n\t\t\t}`,\n\t\t\t\"info\",\n\t\t);\n\n\t\tif (\n\t\t\ttypeof this._options.defaultFrequency === \"number\"\n\t\t\t&& freqs.currentFrequency !== this._options.defaultFrequency\n\t\t\t&& this._supportedFrequencies.has(this._options.defaultFrequency)\n\t\t) {\n\t\t\tawait this.setFrequency(this._options.defaultFrequency);\n\t\t}\n\n\t\tthis.emit(\"ready\");\n\t}\n\n\t/**\n\t * Is called when the serial port has received a Zniffer frame\n\t */\n\tprivate async serialport_onData(\n\t\tdata: Uint8Array,\n\t): Promise<void> {\n\t\tlet msg: ZnifferMessage | undefined;\n\t\ttry {\n\t\t\tmsg = ZnifferMessage.parse(data);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (msg.type === ZnifferMessageType.Command) {\n\t\t\tthis.handleResponse(msg);\n\t\t} else {\n\t\t\tconst dataMsg = msg as ZnifferDataMessage;\n\t\t\tconst capture: CapturedData = {\n\t\t\t\ttimestamp: new Date(),\n\t\t\t\trawData: data,\n\t\t\t\tframeData: dataMsg.payload,\n\t\t\t};\n\t\t\tthis._capturedFrames.push(capture);\n\t\t\tif (\n\t\t\t\tthis._options.maxCapturedFrames != undefined\n\t\t\t\t&& this._capturedFrames.length > this._options.maxCapturedFrames\n\t\t\t) {\n\t\t\t\tthis._capturedFrames.shift();\n\t\t\t}\n\t\t\tawait this.handleDataMessage(dataMsg, capture);\n\t\t}\n\t}\n\n\t/**\n\t * Is called when a Request-type message was received\n\t */\n\tprivate handleResponse(msg: ZnifferMessage): void {\n\t\t// Check if we have a dynamic handler waiting for this message\n\t\tfor (const entry of this.awaitedMessages) {\n\t\t\tif (entry.predicate(msg)) {\n\t\t\t\t// We do\n\t\t\t\tentry.handler(msg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Is called when a Request-type message was received\n\t */\n\tprivate async handleDataMessage(\n\t\tmsg: ZnifferDataMessage,\n\t\tcapture: CapturedData,\n\t): Promise<void> {\n\t\ttry {\n\t\t\tlet convertedRSSI: RSSI | undefined;\n\t\t\tif (this._options.convertRSSI && this._chipType) {\n\t\t\t\tconvertedRSSI = tryConvertRSSI(\n\t\t\t\t\tmsg.rssiRaw,\n\t\t\t\t\tthis._chipType,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Short-circuit if we're dealing with beam frames\n\t\t\tif (\n\t\t\t\tmsg.frameType === ZnifferFrameType.BeamStart\n\t\t\t\t|| msg.frameType === ZnifferFrameType.BeamStop\n\t\t\t) {\n\t\t\t\tconst beam = parseBeamFrame(msg);\n\t\t\t\tbeam.frameInfo.rssi = convertedRSSI;\n\n\t\t\t\t// Emit the captured frame in a format that's easier to work with for applications.\n\t\t\t\tthis.znifferLog.beam(beam);\n\t\t\t\tconst frame = beamToFrame(beam);\n\t\t\t\tcapture.parsedFrame = frame;\n\t\t\t\tthis.emit(\"frame\", frame, capture.frameData);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only handle messages with a valid checksum, expose the others as CRC errors\n\t\t\tif (!msg.checksumOK) {\n\t\t\t\tthis.znifferLog.crcError(msg);\n\t\t\t\tconst frame = znifferDataMessageToCorruptedFrame(msg);\n\t\t\t\tcapture.parsedFrame = frame;\n\t\t\t\tthis.emit(\"corrupted frame\", frame, capture.frameData);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst mpdu = parseMPDU(msg);\n\t\t\tmpdu.frameInfo.rssi = convertedRSSI;\n\n\t\t\t// Try to decode the CC while assuming the role of the receiver\n\t\t\tlet destSecurityManager: SecurityManager | undefined;\n\t\t\tlet destSecurityManager2: SecurityManager2 | undefined;\n\t\t\tlet destSecurityManagerLR: SecurityManager2 | undefined;\n\t\t\t// Only frames with a destination node id contains something that requires access to the own node ID\n\t\t\tlet destNodeId = 0xff;\n\n\t\t\tlet cc: CommandClass | undefined;\n\n\t\t\t// FIXME: Cache data => parsed CC, so we can understand re-transmitted S2 frames\n\n\t\t\tif (\n\t\t\t\tmpdu.payload.length > 0\n\t\t\t\t&& mpdu.headerType !== MPDUHeaderType.Acknowledgement\n\t\t\t) {\n\t\t\t\tif (\"destinationNodeId\" in mpdu) {\n\t\t\t\t\tdestNodeId = mpdu.destinationNodeId;\n\t\t\t\t\t({\n\t\t\t\t\t\tsecurityManager: destSecurityManager,\n\t\t\t\t\t\tsecurityManager2: destSecurityManager2,\n\t\t\t\t\t\tsecurityManagerLR: destSecurityManagerLR,\n\t\t\t\t\t} = this.getSecurityManagers(mpdu.destinationNodeId));\n\t\t\t\t}\n\n\t\t\t\t// TODO: Support parsing multicast S2 frames\n\t\t\t\tconst frameType: FrameType =\n\t\t\t\t\tmpdu.headerType === MPDUHeaderType.Multicast\n\t\t\t\t\t\t? \"multicast\"\n\t\t\t\t\t\t: (destNodeId === NODE_ID_BROADCAST\n\t\t\t\t\t\t\t\t|| destNodeId === NODE_ID_BROADCAST_LR)\n\t\t\t\t\t\t? \"broadcast\"\n\t\t\t\t\t\t: \"singlecast\";\n\t\t\t\ttry {\n\t\t\t\t\tcc = await CommandClass.parseAsync(\n\t\t\t\t\t\tmpdu.payload,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\thomeId: mpdu.homeId,\n\t\t\t\t\t\t\townNodeId: destNodeId,\n\t\t\t\t\t\t\tsourceNodeId: mpdu.sourceNodeId,\n\t\t\t\t\t\t\tframeType,\n\t\t\t\t\t\t\tsecurityManager: destSecurityManager,\n\t\t\t\t\t\t\tsecurityManager2: destSecurityManager2,\n\t\t\t\t\t\t\tsecurityManagerLR: destSecurityManagerLR,\n\t\t\t\t\t\t\t...this.parsingContext,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t} catch (e: any) {\n\t\t\t\t\t// Ignore\n\t\t\t\t\tconsole.error(e.stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.znifferLog.mpdu(mpdu, cc);\n\n\t\t\t// Emit the captured frame in a format that's easier to work with for applications.\n\t\t\tconst frame = mpduToFrame(mpdu, cc);\n\t\t\tcapture.parsedFrame = frame;\n\t\t\tthis.emit(\"frame\", frame, capture.frameData);\n\n\t\t\t// Update the security managers when nonces are exchanged, so we can\n\t\t\t// decrypt the communication\n\t\t\tif (cc?.ccId === CommandClasses[\"Security 2\"]) {\n\t\t\t\tconst securityManagers = this.getSecurityManagers(\n\t\t\t\t\tmpdu.sourceNodeId,\n\t\t\t\t);\n\t\t\t\tconst isLR = isLongRangeNodeId(mpdu.sourceNodeId)\n\t\t\t\t\t|| isLongRangeNodeId(destNodeId);\n\t\t\t\tconst senderSecurityManager = isLR\n\t\t\t\t\t? securityManagers.securityManagerLR\n\t\t\t\t\t: securityManagers.securityManager2;\n\t\t\t\tconst destSecurityManager = isLR\n\t\t\t\t\t? destSecurityManagerLR\n\t\t\t\t\t: destSecurityManager2;\n\n\t\t\t\tif (senderSecurityManager && destSecurityManager) {\n\t\t\t\t\tif (cc instanceof Security2CCNonceGet) {\n\t\t\t\t\t\t// Nonce Get -> all nonces are now invalid\n\t\t\t\t\t\tsenderSecurityManager.deleteNonce(destNodeId);\n\t\t\t\t\t\tdestSecurityManager.deleteNonce(mpdu.sourceNodeId);\n\t\t\t\t\t} else if (cc instanceof Security2CCNonceReport && cc.SOS) {\n\t\t\t\t\t\t// Nonce Report (SOS) -> We only know the receiver's nonce\n\t\t\t\t\t\tsenderSecurityManager.setSPANState(destNodeId, {\n\t\t\t\t\t\t\ttype: SPANState.LocalEI,\n\t\t\t\t\t\t\treceiverEI: cc.receiverEI!,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdestSecurityManager.storeRemoteEI(\n\t\t\t\t\t\t\tmpdu.sourceNodeId,\n\t\t\t\t\t\t\tcc.receiverEI!,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (cc instanceof Security2CCMessageEncapsulation) {\n\t\t\t\t\t\tconst senderEI = cc.getSenderEI();\n\t\t\t\t\t\tif (senderEI) {\n\t\t\t\t\t\t\t// The receiver should now have a valid SPAN state, since decoding the S2 CC updates it.\n\t\t\t\t\t\t\t// The security manager for the sender however, does not. Therefore, update it manually,\n\t\t\t\t\t\t\t// if the receiver SPAN is indeed valid.\n\n\t\t\t\t\t\t\tconst receiverSPANState = destSecurityManager\n\t\t\t\t\t\t\t\t.getSPANState(mpdu.sourceNodeId);\n\t\t\t\t\t\t\tif (receiverSPANState.type === SPANState.SPAN) {\n\t\t\t\t\t\t\t\tsenderSecurityManager.setSPANState(\n\t\t\t\t\t\t\t\t\tdestNodeId,\n\t\t\t\t\t\t\t\t\treceiverSPANState,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tcc?.ccId === CommandClasses.Security\n\t\t\t\t&& cc instanceof SecurityCCNonceReport\n\t\t\t) {\n\t\t\t\tconst senderSecurityManager =\n\t\t\t\t\tthis.getSecurityManagers(mpdu.sourceNodeId).securityManager;\n\t\t\t\tconst destSecurityManager =\n\t\t\t\t\tthis.getSecurityManagers(destNodeId).securityManager;\n\n\t\t\t\tif (senderSecurityManager && destSecurityManager) {\n\t\t\t\t\t// Both nodes have a shared nonce now\n\t\t\t\t\tsenderSecurityManager.setNonce(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tissuer: mpdu.sourceNodeId,\n\t\t\t\t\t\t\tnonceId: senderSecurityManager.getNonceId(\n\t\t\t\t\t\t\t\tcc.nonce,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnonce: cc.nonce,\n\t\t\t\t\t\t\treceiver: destNodeId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ free: true },\n\t\t\t\t\t);\n\n\t\t\t\t\tdestSecurityManager.setNonce(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tissuer: mpdu.sourceNodeId,\n\t\t\t\t\t\t\tnonceId: senderSecurityManager.getNonceId(\n\t\t\t\t\t\t\t\tcc.nonce,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnonce: cc.nonce,\n\t\t\t\t\t\t\treceiver: destNodeId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ free: true },\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e: any) {\n\t\t\tconsole.error(e);\n\t\t}\n\t}\n\n\t/**\n\t * Waits until a certain serial message is received or a timeout has elapsed. Returns the received message.\n\t * @param timeout The number of milliseconds to wait. If the timeout elapses, the returned promise will be rejected\n\t * @param predicate A predicate function to test all incoming messages.\n\t */\n\tprivate waitForMessage<T extends ZnifferMessage>(\n\t\tpredicate: (msg: ZnifferMessage) => boolean,\n\t\ttimeout: number,\n\t): Promise<T> {\n\t\treturn new Promise<T>((resolve, reject) => {\n\t\t\tconst promise = createDeferredPromise<ZnifferMessage>();\n\t\t\tconst entry: AwaitedMessageEntry = {\n\t\t\t\tpredicate,\n\t\t\t\thandler: (msg) => promise.resolve(msg),\n\t\t\t\ttimeout: undefined,\n\t\t\t};\n\t\t\tthis.awaitedMessages.push(entry);\n\t\t\tconst removeEntry = () => {\n\t\t\t\tif (entry.timeout) clearTimeout(entry.timeout);\n\t\t\t\tconst index = this.awaitedMessages.indexOf(entry);\n\t\t\t\tif (index !== -1) this.awaitedMessages.splice(index, 1);\n\t\t\t};\n\t\t\t// When the timeout elapses, remove the wait entry and reject the returned Promise\n\t\t\tentry.timeout = setTimeout(() => {\n\t\t\t\tremoveEntry();\n\t\t\t\treject(\n\t\t\t\t\tnew ZWaveError(\n\t\t\t\t\t\t`Received no matching message within the provided timeout!`,\n\t\t\t\t\t\tZWaveErrorCodes.Controller_Timeout,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}, timeout);\n\t\t\t// When the promise is resolved, remove the wait entry and resolve the returned Promise\n\t\t\tvoid promise.then((cc) => {\n\t\t\t\tremoveEntry();\n\t\t\t\tresolve(cc as T);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate async getVersion() {\n\t\tconst req = new ZnifferGetVersionRequest();\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tconst res = await this.waitForMessage<ZnifferGetVersionResponse>(\n\t\t\t(msg) => msg instanceof ZnifferGetVersionResponse,\n\t\t\t1000,\n\t\t);\n\n\t\treturn pick(res, [\"chipType\", \"majorVersion\", \"minorVersion\"]);\n\t}\n\n\tprivate async getFrequencies() {\n\t\tconst req = new ZnifferGetFrequenciesRequest();\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tconst res = await this.waitForMessage<ZnifferGetFrequenciesResponse>(\n\t\t\t(msg) => msg instanceof ZnifferGetFrequenciesResponse,\n\t\t\t1000,\n\t\t);\n\n\t\treturn pick(res, [\n\t\t\t\"currentFrequency\",\n\t\t\t\"supportedFrequencies\",\n\t\t]);\n\t}\n\n\tpublic async setFrequency(frequency: number): Promise<void> {\n\t\tconst req = new ZnifferSetFrequencyRequest({ frequency });\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tawait this.waitForMessage<ZnifferSetFrequencyResponse>(\n\t\t\t(msg) => msg instanceof ZnifferSetFrequencyResponse,\n\t\t\t1000,\n\t\t);\n\t\tthis._currentFrequency = frequency;\n\t}\n\n\tprivate async getFrequencyInfo(frequency: number) {\n\t\tconst req = new ZnifferGetFrequencyInfoRequest({ frequency });\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tconst res = await this.waitForMessage<ZnifferGetFrequencyInfoResponse>(\n\t\t\t(msg) =>\n\t\t\t\tmsg instanceof ZnifferGetFrequencyInfoResponse\n\t\t\t\t&& msg.frequency === frequency,\n\t\t\t1000,\n\t\t);\n\n\t\treturn pick(res, [\"numChannels\", \"frequencyName\"]);\n\t}\n\n\t/** Starts the capture and discards all previously captured frames */\n\tpublic async start(): Promise<void> {\n\t\tif (this.wasDestroyed) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The Zniffer is not ready or has been destroyed\",\n\t\t\t\tZWaveErrorCodes.Driver_NotReady,\n\t\t\t);\n\t\t}\n\n\t\tif (this._active) return;\n\t\tthis._capturedFrames = [];\n\t\tthis._active = true;\n\n\t\tconst req = new ZnifferStartRequest();\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tawait this.waitForMessage<ZnifferStartResponse>(\n\t\t\t(msg) => msg instanceof ZnifferStartResponse,\n\t\t\t1000,\n\t\t);\n\t}\n\n\tpublic async stop(): Promise<void> {\n\t\tif (!this._active) return;\n\t\tthis._active = false;\n\n\t\tif (!this.serial) return;\n\n\t\tconst req = new ZnifferStopRequest();\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tawait this.waitForMessage<ZnifferStopResponse>(\n\t\t\t(msg) => msg instanceof ZnifferStopResponse,\n\t\t\t1000,\n\t\t);\n\t}\n\n\tprivate async setBaudrate(baudrate: 0): Promise<void> {\n\t\tconst req = new ZnifferSetBaudRateRequest({ baudrate });\n\t\tawait this.serial?.writeAsync(req.serialize());\n\t\tawait this.waitForMessage<ZnifferSetBaudRateResponse>(\n\t\t\t(msg) => msg instanceof ZnifferSetBaudRateResponse,\n\t\t\t1000,\n\t\t);\n\t}\n\n\tprivate getSecurityManagers(\n\t\tsourceNodeId: number,\n\t) {\n\t\tif (this.securityManagers.has(sourceNodeId)) {\n\t\t\treturn this.securityManagers.get(sourceNodeId)!;\n\t\t}\n\t\t// Initialize security\n\t\t// Set up the S0 security manager. We can only do that after the controller\n\t\t// interview because we need to know the controller node id.\n\t\tconst S0Key = this._options.securityKeys?.S0_Legacy;\n\t\tlet securityManager: SecurityManager | undefined;\n\t\tif (S0Key) {\n\t\t\t// this.znifferLog.print(\n\t\t\t// \t\"Network key for S0 configured, enabling S0 security manager...\",\n\t\t\t// );\n\t\t\tsecurityManager = new SecurityManager({\n\t\t\t\tnetworkKey: S0Key,\n\t\t\t\t// FIXME: Track nonces separately for each destination node\n\t\t\t\townNodeId: sourceNodeId,\n\t\t\t\tnonceTimeout: Number.POSITIVE_INFINITY,\n\t\t\t});\n\t\t\t// } else {\n\t\t\t// \tthis.znifferLog.print(\n\t\t\t// \t\t\"No network key for S0 configured, cannot decrypt communication from secure (S0) devices!\",\n\t\t\t// \t\t\"warn\",\n\t\t\t// \t);\n\t\t}\n\n\t\tlet securityManager2: SecurityManager2 | undefined;\n\t\tif (\n\t\t\tthis._options.securityKeys\n\t\t\t// Only set it up if we have security keys for at least one S2 security class\n\t\t\t&& Object.keys(this._options.securityKeys).some(\n\t\t\t\t(key) =>\n\t\t\t\t\tkey.startsWith(\"S2_\")\n\t\t\t\t\t&& key in SecurityClass\n\t\t\t\t\t&& securityClassIsS2((SecurityClass as any)[key]),\n\t\t\t)\n\t\t) {\n\t\t\t// this.znifferLog.print(\n\t\t\t// \t\"At least one network key for S2 configured, enabling S2 security manager...\",\n\t\t\t// );\n\t\t\tsecurityManager2 = new SecurityManager2();\n\t\t\t// Small hack: Zniffer does not care about S2 duplicates\n\t\t\tsecurityManager2.isDuplicateSinglecast = () => false;\n\n\t\t\t// Set up all keys\n\t\t\tfor (\n\t\t\t\tconst secClass of [\n\t\t\t\t\t\"S2_Unauthenticated\",\n\t\t\t\t\t\"S2_Authenticated\",\n\t\t\t\t\t\"S2_AccessControl\",\n\t\t\t\t\t\"S0_Legacy\",\n\t\t\t\t] as const\n\t\t\t) {\n\t\t\t\tconst key = this._options.securityKeys[secClass];\n\t\t\t\tif (key) {\n\t\t\t\t\tsecurityManager2.setKey(SecurityClass[secClass], key);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// } else {\n\t\t\t// \tthis.znifferLog.print(\n\t\t\t// \t\t\"No network key for S2 configured, cannot decrypt communication from secure (S2) devices!\",\n\t\t\t// \t\t\"warn\",\n\t\t\t// \t);\n\t\t}\n\n\t\tlet securityManagerLR: SecurityManager2 | undefined;\n\t\tif (\n\t\t\tthis._options.securityKeysLongRange?.S2_AccessControl\n\t\t\t|| this._options.securityKeysLongRange?.S2_Authenticated\n\t\t) {\n\t\t\t// this.znifferLog.print(\n\t\t\t// \t\"At least one network key for Z-Wave Long Range configured, enabling security manager...\",\n\t\t\t// );\n\t\t\tsecurityManagerLR = new SecurityManager2();\n\t\t\t// Small hack: Zniffer does not care about S2 duplicates\n\t\t\tsecurityManagerLR.isDuplicateSinglecast = () => false;\n\n\t\t\t// Set up all keys\n\t\t\tif (this._options.securityKeysLongRange?.S2_AccessControl) {\n\t\t\t\tsecurityManagerLR.setKey(\n\t\t\t\t\tSecurityClass.S2_AccessControl,\n\t\t\t\t\tthis._options.securityKeysLongRange.S2_AccessControl,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (this._options.securityKeysLongRange?.S2_Authenticated) {\n\t\t\t\tsecurityManagerLR.setKey(\n\t\t\t\t\tSecurityClass.S2_Authenticated,\n\t\t\t\t\tthis._options.securityKeysLongRange.S2_Authenticated,\n\t\t\t\t);\n\t\t\t}\n\t\t\t// } else {\n\t\t\t// \tthis.znifferLog.print(\n\t\t\t// \t\t\"No network key for Z-Wave Long Range configured, cannot decrypt Long Range communication!\",\n\t\t\t// \t\t\"warn\",\n\t\t\t// \t);\n\t\t}\n\n\t\tconst ret = {\n\t\t\tsecurityManager,\n\t\t\tsecurityManager2,\n\t\t\tsecurityManagerLR,\n\t\t};\n\t\tthis.securityManagers.set(sourceNodeId, ret);\n\t\treturn ret;\n\t}\n\n\t/** Clears the list of captured frames */\n\tpublic clearCapturedFrames(): void {\n\t\tthis._capturedFrames = [];\n\t}\n\n\t/**\n\t * Get the captured frames in the official Zniffer application format.\n\t * @param frameFilter Optional predicate function to filter the frames included in the capture\n\t */\n\tpublic getCaptureAsZLFBuffer(\n\t\tframeFilter?: (frame: CapturedFrame) => boolean,\n\t): Uint8Array {\n\t\t// Mimics the current Zniffer software, without using features like sessions and comments\n\t\tconst header = new Bytes(2048).fill(0);\n\t\theader[0] = 0x68; // zniffer version\n\t\theader.writeUInt16BE(0x2312, 0x07fe); // checksum\n\t\tlet filteredFrames = this._capturedFrames;\n\t\tif (frameFilter) {\n\t\t\tfilteredFrames = filteredFrames.filter((f) =>\n\t\t\t\t// Always include Zniffer-protocol frames\n\t\t\t\tf.parsedFrame == undefined\n\t\t\t\t// Apply the filter to all other frames\n\t\t\t\t|| frameFilter({\n\t\t\t\t\tframeData: f.frameData,\n\t\t\t\t\tparsedFrame: f.parsedFrame,\n\t\t\t\t\ttimestamp: f.timestamp,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\treturn Bytes.concat([\n\t\t\theader,\n\t\t\t...filteredFrames.map(captureToZLFEntry),\n\t\t]);\n\t}\n\n\t/**\n\t * Saves the captured frames in a `.zlf` file that can be read by the official Zniffer application.\n\t * @param frameFilter Optional predicate function to filter the frames included in the capture\n\t */\n\tpublic async saveCaptureToFile(\n\t\tfilePath: string,\n\t\tframeFilter?: (frame: CapturedFrame) => boolean,\n\t): Promise<void> {\n\t\tawait fs.writeFile(filePath, this.getCaptureAsZLFBuffer(frameFilter));\n\t}\n\n\t/**\n\t * Terminates the Zniffer instance and closes the underlying serial connection.\n\t * Must be called under any circumstances.\n\t */\n\tpublic async destroy(): Promise<void> {\n\t\t// Ensure this is only called once and all subsequent calls block\n\t\tif (this._destroyPromise) return this._destroyPromise;\n\t\tthis._destroyPromise = createDeferredPromise();\n\n\t\tthis.znifferLog.print(\"Destroying Zniffer instance...\");\n\n\t\tif (this._active) {\n\t\t\tawait this.stop().catch(noop);\n\t\t}\n\n\t\tif (this.serial != undefined) {\n\t\t\t// Avoid spewing errors if the port was in the middle of receiving something\n\t\t\tthis.serial.removeAllListeners();\n\t\t\tif (this.serial.isOpen) await this.serial.close();\n\t\t\tthis.serial = undefined;\n\t\t}\n\n\t\tthis.znifferLog.print(\"Zniffer instance destroyed\");\n\n\t\t// destroy loggers as the very last thing\n\t\tthis._logContainer.destroy();\n\n\t\tthis._destroyPromise.resolve();\n\t}\n}\n\nfunction captureToZLFEntry(\n\tcapture: CapturedData,\n): Uint8Array {\n\tconst buffer = new Bytes(14 + capture.rawData.length).fill(0);\n\t// Convert the date to a .NET datetime\n\tlet ticks = BigInt(capture.timestamp.getTime()) * 10000n\n\t\t+ 621355968000000000n;\n\tticks = ticks | 4000000000000000n; // marks the time as .NET DateTimeKind.Local\n\n\tbuffer.writeBigUInt64LE(ticks, 0);\n\tconst direction = 0b0000_0000; // inbound, outbound would be 0b1000_0000\n\n\tbuffer[8] = direction | 0x01; // dir + session ID\n\tbuffer[9] = capture.rawData.length;\n\t// bytes 10-12 are empty\n\tbuffer.set(capture.rawData, 13);\n\tbuffer[buffer.length - 1] = 0xfe; // end of frame\n\treturn buffer;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAAA,gBAMO;AACP,oBAA6B;AAC7B,kBAuBO;AACP,IAAAA,eAA8B;AAE9B,oBAwBO;AACP,oBAQO;AACP,8BAGO;AACP,sBAAe;AAEf,qBAA8B;AAC9B,kBAQO;AAEP,MAAM,OAAe;;;;;;;EAOnB,KAAI;AAoDN,SAAS,gBACR,UAAuC;AAEvC,MAAI,OAAO,aAAa,UAAU;AACjC,WAAO,SAAS,QAAQ;EACzB;AAEA,QAAM,sBAAkB,mCAAsB,QAAQ;AACtD,MAAI,iBAAiB;AACpB,WAAO,gBAAgB,QAAQ;EAChC;AAEA,SAAO;AACR;AAEA,SAAS,eACR,MACA,UAAuC;AAKvC,MAAI,gBAAgB,QAAQ,GAAG;AAC9B,WAAO,OAAO,IAAI;EACnB,OAAO;AACN,WAAO,OAAO,MAAM;EACrB;AACD;AAeM,MAAO,gBAAgB,gCAAwC;EAE3D;EADT,YACS,MACR,UAA0B,CAAA,GAAE;AAE5B,UAAK;AAHG,SAAA,OAAA;AAMR,QACC,OAAO,SAAS,YACb,KAAC,+CAAgC,IAAI,GACvC;AACD,YAAM,IAAI,uBACT,2EACA,4BAAgB,qBAAqB;IAEvC;AAGA,SAAK,gBAAgB,IAAI,8BAAkB,QAAQ,SAAS;AAC5D,SAAK,aAAa,IAAI,6BAAc,MAAM,KAAK,aAAa;AAE5D,SAAK,WAAW;AAEhB,SAAK,UAAU;AAEf,SAAK,iBAAiB;MACrB,wBACC,SAAe;AAEf,eAAO,0BAAc;MACtB;MAEA,iBACC,SACA,gBAA6B;AAG7B,eAAO;MACR;MAEA,iBACC,SACA,gBACA,UAAiB;MAGlB;MAEA,gBAAgB,SAAe;AAG9B,eAAO,IAAI;UACV;UACA;UACA;UACA;UACA;UACA;UACA,CAAA;UACA;YACC,KAAK;YACL,KAAK;;UAEN;UACA;UACA;UACA;UACA;;UAEA;YACC,yCAAyC;YACzC,oCAAoC;;QACpC;MAEH;;EAEF;EAEQ;;EAGA;EACA;EAKA;EACR,IAAY,eAAY;AACvB,WAAO,CAAC,CAAC,KAAK;EACf;EAEQ;EAEA;;EAER,IAAW,mBAAgB;AAC1B,WAAO,KAAK;EACb;EAEQ,wBAA6C,oBAAI,IAAG;;EAE5D,IAAW,uBAAoB;AAC9B,WAAO,KAAK;EACb;EAEQ;EACA;;EAGA,mBAIH,oBAAI,IAAG;;EAGJ,kBAAyC,CAAA;EAEzC;;EAER,IAAW,SAAM;AAChB,WAAO,KAAK;EACb;EAEQ,kBAAkC,CAAA;;EAG1C,IAAW,iBAAc;AACxB,WAAO,KAAK,gBAAgB,OAAO,CAAC,MAAM,EAAE,gBAAgB,MAAS,EACnE,IAAI,CAAC,OAAO;MACZ,WAAW,EAAE;MACb,WAAW,EAAE;MACb,aAAa,EAAE;MACd;EACJ;EAEO,MAAM,OAAI;AAChB,QAAI,KAAK,cAAc;AACtB,YAAM,IAAI,uBACT,6EACA,4BAAgB,gBAAgB;IAElC;AAGA,QAAI,OAAO,KAAK,SAAS,UAAU;AAClC,UAAI,KAAK,KAAK,WAAW,QAAQ,GAAG;AACnC,cAAM,MAAM,IAAI,IAAI,KAAK,IAAI;AAE7B,aAAK,SAAS,IAAI,4BACjB;UACC,MAAM,IAAI;UACV,MAAM,SAAS,IAAI,IAAI;WAExB,KAAK,aAAa;MAEpB,OAAO;AAEN,aAAK,SAAS,IAAI,gCACjB,KAAK,MACL,KAAK,aAAa;MAEpB;IACD,OAAO;AAIN,WAAK,SAAS,IAAI,oCACjB,KAAK,MACL,KAAK,aAAa;IAEpB;AACA,SAAK,OACH,GAAG,QAAQ,KAAK,kBAAkB,KAAK,IAAI,CAAC,EAC5C,GAAG,SAAS,CAAC,QAAO;AACpB,WAAK,KAAK,SAAS,GAAG;IACvB,CAAC;AAEF,UAAM,KAAK,OAAO,KAAI;AAEtB,SAAK,WAAW,MAAM,MAAM,MAAM;AAElC,UAAM,KAAK,KAAI;AAEf,UAAM,cAAc,MAAM,KAAK,WAAU;AACzC,SAAK,YAAY,YAAY;AAC7B,SAAK,WAAW,MACf;qBAEC,OAAO,YAAY,aAAa,WAC7B,YAAY,WACZ,gBAAY,uBAAQ,YAAY,SAAS,IAAI,CAAC,SAC/C,uBAAQ,YAAY,SAAS,OAAO,CACrC,GACF;qBACkB,YAAY,YAAY,IAAI,YAAY,YAAY,IACtE,MAAM;AAGP,UAAM,KAAK,YAAY,CAAC;AAExB,UAAM,QAAQ,MAAM,KAAK,eAAc;AACvC,SAAK,oBAAoB,MAAM;AAC/B,QAAI,gBAAgB,KAAK,SAAS,GAAG;AAEpC,iBAAW,QAAQ,MAAM,sBAAsB;AAC9C,aAAK,sBAAsB,IAC1B,UACA,iCAAkB,2BAAe,IAAI,CAAC;MAExC;AAEA,YAAM,iBAAiB,MAAM,qBAAqB,OAAO,CAAC,MACzD,KAAC,4BAAa,2BAAe,CAAC,CAAC;AAEhC,iBAAW,QAAQ,gBAAgB;AAClC,cAAM,WAAW,MAAM,KAAK,iBAAiB,IAAI;AACjD,aAAK,sBAAsB,IAAI,MAAM,SAAS,aAAa;MAC5D;IACD;;UAEC,4BACC,GAAG,YAAY,YAAY,IAAI,YAAY,YAAY,IACvD,MAAM;MAEN;AAED,iBAAW,QAAQ,MAAM,sBAAsB;AAC9C,cAAM,WAAW,MAAM,KAAK,iBAAiB,IAAI;AACjD,aAAK,sBAAsB,IAAI,MAAM,SAAS,aAAa;MAC5D;IACD,OAAO;AAEN,iBAAW,QAAQ,MAAM,sBAAsB;AAC9C,aAAK,sBAAsB,IAC1B,UACA,iCAAkB,iCAAqB,IAAI,CAAC;MAE9C;IACD;AAEA,SAAK,WAAW,MACf;yBAEC,KAAK,sBAAsB,IAAI,MAAM,gBAAgB,KACjD,gBAAY,uBAAQ,MAAM,gBAAgB,CAAC,GAChD;yBAEC,CAAC,GAAG,KAAK,qBAAqB,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,MACjD;SAAS,OAAO,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,EACrD,KAAK,EAAE,CACV,IACA,MAAM;AAGP,QACC,OAAO,KAAK,SAAS,qBAAqB,YACvC,MAAM,qBAAqB,KAAK,SAAS,oBACzC,KAAK,sBAAsB,IAAI,KAAK,SAAS,gBAAgB,GAC/D;AACD,YAAM,KAAK,aAAa,KAAK,SAAS,gBAAgB;IACvD;AAEA,SAAK,KAAK,OAAO;EAClB;;;;EAKQ,MAAM,kBACb,MAAgB;AAEhB,QAAI;AACJ,QAAI;AACH,YAAM,6BAAe,MAAM,IAAI;IAChC,SAAS,GAAQ;AAChB,cAAQ,MAAM,CAAC;AACf;IACD;AAEA,QAAI,IAAI,SAAS,iCAAmB,SAAS;AAC5C,WAAK,eAAe,GAAG;IACxB,OAAO;AACN,YAAM,UAAU;AAChB,YAAM,UAAwB;QAC7B,WAAW,oBAAI,KAAI;QACnB,SAAS;QACT,WAAW,QAAQ;;AAEpB,WAAK,gBAAgB,KAAK,OAAO;AACjC,UACC,KAAK,SAAS,qBAAqB,UAChC,KAAK,gBAAgB,SAAS,KAAK,SAAS,mBAC9C;AACD,aAAK,gBAAgB,MAAK;MAC3B;AACA,YAAM,KAAK,kBAAkB,SAAS,OAAO;IAC9C;EACD;;;;EAKQ,eAAe,KAAmB;AAEzC,eAAW,SAAS,KAAK,iBAAiB;AACzC,UAAI,MAAM,UAAU,GAAG,GAAG;AAEzB,cAAM,QAAQ,GAAG;AACjB;MACD;IACD;EACD;;;;EAKQ,MAAM,kBACb,KACA,SAAqB;AAErB,QAAI;AACH,UAAI;AACJ,UAAI,KAAK,SAAS,eAAe,KAAK,WAAW;AAChD,wBAAgB,eACf,IAAI,SACJ,KAAK,SAAS;MAEhB;AAGA,UACC,IAAI,cAAc,+BAAiB,aAChC,IAAI,cAAc,+BAAiB,UACrC;AACD,cAAM,WAAO,4BAAe,GAAG;AAC/B,aAAK,UAAU,OAAO;AAGtB,aAAK,WAAW,KAAK,IAAI;AACzB,cAAMC,aAAQ,yBAAY,IAAI;AAC9B,gBAAQ,cAAcA;AACtB,aAAK,KAAK,SAASA,QAAO,QAAQ,SAAS;AAC3C;MACD;AAGA,UAAI,CAAC,IAAI,YAAY;AACpB,aAAK,WAAW,SAAS,GAAG;AAC5B,cAAMA,aAAQ,gDAAmC,GAAG;AACpD,gBAAQ,cAAcA;AACtB,aAAK,KAAK,mBAAmBA,QAAO,QAAQ,SAAS;AACrD;MACD;AAEA,YAAM,WAAO,uBAAU,GAAG;AAC1B,WAAK,UAAU,OAAO;AAGtB,UAAI;AACJ,UAAI;AACJ,UAAI;AAEJ,UAAI,aAAa;AAEjB,UAAI;AAIJ,UACC,KAAK,QAAQ,SAAS,KACnB,KAAK,eAAe,2BAAe,iBACrC;AACD,YAAI,uBAAuB,MAAM;AAChC,uBAAa,KAAK;AAClB,WAAC;YACA,iBAAiB;YACjB,kBAAkB;YAClB,mBAAmB;cAChB,KAAK,oBAAoB,KAAK,iBAAiB;QACpD;AAGA,cAAM,YACL,KAAK,eAAe,2BAAe,YAChC,cACC,eAAe,iCACb,eAAe,mCAClB,cACA;AACJ,YAAI;AACH,eAAK,MAAM,uBAAa,WACvB,KAAK,SACL;YACC,QAAQ,KAAK;YACb,WAAW;YACX,cAAc,KAAK;YACnB;YACA,iBAAiB;YACjB,kBAAkB;YAClB,mBAAmB;YACnB,GAAG,KAAK;WACR;QAEH,SAAS,GAAQ;AAEhB,kBAAQ,MAAM,EAAE,KAAK;QACtB;MACD;AAEA,WAAK,WAAW,KAAK,MAAM,EAAE;AAG7B,YAAM,YAAQ,yBAAY,MAAM,EAAE;AAClC,cAAQ,cAAc;AACtB,WAAK,KAAK,SAAS,OAAO,QAAQ,SAAS;AAI3C,UAAI,IAAI,SAAS,2BAAe,YAAY,GAAG;AAC9C,cAAM,mBAAmB,KAAK,oBAC7B,KAAK,YAAY;AAElB,cAAM,WAAO,+BAAkB,KAAK,YAAY,SAC5C,+BAAkB,UAAU;AAChC,cAAM,wBAAwB,OAC3B,iBAAiB,oBACjB,iBAAiB;AACpB,cAAMC,uBAAsB,OACzB,wBACA;AAEH,YAAI,yBAAyBA,sBAAqB;AACjD,cAAI,cAAc,+BAAqB;AAEtC,kCAAsB,YAAY,UAAU;AAC5C,YAAAA,qBAAoB,YAAY,KAAK,YAAY;UAClD,WAAW,cAAc,oCAA0B,GAAG,KAAK;AAE1D,kCAAsB,aAAa,YAAY;cAC9C,MAAM,sBAAU;cAChB,YAAY,GAAG;aACf;AACD,YAAAA,qBAAoB,cACnB,KAAK,cACL,GAAG,UAAW;UAEhB,WAAW,cAAc,2CAAiC;AACzD,kBAAM,WAAW,GAAG,YAAW;AAC/B,gBAAI,UAAU;AAKb,oBAAM,oBAAoBA,qBACxB,aAAa,KAAK,YAAY;AAChC,kBAAI,kBAAkB,SAAS,sBAAU,MAAM;AAC9C,sCAAsB,aACrB,YACA,iBAAiB;cAEnB;YACD;UACD;QACD;MACD,WACC,IAAI,SAAS,2BAAe,YACzB,cAAc,iCAChB;AACD,cAAM,wBACL,KAAK,oBAAoB,KAAK,YAAY,EAAE;AAC7C,cAAMA,uBACL,KAAK,oBAAoB,UAAU,EAAE;AAEtC,YAAI,yBAAyBA,sBAAqB;AAEjD,gCAAsB,SACrB;YACC,QAAQ,KAAK;YACb,SAAS,sBAAsB,WAC9B,GAAG,KAAK;aAGV;YACC,OAAO,GAAG;YACV,UAAU;aAEX,EAAE,MAAM,KAAI,CAAE;AAGf,UAAAA,qBAAoB,SACnB;YACC,QAAQ,KAAK;YACb,SAAS,sBAAsB,WAC9B,GAAG,KAAK;aAGV;YACC,OAAO,GAAG;YACV,UAAU;aAEX,EAAE,MAAM,KAAI,CAAE;QAEhB;MACD;IACD,SAAS,GAAQ;AAChB,cAAQ,MAAM,CAAC;IAChB;EACD;;;;;;EAOQ,eACP,WACA,SAAe;AAEf,WAAO,IAAI,QAAW,CAAC,SAAS,WAAU;AACzC,YAAM,cAAU,+CAAqB;AACrC,YAAM,QAA6B;QAClC;QACA,SAAS,CAAC,QAAQ,QAAQ,QAAQ,GAAG;QACrC,SAAS;;AAEV,WAAK,gBAAgB,KAAK,KAAK;AAC/B,YAAM,cAAc,MAAK;AACxB,YAAI,MAAM;AAAS,uBAAa,MAAM,OAAO;AAC7C,cAAM,QAAQ,KAAK,gBAAgB,QAAQ,KAAK;AAChD,YAAI,UAAU;AAAI,eAAK,gBAAgB,OAAO,OAAO,CAAC;MACvD;AAEA,YAAM,UAAU,WAAW,MAAK;AAC/B,oBAAW;AACX,eACC,IAAI,uBACH,6DACA,4BAAgB,kBAAkB,CAClC;MAEH,GAAG,OAAO;AAEV,WAAK,QAAQ,KAAK,CAAC,OAAM;AACxB,oBAAW;AACX,gBAAQ,EAAO;MAChB,CAAC;IACF,CAAC;EACF;EAEQ,MAAM,aAAU;AACvB,UAAM,MAAM,IAAI,uCAAwB;AACxC,UAAM,KAAK,QAAQ,WAAW,IAAI,UAAS,CAAE;AAC7C,UAAM,MAAM,MAAM,KAAK,eACtB,CAAC,QAAQ,eAAe,yCACxB,GAAI;AAGL,eAAO,oBAAK,KAAK,CAAC,YAAY,gBAAgB,cAAc,CAAC;EAC9D;EAEQ,MAAM,iBAAc;AAC3B,UAAM,MAAM,IAAI,2CAA4B;AAC5C,UAAM,KAAK,QAAQ,WAAW,IAAI,UAAS,CAAE;AAC7C,UAAM,MAAM,MAAM,KAAK,eACtB,CAAC,QAAQ,eAAe,6CACxB,GAAI;AAGL,eAAO,oBAAK,KAAK;MAChB;MACA;KACA;EACF;EAEO,MAAM,aAAa,WAAiB;AAC1C,UAAM,MAAM,IAAI,yCAA2B,EAAE,UAAS,CAAE;AACxD,UAAM,KAAK,QAAQ,WAAW,IAAI,UAAS,CAAE;AAC7C,UAAM,KAAK,eACV,CAAC,QAAQ,eAAe,2CACxB,GAAI;AAEL,SAAK,oBAAoB;EAC1B;EAEQ,MAAM,iBAAiB,WAAiB;AAC/C,UAAM,MAAM,IAAI,6CAA+B,EAAE,UAAS,CAAE;AAC5D,UAAM,KAAK,QAAQ,WAAW,IAAI,UAAS,CAAE;AAC7C,UAAM,MAAM,MAAM,KAAK,eACtB,CAAC,QACA,eAAe,iDACZ,IAAI,cAAc,WACtB,GAAI;AAGL,eAAO,oBAAK,KAAK,CAAC,eAAe,eAAe,CAAC;EAClD;;EAGO,MAAM,QAAK;AACjB,QAAI,KAAK,cAAc;AACtB,YAAM,IAAI,uBACT,kDACA,4BAAgB,eAAe;IAEjC;AAEA,QAAI,KAAK;AAAS;AAClB,SAAK,kBAAkB,CAAA;AACvB,SAAK,UAAU;AAEf,UAAM,MAAM,IAAI,kCAAmB;AACnC,UAAM,KAAK,QAAQ,WAAW,IAAI,UAAS,CAAE;AAC7C,UAAM,KAAK,eACV,CAAC,QAAQ,eAAe,oCACxB,GAAI;EAEN;EAEO,MAAM,OAAI;AAChB,QAAI,CAAC,KAAK;AAAS;AACnB,SAAK,UAAU;AAEf,QAAI,CAAC,KAAK;AAAQ;AAElB,UAAM,MAAM,IAAI,iCAAkB;AAClC,UAAM,KAAK,QAAQ,WAAW,IAAI,UAAS,CAAE;AAC7C,UAAM,KAAK,eACV,CAAC,QAAQ,eAAe,mCACxB,GAAI;EAEN;EAEQ,MAAM,YAAY,UAAW;AACpC,UAAM,MAAM,IAAI,wCAA0B,EAAE,SAAQ,CAAE;AACtD,UAAM,KAAK,QAAQ,WAAW,IAAI,UAAS,CAAE;AAC7C,UAAM,KAAK,eACV,CAAC,QAAQ,eAAe,0CACxB,GAAI;EAEN;EAEQ,oBACP,cAAoB;AAEpB,QAAI,KAAK,iBAAiB,IAAI,YAAY,GAAG;AAC5C,aAAO,KAAK,iBAAiB,IAAI,YAAY;IAC9C;AAIA,UAAM,QAAQ,KAAK,SAAS,cAAc;AAC1C,QAAI;AACJ,QAAI,OAAO;AAIV,wBAAkB,IAAI,4BAAgB;QACrC,YAAY;;QAEZ,WAAW;QACX,cAAc,OAAO;OACrB;IAMF;AAEA,QAAI;AACJ,QACC,KAAK,SAAS,gBAEX,OAAO,KAAK,KAAK,SAAS,YAAY,EAAE,KAC1C,CAAC,QACA,IAAI,WAAW,KAAK,KACjB,OAAO,iCACP,+BAAmB,0BAAsB,GAAG,CAAC,CAAC,GAElD;AAID,yBAAmB,IAAI,6BAAgB;AAEvC,uBAAiB,wBAAwB,MAAM;AAG/C,iBACO,YAAY;QACjB;QACA;QACA;QACA;SAEA;AACD,cAAM,MAAM,KAAK,SAAS,aAAa,QAAQ;AAC/C,YAAI,KAAK;AACR,2BAAiB,OAAO,0BAAc,QAAQ,GAAG,GAAG;QACrD;MACD;IAMD;AAEA,QAAI;AACJ,QACC,KAAK,SAAS,uBAAuB,oBAClC,KAAK,SAAS,uBAAuB,kBACvC;AAID,0BAAoB,IAAI,6BAAgB;AAExC,wBAAkB,wBAAwB,MAAM;AAGhD,UAAI,KAAK,SAAS,uBAAuB,kBAAkB;AAC1D,0BAAkB,OACjB,0BAAc,kBACd,KAAK,SAAS,sBAAsB,gBAAgB;MAEtD;AACA,UAAI,KAAK,SAAS,uBAAuB,kBAAkB;AAC1D,0BAAkB,OACjB,0BAAc,kBACd,KAAK,SAAS,sBAAsB,gBAAgB;MAEtD;IAMD;AAEA,UAAM,MAAM;MACX;MACA;MACA;;AAED,SAAK,iBAAiB,IAAI,cAAc,GAAG;AAC3C,WAAO;EACR;;EAGO,sBAAmB;AACzB,SAAK,kBAAkB,CAAA;EACxB;;;;;EAMO,sBACN,aAA+C;AAG/C,UAAM,SAAS,IAAI,oBAAM,IAAI,EAAE,KAAK,CAAC;AACrC,WAAO,CAAC,IAAI;AACZ,WAAO,cAAc,MAAQ,IAAM;AACnC,QAAI,iBAAiB,KAAK;AAC1B,QAAI,aAAa;AAChB,uBAAiB,eAAe,OAAO,CAAC;;QAEvC,EAAE,eAAe,UAEd,YAAY;UACd,WAAW,EAAE;UACb,aAAa,EAAE;UACf,WAAW,EAAE;SACb;OAAC;IAEJ;AACA,WAAO,oBAAM,OAAO;MACnB;MACA,GAAG,eAAe,IAAI,iBAAiB;KACvC;EACF;;;;;EAMO,MAAM,kBACZ,UACA,aAA+C;AAE/C,UAAM,gBAAAC,QAAG,UAAU,UAAU,KAAK,sBAAsB,WAAW,CAAC;EACrE;;;;;EAMO,MAAM,UAAO;AAEnB,QAAI,KAAK;AAAiB,aAAO,KAAK;AACtC,SAAK,sBAAkB,+CAAqB;AAE5C,SAAK,WAAW,MAAM,gCAAgC;AAEtD,QAAI,KAAK,SAAS;AACjB,YAAM,KAAK,KAAI,EAAG,MAAM,kBAAI;IAC7B;AAEA,QAAI,KAAK,UAAU,QAAW;AAE7B,WAAK,OAAO,mBAAkB;AAC9B,UAAI,KAAK,OAAO;AAAQ,cAAM,KAAK,OAAO,MAAK;AAC/C,WAAK,SAAS;IACf;AAEA,SAAK,WAAW,MAAM,4BAA4B;AAGlD,SAAK,cAAc,QAAO;AAE1B,SAAK,gBAAgB,QAAO;EAC7B;;AAGD,SAAS,kBACR,SAAqB;AAErB,QAAM,SAAS,IAAI,oBAAM,KAAK,QAAQ,QAAQ,MAAM,EAAE,KAAK,CAAC;AAE5D,MAAI,QAAQ,OAAO,QAAQ,UAAU,QAAO,CAAE,IAAI,SAC/C;AACH,UAAQ,QAAQ;AAEhB,SAAO,iBAAiB,OAAO,CAAC;AAChC,QAAM,YAAY;AAElB,SAAO,CAAC,IAAI,YAAY;AACxB,SAAO,CAAC,IAAI,QAAQ,QAAQ;AAE5B,SAAO,IAAI,QAAQ,SAAS,EAAE;AAC9B,SAAO,OAAO,SAAS,CAAC,IAAI;AAC5B,SAAO;AACR;",
6
6
  "names": ["import_core", "frame", "destSecurityManager", "fs"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  export { MessagePriority } from "@zwave-js/core";
2
2
  export type { SendMessageOptions } from "@zwave-js/core";
3
- export type { FileSystem } from "@zwave-js/host/safe";
3
+ export type { FileSystem } from "@zwave-js/core";
4
4
  export { FunctionType, Message, MessageType } from "@zwave-js/serial";
5
5
  export type { MessageOptions, ResponsePredicate, ResponseRole, } from "@zwave-js/serial";
6
6
  export { type CommandRequest, type ContainsCC, type ContainsSerializedCC, type MessageWithCC, containsCC, containsSerializedCC, isCommandRequest, isMessageWithCC, } from "@zwave-js/serial/serialapi";
@@ -1 +1 @@
1
- {"version":3,"file":"Driver.d.ts","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EACX,cAAc,EACd,iBAAiB,EACjB,YAAY,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACrE,YAAY,EACX,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,GACZ,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"Driver.d.ts","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EACX,cAAc,EACd,iBAAiB,EACjB,YAAY,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACrE,YAAY,EACX,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,GACZ,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,3 +1,3 @@
1
- export declare const PACKAGE_VERSION = "14.1.0";
1
+ export declare const PACKAGE_VERSION = "14.2.0";
2
2
  export declare const PACKAGE_NAME = "zwave-js";
3
3
  //# sourceMappingURL=_version.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // This file is auto-generated by the codegen maintenance script
2
- export const PACKAGE_VERSION = "14.1.0";
2
+ export const PACKAGE_VERSION = "14.2.0";
3
3
  export const PACKAGE_NAME = "zwave-js";
4
4
  //# sourceMappingURL=_version.js.map
@@ -21,9 +21,9 @@ import { MOCK_FRAME_ACK_TIMEOUT, MockZWaveFrameType, createMockZWaveRequestFrame
21
21
  import { MockControllerCommunicationState, MockControllerInclusionState, MockControllerStateKeys, } from "./MockControllerState.js";
22
22
  import { determineNIF } from "./NodeInformationFrame.js";
23
23
  function createLazySendDataPayload(controller, node, msg) {
24
- return () => {
24
+ return async () => {
25
25
  try {
26
- const cmd = CommandClass.parse(msg.serializedCC, {
26
+ const cmd = await CommandClass.parseAsync(msg.serializedCC, {
27
27
  sourceNodeId: controller.ownNodeId,
28
28
  __internalIsMockNode: true,
29
29
  ...node.encodingContext,
@@ -1 +1 @@
1
- {"version":3,"file":"MockControllerBehaviors.js","sourceRoot":"","sources":["../../../../src/lib/controller/MockControllerBehaviors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MockControllerBehaviors.js","sourceRoot":"","sources":["../../../../src/lib/controller/MockControllerBehaviors.ts"],"names":[],"mappings":"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"}
@@ -568,7 +568,7 @@ export declare class Driver extends TypedEventEmitter<DriverEventCallbacks> impl
568
568
  computeNetCCPayloadSize(commandOrMsg: CommandClass | (SendDataRequest | SendDataBridgeRequest) & ContainsCC, ignoreEncapsulation?: boolean): number;
569
569
  /** Computes the maximum payload size that can be transmitted with the given message */
570
570
  getMaxPayloadLength(msg: SendDataMessage): number;
571
- exceedsMaxPayloadLength(msg: SendDataMessage): boolean;
571
+ exceedsMaxPayloadLength(msg: SendDataMessage): Promise<boolean>;
572
572
  /** Determines time in milliseconds to wait for a report from a node */
573
573
  getReportTimeout(msg: Message): number;
574
574
  /** Returns the preferred constructor to use for singlecast SendData commands */
@@ -1 +1 @@
1
- {"version":3,"file":"Driver.d.ts","sourceRoot":"","sources":["../../../../src/lib/driver/Driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Driver.d.ts","sourceRoot":"","sources":["../../../../src/lib/driver/Driver.ts"],"names":[],"mappings":"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"}
@@ -2361,7 +2361,7 @@ export class Driver extends TypedEventEmitter {
2361
2361
  msg = Message.parse(data, this.getMessageParsingContext());
2362
2362
  // Parse embedded CCs
2363
2363
  if (isCommandRequest(msg) && containsSerializedCC(msg)) {
2364
- msg.command = CommandClass.parse(msg.serializedCC, {
2364
+ msg.command = await CommandClass.parseAsync(msg.serializedCC, {
2365
2365
  ...this.getCCParsingContext(),
2366
2366
  sourceNodeId: msg.getNodeId(),
2367
2367
  frameType: msg.frameType,
@@ -2472,7 +2472,7 @@ export class Driver extends TypedEventEmitter {
2472
2472
  });
2473
2473
  }
2474
2474
  // Assemble partial CCs on the driver level. Only forward complete messages to the send thread machine
2475
- if (!this.assemblePartialCCs(msg)) {
2475
+ if (!(await this.assemblePartialCCs(msg))) {
2476
2476
  // Check if a message timer needs to be refreshed.
2477
2477
  for (const entry of this.awaitedMessages) {
2478
2478
  if (entry.refreshPredicate?.(msg)) {
@@ -3043,7 +3043,7 @@ export class Driver extends TypedEventEmitter {
3043
3043
  * Assembles partial CCs of in a message body. Returns `true` when the message is complete and can be handled further.
3044
3044
  * If the message expects another partial one, this returns `false`.
3045
3045
  */
3046
- assemblePartialCCs(msg) {
3046
+ async assemblePartialCCs(msg) {
3047
3047
  let command = msg.command;
3048
3048
  // We search for the every CC that provides us with a session ID
3049
3049
  // There might be newly-completed CCs that contain a partial CC,
@@ -3068,7 +3068,7 @@ export class Driver extends TypedEventEmitter {
3068
3068
  // this is the final one, merge the previous responses
3069
3069
  this.partialCCSessions.delete(partialSessionKey);
3070
3070
  try {
3071
- command.mergePartialCCs(session, {
3071
+ await command.mergePartialCCsAsync(session, {
3072
3072
  ...this.getCCParsingContext(),
3073
3073
  sourceNodeId: msg.command.nodeId,
3074
3074
  frameType: msg.frameType,
@@ -4086,7 +4086,7 @@ ${handlers.length} left`);
4086
4086
  if (msg.needsCallbackId() && !msg.hasCallbackId()) {
4087
4087
  msg.callbackId = this.getNextCallbackId();
4088
4088
  }
4089
- const machine = createSerialAPICommandMachine(msg, msg.serialize(this.getEncodingContext()), {
4089
+ const machine = createSerialAPICommandMachine(msg, await msg.serializeAsync(this.getEncodingContext()), {
4090
4090
  sendData: (data) => this.writeSerial(data),
4091
4091
  sendDataAbort: () => this.abortSendData(),
4092
4092
  notifyUnsolicited: (msg) => {
@@ -4506,7 +4506,7 @@ ${handlers.length} left`);
4506
4506
  async abortSendData() {
4507
4507
  try {
4508
4508
  const abort = new SendDataAbort();
4509
- await this.writeSerial(abort.serialize(this.getEncodingContext()));
4509
+ await this.writeSerial(await abort.serializeAsync(this.getEncodingContext()));
4510
4510
  this.driverLog.logMessage(abort, {
4511
4511
  direction: "outbound",
4512
4512
  });
@@ -5054,9 +5054,9 @@ ${handlers.length} left`);
5054
5054
  return maxExplorerPayloadMulticast + 8;
5055
5055
  }
5056
5056
  }
5057
- exceedsMaxPayloadLength(msg) {
5058
- return msg.serializeCC(this.getEncodingContext()).length
5059
- > this.getMaxPayloadLength(msg);
5057
+ async exceedsMaxPayloadLength(msg) {
5058
+ const serializedCC = await msg.serializeCCAsync(this.getEncodingContext());
5059
+ return serializedCC.length > this.getMaxPayloadLength(msg);
5060
5060
  }
5061
5061
  /** Determines time in milliseconds to wait for a report from a node */
5062
5062
  getReportTimeout(msg) {