@zwave-js/cc 15.24.2 → 15.25.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.
- package/build/cjs/cc/AssociationCC.d.ts +1 -1
- package/build/cjs/cc/AssociationCC.js +6 -3
- package/build/cjs/cc/AssociationCC.js.map +2 -2
- package/build/cjs/cc/AssociationGroupInfoCC.js +6 -1
- package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
- package/build/cjs/cc/BarrierOperatorCC.js +1 -0
- package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
- package/build/cjs/cc/BinarySensorCC.js +1 -0
- package/build/cjs/cc/BinarySensorCC.js.map +2 -2
- package/build/cjs/cc/ColorSwitchCC.js +6 -2
- package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
- package/build/cjs/cc/ConfigurationCC.d.ts +14 -3
- package/build/cjs/cc/ConfigurationCC.js +65 -19
- package/build/cjs/cc/ConfigurationCC.js.map +2 -2
- package/build/cjs/cc/IndicatorCC.js +7 -3
- package/build/cjs/cc/IndicatorCC.js.map +2 -2
- package/build/cjs/cc/IrrigationCC.js +6 -2
- package/build/cjs/cc/IrrigationCC.js.map +2 -2
- package/build/cjs/cc/LanguageCC.js +2 -0
- package/build/cjs/cc/LanguageCC.js.map +2 -2
- package/build/cjs/cc/MeterCC.js +6 -1
- package/build/cjs/cc/MeterCC.js.map +2 -2
- package/build/cjs/cc/MultiChannelAssociationCC.d.ts +1 -1
- package/build/cjs/cc/MultiChannelAssociationCC.js +7 -4
- package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
- package/build/cjs/cc/MultiChannelCC.d.ts +1 -1
- package/build/cjs/cc/MultiChannelCC.js +4 -2
- package/build/cjs/cc/MultiChannelCC.js.map +2 -2
- package/build/cjs/cc/MultilevelSensorCC.js +7 -3
- package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
- package/build/cjs/cc/NodeNamingCC.js +3 -20
- package/build/cjs/cc/NodeNamingCC.js.map +2 -2
- package/build/cjs/cc/NotificationCC.js +10 -2
- package/build/cjs/cc/NotificationCC.js.map +2 -2
- package/build/cjs/cc/SceneControllerConfigurationCC.js +1 -0
- package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
- package/build/cjs/cc/ScheduleEntryLockCC.js +3 -0
- package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
- package/build/cjs/cc/SecurityCC.d.ts +2 -2
- package/build/cjs/cc/SecurityCC.js +6 -4
- package/build/cjs/cc/SecurityCC.js.map +2 -2
- package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +1 -1
- package/build/cjs/cc/ThermostatOperatingStateCC.js +2 -2
- package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
- package/build/cjs/cc/ThermostatSetpointCC.js +8 -3
- package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
- package/build/cjs/cc/TimeCC.js +1 -0
- package/build/cjs/cc/TimeCC.js.map +2 -2
- package/build/cjs/cc/TimeParametersCC.js +1 -0
- package/build/cjs/cc/TimeParametersCC.js.map +2 -2
- package/build/cjs/cc/TransportServiceCC.d.ts +0 -14
- package/build/cjs/cc/TransportServiceCC.js +0 -41
- package/build/cjs/cc/TransportServiceCC.js.map +2 -2
- package/build/cjs/cc/UserCodeCC.d.ts +2 -1
- package/build/cjs/cc/UserCodeCC.js +40 -1
- package/build/cjs/cc/UserCodeCC.js.map +2 -2
- package/build/cjs/cc/UserCredentialCC.d.ts +2 -2
- package/build/cjs/cc/UserCredentialCC.js +18 -2
- package/build/cjs/cc/UserCredentialCC.js.map +2 -2
- package/build/cjs/cc/VersionCC.js +12 -5
- package/build/cjs/cc/VersionCC.js.map +2 -2
- package/build/cjs/cc/WindowCoveringCC.js +8 -4
- package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
- package/build/cjs/cc/ZWaveProtocolCC.d.ts +2 -0
- package/build/cjs/cc/ZWaveProtocolCC.js +4 -0
- package/build/cjs/cc/ZWaveProtocolCC.js.map +2 -2
- package/build/cjs/lib/CommandClass.d.ts +15 -6
- package/build/cjs/lib/CommandClass.js +10 -5
- package/build/cjs/lib/CommandClass.js.map +2 -2
- package/build/cjs/lib/serializers.js +1 -0
- package/build/cjs/lib/serializers.js.map +2 -2
- package/build/cjs/lib/traits.d.ts +16 -1
- package/build/esm/cc/AssociationCC.d.ts +1 -1
- package/build/esm/cc/AssociationCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationCC.js +6 -3
- package/build/esm/cc/AssociationCC.js.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.js +9 -1
- package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.js +1 -0
- package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
- package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySensorCC.js +1 -0
- package/build/esm/cc/BinarySensorCC.js.map +1 -1
- package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/ColorSwitchCC.js +6 -2
- package/build/esm/cc/ColorSwitchCC.js.map +1 -1
- package/build/esm/cc/ConfigurationCC.d.ts +14 -3
- package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/ConfigurationCC.js +98 -25
- package/build/esm/cc/ConfigurationCC.js.map +1 -1
- package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
- package/build/esm/cc/IndicatorCC.js +8 -3
- package/build/esm/cc/IndicatorCC.js.map +1 -1
- package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
- package/build/esm/cc/IrrigationCC.js +6 -2
- package/build/esm/cc/IrrigationCC.js.map +1 -1
- package/build/esm/cc/LanguageCC.d.ts.map +1 -1
- package/build/esm/cc/LanguageCC.js +4 -0
- package/build/esm/cc/LanguageCC.js.map +1 -1
- package/build/esm/cc/MeterCC.d.ts.map +1 -1
- package/build/esm/cc/MeterCC.js +6 -1
- package/build/esm/cc/MeterCC.js.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.d.ts +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.js +9 -4
- package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
- package/build/esm/cc/MultiChannelCC.d.ts +1 -1
- package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelCC.js +4 -2
- package/build/esm/cc/MultiChannelCC.js.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.js +7 -3
- package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
- package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
- package/build/esm/cc/NodeNamingCC.js +3 -22
- package/build/esm/cc/NodeNamingCC.js.map +1 -1
- package/build/esm/cc/NotificationCC.d.ts.map +1 -1
- package/build/esm/cc/NotificationCC.js +14 -2
- package/build/esm/cc/NotificationCC.js.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.js +1 -0
- package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.js +5 -0
- package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
- package/build/esm/cc/SecurityCC.d.ts +2 -2
- package/build/esm/cc/SecurityCC.d.ts.map +1 -1
- package/build/esm/cc/SecurityCC.js +7 -4
- package/build/esm/cc/SecurityCC.js.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.d.ts +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.js +2 -2
- package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.js +10 -3
- package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
- package/build/esm/cc/TimeCC.d.ts.map +1 -1
- package/build/esm/cc/TimeCC.js +1 -0
- package/build/esm/cc/TimeCC.js.map +1 -1
- package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
- package/build/esm/cc/TimeParametersCC.js +1 -0
- package/build/esm/cc/TimeParametersCC.js.map +1 -1
- package/build/esm/cc/TransportServiceCC.d.ts +0 -14
- package/build/esm/cc/TransportServiceCC.d.ts.map +1 -1
- package/build/esm/cc/TransportServiceCC.js +1 -54
- package/build/esm/cc/TransportServiceCC.js.map +1 -1
- package/build/esm/cc/UserCodeCC.d.ts +2 -1
- package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
- package/build/esm/cc/UserCodeCC.js +48 -0
- package/build/esm/cc/UserCodeCC.js.map +1 -1
- package/build/esm/cc/UserCredentialCC.d.ts +2 -2
- package/build/esm/cc/UserCredentialCC.d.ts.map +1 -1
- package/build/esm/cc/UserCredentialCC.js +25 -2
- package/build/esm/cc/UserCredentialCC.js.map +1 -1
- package/build/esm/cc/VersionCC.d.ts.map +1 -1
- package/build/esm/cc/VersionCC.js +21 -6
- package/build/esm/cc/VersionCC.js.map +1 -1
- package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
- package/build/esm/cc/WindowCoveringCC.js +10 -6
- package/build/esm/cc/WindowCoveringCC.js.map +1 -1
- package/build/esm/cc/ZWaveProtocolCC.d.ts +2 -0
- package/build/esm/cc/ZWaveProtocolCC.d.ts.map +1 -1
- package/build/esm/cc/ZWaveProtocolCC.js +4 -0
- package/build/esm/cc/ZWaveProtocolCC.js.map +1 -1
- package/build/esm/lib/CommandClass.d.ts +15 -6
- package/build/esm/lib/CommandClass.d.ts.map +1 -1
- package/build/esm/lib/CommandClass.js +10 -5
- package/build/esm/lib/CommandClass.js.map +1 -1
- package/build/esm/lib/serializers.d.ts.map +1 -1
- package/build/esm/lib/serializers.js +3 -1
- package/build/esm/lib/serializers.js.map +1 -1
- package/build/esm/lib/traits.d.ts +16 -1
- package/build/esm/lib/traits.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -268,6 +268,11 @@ let VersionCC = (() => {
|
|
|
268
268
|
if (supportedVersion > 0) {
|
|
269
269
|
if (cc === import_core.CommandClasses.Basic) {
|
|
270
270
|
endpoint.addCC(cc, { version: supportedVersion });
|
|
271
|
+
} else if (endpoint.controlsCC(cc) && !endpoint.supportsCC(cc)) {
|
|
272
|
+
endpoint.addCC(cc, {
|
|
273
|
+
isControlled: true,
|
|
274
|
+
version: supportedVersion
|
|
275
|
+
});
|
|
271
276
|
} else {
|
|
272
277
|
endpoint.addCC(cc, {
|
|
273
278
|
isSupported: true,
|
|
@@ -329,11 +334,9 @@ let VersionCC = (() => {
|
|
|
329
334
|
message: "querying CC versions...",
|
|
330
335
|
direction: "outbound"
|
|
331
336
|
});
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
await queryCCVersion(cc);
|
|
336
|
-
}
|
|
337
|
+
const ccsToQuery = [];
|
|
338
|
+
if (this.endpointIndex === 0 || node.getCCVersion(import_core.CommandClasses.Basic) === 0) {
|
|
339
|
+
ccsToQuery.push(import_core.CommandClasses.Basic);
|
|
337
340
|
}
|
|
338
341
|
for (const [cc] of endpoint.getCCs()) {
|
|
339
342
|
if (cc === import_core.CommandClasses.Version)
|
|
@@ -342,7 +345,11 @@ let VersionCC = (() => {
|
|
|
342
345
|
continue;
|
|
343
346
|
if (this.endpointIndex > 0 && node.getCCVersion(cc) > 0)
|
|
344
347
|
continue;
|
|
348
|
+
ccsToQuery.push(cc);
|
|
349
|
+
}
|
|
350
|
+
for (const [i, cc] of ccsToQuery.entries()) {
|
|
345
351
|
await queryCCVersion(cc);
|
|
352
|
+
node.reportInterviewProgress(i + 1, ccsToQuery.length);
|
|
346
353
|
}
|
|
347
354
|
if (this.endpointIndex === 0 && api.version >= 3) {
|
|
348
355
|
ctx.logNode(node.id, {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src_gen/cc/VersionCC.ts"],
|
|
4
|
-
"sourcesContent": ["import * as __validateArgs from \"./VersionCC._validateArgs.js\";\nconst { validateArgs_VersionCCAPI_sendReport, validateArgs_VersionCCAPI_getCCVersion, validateArgs_VersionCCAPI_reportCCVersion } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, SecurityClass, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, ZWaveLibraryTypes, enumValuesToMetadataStates, getCCName, securityClassIsS2, securityClassOrder, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, type BytesView, getEnumMemberName, num2hex, pick, } from \"@zwave-js/shared\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, getImplementedVersion, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { VersionCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { VersionCCValues } from \"./_CCValues.generated.js\";\nexport { VersionCCValues };\nfunction parseVersion(buffer: BytesView): string {\n if (buffer[0] === 0 && buffer[1] === 0 && buffer[2] === 0)\n return \"unused\";\n return `${buffer[0]}.${buffer[1]}.${buffer[2]}`;\n}\n// @noSetValueAPI This CC is read-only\n@API(CommandClasses.Version)\nexport class VersionCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: VersionCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case VersionCommand.Get:\n case VersionCommand.Report:\n case VersionCommand.CommandClassGet:\n case VersionCommand.CommandClassReport:\n return true; // This is mandatory\n case VersionCommand.CapabilitiesGet:\n case VersionCommand.CapabilitiesReport:\n case VersionCommand.ZWaveSoftwareReport:\n return this.version >= 3;\n case VersionCommand.ZWaveSoftwareGet: {\n return this.getValueDB().getValue<boolean>(VersionCCValues.supportsZWaveSoftwareGet.endpoint(this.endpoint.index));\n }\n }\n return super.supportsCommand(cmd);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.Get);\n const cc = new VersionCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"libraryType\",\n \"protocolVersion\",\n \"firmwareVersions\",\n \"hardwareVersion\",\n ]);\n }\n }\n @validateArgs_VersionCCAPI_sendReport()\n public async sendReport(options: VersionCCReportOptions): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.Report);\n const cc = new VersionCCReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_VersionCCAPI_getCCVersion()\n public async getCCVersion(requestedCC: CommandClasses): Promise<MaybeNotKnown<number>> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CommandClassGet);\n const cc = new VersionCCCommandClassGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n requestedCC,\n });\n const response = await this.host.sendCommand<VersionCCCommandClassReport>(cc, this.commandOptions);\n return response?.ccVersion;\n }\n @validateArgs_VersionCCAPI_reportCCVersion()\n /**\n * @param version The version to report. If not given, the implemented version will be used for the report.\n */\n public async reportCCVersion(requestedCC: CommandClasses, version?: number): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CommandClassReport);\n let ccVersion: number;\n switch (requestedCC) {\n case CommandClasses[\"Z-Wave Protocol\"]:\n case CommandClasses[\"Z-Wave Long Range\"]:\n // These two are only for internal use\n ccVersion = 0;\n break;\n case CommandClasses.Hail:\n case CommandClasses[\"Manufacturer Proprietary\"]:\n // These CCs are obsolete, we cannot enter them in the certification portal\n // but not doing so fails a certification test. Just respond that they\n // are not supported or controlled\n ccVersion = 0;\n break;\n default:\n ccVersion = version ?? getImplementedVersion(requestedCC);\n break;\n }\n const cc = new VersionCCCommandClassReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n requestedCC,\n ccVersion,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getCapabilities() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CapabilitiesGet);\n const cc = new VersionCCCapabilitiesGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCCapabilitiesReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"supportsZWaveSoftwareGet\"]);\n }\n }\n public async reportCapabilities(): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CapabilitiesReport);\n const cc = new VersionCCCapabilitiesReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n // At this time, we do not support responding to Z-Wave Software Get\n supportsZWaveSoftwareGet: false,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getZWaveSoftware() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.ZWaveSoftwareGet);\n const cc = new VersionCCZWaveSoftwareGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCZWaveSoftwareReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"sdkVersion\",\n \"applicationFrameworkAPIVersion\",\n \"applicationFrameworkBuildNumber\",\n \"hostInterfaceVersion\",\n \"hostInterfaceBuildNumber\",\n \"zWaveProtocolVersion\",\n \"zWaveProtocolBuildNumber\",\n \"applicationVersion\",\n \"applicationBuildNumber\",\n ]);\n }\n }\n}\n@commandClass(CommandClasses.Version)\n@implementedVersion(3)\n@ccValues(VersionCCValues)\nexport class VersionCC extends CommandClass {\n declare ccCommand: VersionCommand;\n public determineRequiredCCInterviews(): readonly CommandClasses[] {\n // VersionCC must be the 2nd CC after ManufacturerSpecificCC\n return [CommandClasses[\"Manufacturer Specific\"]];\n }\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n // SDS13782: In a Multi Channel device, the Version Command Class MUST be supported by the Root Device, while\n // the Version Command Class SHOULD NOT be supported by individual End Points.\n //\n // There may be cases where a given Command Class is not implemented by the Root Device of a Multi\n // Channel device. However, the Root Device MUST respond to Version requests for any Command Class\n // implemented by the Multi Channel device; also in cases where the actual Command Class is only\n // provided by an End Point.\n const endpoint = this.getEndpoint(ctx)!;\n // Use the CC API of the root device for all queries\n const api = CCAPI.create(CommandClasses.Version, ctx, node).withOptions({\n priority: MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n const queryCCVersion = async (cc: CommandClasses): Promise<void> => {\n // Only query CCs we support. Theoretically we could skip queries where we support only V1,\n // but there are Z-Wave certification tests that require us to query all CCs\n const maxImplemented = getImplementedVersion(cc);\n if (maxImplemented === 0) {\n ctx.logNode(node.id, ` skipping query for ${CommandClasses[cc]} (${num2hex(cc)}) because max implemented version is ${maxImplemented}`);\n return;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: ` querying the CC version for ${getCCName(cc)}...`,\n direction: \"outbound\",\n });\n // query the CC version\n const supportedVersion = await api.getCCVersion(cc);\n if (supportedVersion != undefined) {\n // Remember which CC version this endpoint supports\n let logMessage: string;\n if (supportedVersion > 0) {\n // Basic CC has special rules for when it is considered supported\n // Therefore we mark all other CCs as supported, but not Basic CC,\n // for which support is determined later.\n if (cc === CommandClasses.Basic) {\n endpoint.addCC(cc, { version: supportedVersion });\n }\n else {\n endpoint.addCC(cc, {\n isSupported: true,\n version: supportedVersion,\n });\n }\n logMessage = ` supports CC ${CommandClasses[cc]} (${num2hex(cc)}) in version ${supportedVersion}`;\n }\n else {\n // We were lied to - the NIF said this CC is supported, now the node claims it isn't\n // Make sure this is not a critical CC, which must be supported though\n if (cc === CommandClasses.Version\n || cc === CommandClasses[\"Manufacturer Specific\"]) {\n logMessage = ` claims NOT to support CC ${CommandClasses[cc]} (${num2hex(cc)}), but it must. Assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`;\n endpoint.addCC(cc, { version: 1 });\n }\n else if ((cc === CommandClasses.Security\n && node.hasSecurityClass(SecurityClass.S0_Legacy))\n || (cc === CommandClasses[\"Security 2\"]\n && securityClassOrder.some((sc) => securityClassIsS2(sc)\n && node.hasSecurityClass(sc)))) {\n logMessage = ` claims NOT to support CC ${CommandClasses[cc]} (${num2hex(cc)}), but it is known to support it. Assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`;\n endpoint.addCC(cc, { version: 1 });\n }\n else {\n logMessage = ` does NOT support CC ${CommandClasses[cc]} (${num2hex(cc)})`;\n endpoint.removeCC(cc);\n }\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `CC version query for ${getCCName(cc)} timed out - assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`,\n level: \"warn\",\n });\n endpoint.addCC(cc, { version: 1 });\n }\n };\n // Version information should not change (except for firmware updates)\n // And it is only relevant on the root endpoint (the node)\n if (this.endpointIndex === 0) {\n // Step 1: Query Version CC version\n await queryCCVersion(CommandClasses.Version);\n // Step 2: Query node versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying node versions...\",\n direction: \"outbound\",\n });\n const versionGetResponse = await api.get();\n if (versionGetResponse) {\n let logMessage = `received response for node versions:\n library type: ${ZWaveLibraryTypes[versionGetResponse.libraryType]} (${num2hex(versionGetResponse.libraryType)})\n protocol version: ${versionGetResponse.protocolVersion}\n firmware versions: ${versionGetResponse.firmwareVersions.join(\", \")}`;\n if (versionGetResponse.hardwareVersion != undefined) {\n logMessage +=\n `\\n hardware version: ${versionGetResponse.hardwareVersion}`;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n // Step 3: Query all other CC versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying CC versions...\",\n direction: \"outbound\",\n });\n // Basic CC is not included in the NIF, so it won't be returned by endpoint.getCCs() at this point\n {\n const cc = CommandClasses.Basic;\n // Skip the query of endpoint CCs that are also supported by the root device\n if (this.endpointIndex === 0 || node.getCCVersion(cc) === 0) {\n await queryCCVersion(cc);\n }\n }\n for (const [cc] of endpoint.getCCs()) {\n // We already queried the Version CC version at the start of this interview\n if (cc === CommandClasses.Version)\n continue;\n // And we queried Basic CC just before this\n if (cc === CommandClasses.Basic)\n continue;\n // Skip the query of endpoint CCs that are also supported by the root device\n if (this.endpointIndex > 0 && node.getCCVersion(cc) > 0)\n continue;\n await queryCCVersion(cc);\n }\n // Step 4: Query VersionCC capabilities (root device only)\n if (this.endpointIndex === 0 && api.version >= 3) {\n // Step 4a: Support for SoftwareGet\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying if Z-Wave Software Get is supported...\",\n direction: \"outbound\",\n });\n const capsResponse = await api.getCapabilities();\n if (capsResponse) {\n const { supportsZWaveSoftwareGet } = capsResponse;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Z-Wave Software Get is${supportsZWaveSoftwareGet ? \"\" : \" not\"} supported`,\n direction: \"inbound\",\n });\n if (supportsZWaveSoftwareGet) {\n // Step 4b: Query Z-Wave Software versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying Z-Wave software versions...\",\n direction: \"outbound\",\n });\n await api.getZWaveSoftware();\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"received Z-Wave software versions\",\n direction: \"inbound\",\n });\n }\n }\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface VersionCCReportOptions {\n libraryType: ZWaveLibraryTypes;\n protocolVersion: string;\n firmwareVersions: string[];\n hardwareVersion?: number;\n}\n@CCCommand(VersionCommand.Report)\n@ccValueProperty(\"libraryType\", VersionCCValues.libraryType)\n@ccValueProperty(\"protocolVersion\", VersionCCValues.protocolVersion)\n@ccValueProperty(\"firmwareVersions\", VersionCCValues.firmwareVersions)\n@ccValueProperty(\"hardwareVersion\", VersionCCValues.hardwareVersion)\nexport class VersionCCReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCReportOptions>) {\n super(options);\n if (!/^\\d+\\.\\d+(\\.\\d+)?$/.test(options.protocolVersion)) {\n throw new ZWaveError(`protocolVersion must be a string in the format \"major.minor\" or \"major.minor.patch\", received \"${options.protocolVersion}\"`, ZWaveErrorCodes.Argument_Invalid);\n }\n else if (!options.firmwareVersions.every((fw) => /^\\d+\\.\\d+(\\.\\d+)?$/.test(fw))) {\n throw new ZWaveError(`firmwareVersions must be an array of strings in the format \"major.minor\" or \"major.minor.patch\", received \"${JSON.stringify(options.firmwareVersions)}\"`, ZWaveErrorCodes.Argument_Invalid);\n }\n this.libraryType = options.libraryType;\n this.protocolVersion = options.protocolVersion;\n this.firmwareVersions = options.firmwareVersions;\n this.hardwareVersion = options.hardwareVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCReport {\n validatePayload(raw.payload.length >= 5);\n const libraryType: ZWaveLibraryTypes = raw.payload[0];\n const protocolVersion = `${raw.payload[1]}.${raw.payload[2]}`;\n const firmwareVersions = [`${raw.payload[3]}.${raw.payload[4]}`];\n let hardwareVersion: number | undefined;\n if (raw.payload.length >= 7) {\n // V2+\n hardwareVersion = raw.payload[5];\n const additionalFirmwares = raw.payload[6];\n validatePayload(raw.payload.length >= 7 + 2 * additionalFirmwares);\n for (let i = 0; i < additionalFirmwares; i++) {\n firmwareVersions.push(`${raw.payload[7 + 2 * i]}.${raw.payload[7 + 2 * i + 1]}`);\n }\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n libraryType,\n protocolVersion,\n firmwareVersions,\n hardwareVersion,\n });\n }\n public readonly libraryType: ZWaveLibraryTypes;\n public readonly protocolVersion: string;\n public readonly firmwareVersions: string[];\n public readonly hardwareVersion: number | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.libraryType,\n ...this.protocolVersion\n .split(\".\")\n .map((n) => parseInt(n))\n .slice(0, 2),\n ...this.firmwareVersions[0]\n .split(\".\")\n .map((n) => parseInt(n))\n .slice(0, 2),\n this.hardwareVersion ?? 0x00,\n this.firmwareVersions.length - 1,\n ]);\n if (this.firmwareVersions.length > 1) {\n const firmwaresBuffer = new Bytes((this.firmwareVersions.length - 1) * 2);\n for (let i = 1; i < this.firmwareVersions.length; i++) {\n const [major, minor] = this.firmwareVersions[i]\n .split(\".\")\n .map((n) => parseInt(n));\n firmwaresBuffer[2 * (i - 1)] = major;\n firmwaresBuffer[2 * (i - 1) + 1] = minor;\n }\n this.payload = Bytes.concat([this.payload, firmwaresBuffer]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"library type\": getEnumMemberName(ZWaveLibraryTypes, this.libraryType),\n \"protocol version\": this.protocolVersion,\n \"firmware versions\": this.firmwareVersions.join(\", \"),\n };\n if (this.hardwareVersion != undefined) {\n message[\"hardware version\"] = this.hardwareVersion;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(VersionCommand.Get)\n@expectedCCResponse(VersionCCReport)\nexport class VersionCCGet extends VersionCC {\n}\n// @publicAPI\nexport interface VersionCCCommandClassReportOptions {\n requestedCC: CommandClasses;\n ccVersion: number;\n}\n@CCCommand(VersionCommand.CommandClassReport)\nexport class VersionCCCommandClassReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCCommandClassReportOptions>) {\n super(options);\n this.requestedCC = options.requestedCC;\n this.ccVersion = options.ccVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCommandClassReport {\n validatePayload(raw.payload.length >= 2);\n const requestedCC: CommandClasses = raw.payload[0];\n const ccVersion = raw.payload[1];\n return new this({\n nodeId: ctx.sourceNodeId,\n requestedCC,\n ccVersion,\n });\n }\n public ccVersion: number;\n public requestedCC: CommandClasses;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.requestedCC, this.ccVersion]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n CC: getCCName(this.requestedCC),\n version: this.ccVersion,\n },\n };\n }\n}\n// @publicAPI\nexport interface VersionCCCommandClassGetOptions {\n requestedCC: CommandClasses;\n}\nfunction testResponseForVersionCommandClassGet(sent: VersionCCCommandClassGet, received: VersionCCCommandClassReport) {\n // We expect a Version CommandClass Report that matches the requested CC\n return sent.requestedCC === received.requestedCC;\n}\n@CCCommand(VersionCommand.CommandClassGet)\n@expectedCCResponse(VersionCCCommandClassReport, testResponseForVersionCommandClassGet)\nexport class VersionCCCommandClassGet extends VersionCC {\n public constructor(options: WithAddress<VersionCCCommandClassGetOptions>) {\n super(options);\n this.requestedCC = options.requestedCC;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCommandClassGet {\n validatePayload(raw.payload.length >= 1);\n const requestedCC: CommandClasses = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n requestedCC,\n });\n }\n public requestedCC: CommandClasses;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.requestedCC]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { CC: getCCName(this.requestedCC) },\n };\n }\n}\n// @publicAPI\nexport interface VersionCCCapabilitiesReportOptions {\n supportsZWaveSoftwareGet: boolean;\n}\n@CCCommand(VersionCommand.CapabilitiesReport)\n@ccValueProperty(\"supportsZWaveSoftwareGet\", VersionCCValues.supportsZWaveSoftwareGet)\nexport class VersionCCCapabilitiesReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCCapabilitiesReportOptions>) {\n super(options);\n this.supportsZWaveSoftwareGet = options.supportsZWaveSoftwareGet;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCapabilitiesReport {\n validatePayload(raw.payload.length >= 1);\n const capabilities = raw.payload[0];\n const supportsZWaveSoftwareGet = !!(capabilities & 0b100);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportsZWaveSoftwareGet,\n });\n }\n public supportsZWaveSoftwareGet: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n (this.supportsZWaveSoftwareGet ? 0b100 : 0) | 0b11,\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supports Z-Wave Software Get command\": this.supportsZWaveSoftwareGet,\n },\n };\n }\n}\n@CCCommand(VersionCommand.CapabilitiesGet)\n@expectedCCResponse(VersionCCCapabilitiesReport)\nexport class VersionCCCapabilitiesGet extends VersionCC {\n}\n// @publicAPI\nexport interface VersionCCZWaveSoftwareReportOptions {\n sdkVersion: string;\n applicationFrameworkAPIVersion: string;\n applicationFrameworkBuildNumber: number;\n hostInterfaceVersion: string;\n hostInterfaceBuildNumber: number;\n zWaveProtocolVersion: string;\n zWaveProtocolBuildNumber: number;\n applicationVersion: string;\n applicationBuildNumber: number;\n}\n@CCCommand(VersionCommand.ZWaveSoftwareReport)\n@ccValueProperty(\"sdkVersion\", VersionCCValues.sdkVersion)\n@ccValueProperty(\"applicationFrameworkAPIVersion\", VersionCCValues.applicationFrameworkAPIVersion)\n@ccValueProperty(\"applicationFrameworkBuildNumber\", VersionCCValues.applicationFrameworkBuildNumber)\n@ccValueProperty(\"hostInterfaceVersion\", VersionCCValues.serialAPIVersion)\n@ccValueProperty(\"hostInterfaceBuildNumber\", VersionCCValues.serialAPIBuildNumber)\n@ccValueProperty(\"zWaveProtocolVersion\", VersionCCValues.zWaveProtocolVersion)\n@ccValueProperty(\"zWaveProtocolBuildNumber\", VersionCCValues.zWaveProtocolBuildNumber)\n@ccValueProperty(\"applicationVersion\", VersionCCValues.applicationVersion)\n@ccValueProperty(\"applicationBuildNumber\", VersionCCValues.applicationBuildNumber)\nexport class VersionCCZWaveSoftwareReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCZWaveSoftwareReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.sdkVersion = options.sdkVersion;\n this.applicationFrameworkAPIVersion =\n options.applicationFrameworkAPIVersion;\n this.applicationFrameworkBuildNumber =\n options.applicationFrameworkBuildNumber;\n this.hostInterfaceVersion = options.hostInterfaceVersion;\n this.hostInterfaceBuildNumber = options.hostInterfaceBuildNumber;\n this.zWaveProtocolVersion = options.zWaveProtocolVersion;\n this.zWaveProtocolBuildNumber = options.zWaveProtocolBuildNumber;\n this.applicationVersion = options.applicationVersion;\n this.applicationBuildNumber = options.applicationBuildNumber;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCZWaveSoftwareReport {\n validatePayload(raw.payload.length >= 23);\n const sdkVersion = parseVersion(raw.payload);\n const applicationFrameworkAPIVersion = parseVersion(raw.payload.subarray(3));\n let applicationFrameworkBuildNumber;\n if (applicationFrameworkAPIVersion !== \"unused\") {\n applicationFrameworkBuildNumber = raw.payload.readUInt16BE(6);\n }\n else {\n applicationFrameworkBuildNumber = 0;\n }\n const hostInterfaceVersion = parseVersion(raw.payload.subarray(8));\n let hostInterfaceBuildNumber;\n if (hostInterfaceVersion !== \"unused\") {\n hostInterfaceBuildNumber = raw.payload.readUInt16BE(11);\n }\n else {\n hostInterfaceBuildNumber = 0;\n }\n const zWaveProtocolVersion = parseVersion(raw.payload.subarray(13));\n let zWaveProtocolBuildNumber;\n if (zWaveProtocolVersion !== \"unused\") {\n zWaveProtocolBuildNumber = raw.payload.readUInt16BE(16);\n }\n else {\n zWaveProtocolBuildNumber = 0;\n }\n const applicationVersion = parseVersion(raw.payload.subarray(18));\n let applicationBuildNumber;\n if (applicationVersion !== \"unused\") {\n applicationBuildNumber = raw.payload.readUInt16BE(21);\n }\n else {\n applicationBuildNumber = 0;\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n sdkVersion,\n applicationFrameworkAPIVersion,\n applicationFrameworkBuildNumber,\n hostInterfaceVersion,\n hostInterfaceBuildNumber,\n zWaveProtocolVersion,\n zWaveProtocolBuildNumber,\n applicationVersion,\n applicationBuildNumber,\n });\n }\n public readonly sdkVersion: string;\n public readonly applicationFrameworkAPIVersion: string;\n public readonly applicationFrameworkBuildNumber: number;\n public readonly hostInterfaceVersion: string;\n public readonly hostInterfaceBuildNumber: number;\n public readonly zWaveProtocolVersion: string;\n public readonly zWaveProtocolBuildNumber: number;\n public readonly applicationVersion: string;\n public readonly applicationBuildNumber: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"SDK version\": this.sdkVersion,\n };\n message[\"appl. framework API version\"] =\n this.applicationFrameworkAPIVersion;\n if (this.applicationFrameworkAPIVersion !== \"unused\") {\n message[\"appl. framework build number\"] =\n this.applicationFrameworkBuildNumber;\n }\n message[\"host interface version\"] = this.hostInterfaceVersion;\n if (this.hostInterfaceVersion !== \"unused\") {\n message[\"host interface build number\"] =\n this.hostInterfaceBuildNumber;\n }\n message[\"Z-Wave protocol version\"] = this.zWaveProtocolVersion;\n if (this.zWaveProtocolVersion !== \"unused\") {\n message[\"Z-Wave protocol build number\"] =\n this.zWaveProtocolBuildNumber;\n }\n message[\"application version\"] = this.applicationVersion;\n if (this.applicationVersion !== \"unused\") {\n message[\"application build number\"] = this.applicationBuildNumber;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(VersionCommand.ZWaveSoftwareGet)\n@expectedCCResponse(VersionCCZWaveSoftwareReport)\nexport class VersionCCZWaveSoftwareGet extends VersionCC {\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import * as __validateArgs from \"./VersionCC._validateArgs.js\";\nconst { validateArgs_VersionCCAPI_sendReport, validateArgs_VersionCCAPI_getCCVersion, validateArgs_VersionCCAPI_reportCCVersion } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, SecurityClass, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, ZWaveLibraryTypes, enumValuesToMetadataStates, getCCName, securityClassIsS2, securityClassOrder, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, type BytesView, getEnumMemberName, num2hex, pick, } from \"@zwave-js/shared\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, getImplementedVersion, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { VersionCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { VersionCCValues } from \"./_CCValues.generated.js\";\nexport { VersionCCValues };\nfunction parseVersion(buffer: BytesView): string {\n if (buffer[0] === 0 && buffer[1] === 0 && buffer[2] === 0)\n return \"unused\";\n return `${buffer[0]}.${buffer[1]}.${buffer[2]}`;\n}\n// @noSetValueAPI This CC is read-only\n@API(CommandClasses.Version)\nexport class VersionCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: VersionCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case VersionCommand.Get:\n case VersionCommand.Report:\n case VersionCommand.CommandClassGet:\n case VersionCommand.CommandClassReport:\n return true; // This is mandatory\n case VersionCommand.CapabilitiesGet:\n case VersionCommand.CapabilitiesReport:\n case VersionCommand.ZWaveSoftwareReport:\n return this.version >= 3;\n case VersionCommand.ZWaveSoftwareGet: {\n return this.getValueDB().getValue<boolean>(VersionCCValues.supportsZWaveSoftwareGet.endpoint(this.endpoint.index));\n }\n }\n return super.supportsCommand(cmd);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.Get);\n const cc = new VersionCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"libraryType\",\n \"protocolVersion\",\n \"firmwareVersions\",\n \"hardwareVersion\",\n ]);\n }\n }\n @validateArgs_VersionCCAPI_sendReport()\n public async sendReport(options: VersionCCReportOptions): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.Report);\n const cc = new VersionCCReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_VersionCCAPI_getCCVersion()\n public async getCCVersion(requestedCC: CommandClasses): Promise<MaybeNotKnown<number>> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CommandClassGet);\n const cc = new VersionCCCommandClassGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n requestedCC,\n });\n const response = await this.host.sendCommand<VersionCCCommandClassReport>(cc, this.commandOptions);\n return response?.ccVersion;\n }\n @validateArgs_VersionCCAPI_reportCCVersion()\n /**\n * @param version The version to report. If not given, the implemented version will be used for the report.\n */\n public async reportCCVersion(requestedCC: CommandClasses, version?: number): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CommandClassReport);\n let ccVersion: number;\n switch (requestedCC) {\n case CommandClasses[\"Z-Wave Protocol\"]:\n case CommandClasses[\"Z-Wave Long Range\"]:\n // These two are only for internal use\n ccVersion = 0;\n break;\n case CommandClasses.Hail:\n case CommandClasses[\"Manufacturer Proprietary\"]:\n // These CCs are obsolete, we cannot enter them in the certification portal\n // but not doing so fails a certification test. Just respond that they\n // are not supported or controlled\n ccVersion = 0;\n break;\n default:\n ccVersion = version ?? getImplementedVersion(requestedCC);\n break;\n }\n const cc = new VersionCCCommandClassReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n requestedCC,\n ccVersion,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getCapabilities() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CapabilitiesGet);\n const cc = new VersionCCCapabilitiesGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCCapabilitiesReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"supportsZWaveSoftwareGet\"]);\n }\n }\n public async reportCapabilities(): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CapabilitiesReport);\n const cc = new VersionCCCapabilitiesReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n // At this time, we do not support responding to Z-Wave Software Get\n supportsZWaveSoftwareGet: false,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getZWaveSoftware() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.ZWaveSoftwareGet);\n const cc = new VersionCCZWaveSoftwareGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCZWaveSoftwareReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"sdkVersion\",\n \"applicationFrameworkAPIVersion\",\n \"applicationFrameworkBuildNumber\",\n \"hostInterfaceVersion\",\n \"hostInterfaceBuildNumber\",\n \"zWaveProtocolVersion\",\n \"zWaveProtocolBuildNumber\",\n \"applicationVersion\",\n \"applicationBuildNumber\",\n ]);\n }\n }\n}\n@commandClass(CommandClasses.Version)\n@implementedVersion(3)\n@ccValues(VersionCCValues)\nexport class VersionCC extends CommandClass {\n declare ccCommand: VersionCommand;\n public determineRequiredCCInterviews(): readonly CommandClasses[] {\n // VersionCC must be the 2nd CC after ManufacturerSpecificCC\n return [CommandClasses[\"Manufacturer Specific\"]];\n }\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n // SDS13782: In a Multi Channel device, the Version Command Class MUST be supported by the Root Device, while\n // the Version Command Class SHOULD NOT be supported by individual End Points.\n //\n // There may be cases where a given Command Class is not implemented by the Root Device of a Multi\n // Channel device. However, the Root Device MUST respond to Version requests for any Command Class\n // implemented by the Multi Channel device; also in cases where the actual Command Class is only\n // provided by an End Point.\n const endpoint = this.getEndpoint(ctx)!;\n // Use the CC API of the root device for all queries\n const api = CCAPI.create(CommandClasses.Version, ctx, node).withOptions({\n priority: MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n const queryCCVersion = async (cc: CommandClasses): Promise<void> => {\n // Only query CCs we support. Theoretically we could skip queries where we support only V1,\n // but there are Z-Wave certification tests that require us to query all CCs\n const maxImplemented = getImplementedVersion(cc);\n if (maxImplemented === 0) {\n ctx.logNode(node.id, ` skipping query for ${CommandClasses[cc]} (${num2hex(cc)}) because max implemented version is ${maxImplemented}`);\n return;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: ` querying the CC version for ${getCCName(cc)}...`,\n direction: \"outbound\",\n });\n // query the CC version\n const supportedVersion = await api.getCCVersion(cc);\n if (supportedVersion != undefined) {\n // Remember which CC version this endpoint supports\n let logMessage: string;\n if (supportedVersion > 0) {\n // Basic CC has special rules for when it is considered supported\n // Therefore we mark all other CCs as supported, but not Basic CC,\n // for which support is determined later.\n if (cc === CommandClasses.Basic) {\n endpoint.addCC(cc, { version: supportedVersion });\n }\n else if (endpoint.controlsCC(cc) && !endpoint.supportsCC(cc)) {\n // The node only advertised this CC as controlled (e.g. in the NIF).\n // Remember the version so its values can be exposed, but do not\n // promote it to a supported CC.\n endpoint.addCC(cc, {\n isControlled: true,\n version: supportedVersion,\n });\n }\n else {\n endpoint.addCC(cc, {\n isSupported: true,\n version: supportedVersion,\n });\n }\n logMessage = ` supports CC ${CommandClasses[cc]} (${num2hex(cc)}) in version ${supportedVersion}`;\n }\n else {\n // We were lied to - the NIF said this CC is supported, now the node claims it isn't\n // Make sure this is not a critical CC, which must be supported though\n if (cc === CommandClasses.Version\n || cc === CommandClasses[\"Manufacturer Specific\"]) {\n logMessage = ` claims NOT to support CC ${CommandClasses[cc]} (${num2hex(cc)}), but it must. Assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`;\n endpoint.addCC(cc, { version: 1 });\n }\n else if ((cc === CommandClasses.Security\n && node.hasSecurityClass(SecurityClass.S0_Legacy))\n || (cc === CommandClasses[\"Security 2\"]\n && securityClassOrder.some((sc) => securityClassIsS2(sc)\n && node.hasSecurityClass(sc)))) {\n logMessage = ` claims NOT to support CC ${CommandClasses[cc]} (${num2hex(cc)}), but it is known to support it. Assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`;\n endpoint.addCC(cc, { version: 1 });\n }\n else {\n logMessage = ` does NOT support CC ${CommandClasses[cc]} (${num2hex(cc)})`;\n endpoint.removeCC(cc);\n }\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `CC version query for ${getCCName(cc)} timed out - assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`,\n level: \"warn\",\n });\n endpoint.addCC(cc, { version: 1 });\n }\n };\n // Version information should not change (except for firmware updates)\n // And it is only relevant on the root endpoint (the node)\n if (this.endpointIndex === 0) {\n // Step 1: Query Version CC version\n await queryCCVersion(CommandClasses.Version);\n // Step 2: Query node versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying node versions...\",\n direction: \"outbound\",\n });\n const versionGetResponse = await api.get();\n if (versionGetResponse) {\n let logMessage = `received response for node versions:\n library type: ${ZWaveLibraryTypes[versionGetResponse.libraryType]} (${num2hex(versionGetResponse.libraryType)})\n protocol version: ${versionGetResponse.protocolVersion}\n firmware versions: ${versionGetResponse.firmwareVersions.join(\", \")}`;\n if (versionGetResponse.hardwareVersion != undefined) {\n logMessage +=\n `\\n hardware version: ${versionGetResponse.hardwareVersion}`;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n // Step 3: Query all other CC versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying CC versions...\",\n direction: \"outbound\",\n });\n // Determine the CCs whose version we still need to query, so we can report progress\n const ccsToQuery: CommandClasses[] = [];\n // Basic CC is not included in the NIF, so it won't be returned by endpoint.getCCs() at this point\n // Add it to the list if we are interviewing the root endpoint,\n // or if we are on an endpoint and the root endpoint does not support it\n if (this.endpointIndex === 0\n || node.getCCVersion(CommandClasses.Basic) === 0) {\n ccsToQuery.push(CommandClasses.Basic);\n }\n for (const [cc] of endpoint.getCCs()) {\n // We already queried the Version CC version at the start of this interview\n if (cc === CommandClasses.Version)\n continue;\n // And we queried Basic CC just before this\n if (cc === CommandClasses.Basic)\n continue;\n // Skip the query of endpoint CCs that are also supported by the root device\n if (this.endpointIndex > 0 && node.getCCVersion(cc) > 0)\n continue;\n ccsToQuery.push(cc);\n }\n // Actually query them\n for (const [i, cc] of ccsToQuery.entries()) {\n await queryCCVersion(cc);\n node.reportInterviewProgress(i + 1, ccsToQuery.length);\n }\n // Step 4: Query VersionCC capabilities (root device only)\n if (this.endpointIndex === 0 && api.version >= 3) {\n // Step 4a: Support for SoftwareGet\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying if Z-Wave Software Get is supported...\",\n direction: \"outbound\",\n });\n const capsResponse = await api.getCapabilities();\n if (capsResponse) {\n const { supportsZWaveSoftwareGet } = capsResponse;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Z-Wave Software Get is${supportsZWaveSoftwareGet ? \"\" : \" not\"} supported`,\n direction: \"inbound\",\n });\n if (supportsZWaveSoftwareGet) {\n // Step 4b: Query Z-Wave Software versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying Z-Wave software versions...\",\n direction: \"outbound\",\n });\n await api.getZWaveSoftware();\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"received Z-Wave software versions\",\n direction: \"inbound\",\n });\n }\n }\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface VersionCCReportOptions {\n libraryType: ZWaveLibraryTypes;\n protocolVersion: string;\n firmwareVersions: string[];\n hardwareVersion?: number;\n}\n@CCCommand(VersionCommand.Report)\n@ccValueProperty(\"libraryType\", VersionCCValues.libraryType)\n@ccValueProperty(\"protocolVersion\", VersionCCValues.protocolVersion)\n@ccValueProperty(\"firmwareVersions\", VersionCCValues.firmwareVersions)\n@ccValueProperty(\"hardwareVersion\", VersionCCValues.hardwareVersion)\nexport class VersionCCReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCReportOptions>) {\n super(options);\n if (!/^\\d+\\.\\d+(\\.\\d+)?$/.test(options.protocolVersion)) {\n throw new ZWaveError(`protocolVersion must be a string in the format \"major.minor\" or \"major.minor.patch\", received \"${options.protocolVersion}\"`, ZWaveErrorCodes.Argument_Invalid);\n }\n else if (!options.firmwareVersions.every((fw) => /^\\d+\\.\\d+(\\.\\d+)?$/.test(fw))) {\n throw new ZWaveError(`firmwareVersions must be an array of strings in the format \"major.minor\" or \"major.minor.patch\", received \"${JSON.stringify(options.firmwareVersions)}\"`, ZWaveErrorCodes.Argument_Invalid);\n }\n this.libraryType = options.libraryType;\n this.protocolVersion = options.protocolVersion;\n this.firmwareVersions = options.firmwareVersions;\n this.hardwareVersion = options.hardwareVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCReport {\n validatePayload(raw.payload.length >= 5);\n const libraryType: ZWaveLibraryTypes = raw.payload[0];\n const protocolVersion = `${raw.payload[1]}.${raw.payload[2]}`;\n const firmwareVersions = [`${raw.payload[3]}.${raw.payload[4]}`];\n let hardwareVersion: number | undefined;\n if (raw.payload.length >= 7) {\n // V2+\n hardwareVersion = raw.payload[5];\n const additionalFirmwares = raw.payload[6];\n validatePayload(raw.payload.length >= 7 + 2 * additionalFirmwares);\n for (let i = 0; i < additionalFirmwares; i++) {\n firmwareVersions.push(`${raw.payload[7 + 2 * i]}.${raw.payload[7 + 2 * i + 1]}`);\n }\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n libraryType,\n protocolVersion,\n firmwareVersions,\n hardwareVersion,\n });\n }\n public readonly libraryType: ZWaveLibraryTypes;\n public readonly protocolVersion: string;\n public readonly firmwareVersions: string[];\n public readonly hardwareVersion: number | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.libraryType,\n ...this.protocolVersion\n .split(\".\")\n .map((n) => parseInt(n))\n .slice(0, 2),\n ...this.firmwareVersions[0]\n .split(\".\")\n .map((n) => parseInt(n))\n .slice(0, 2),\n this.hardwareVersion ?? 0x00,\n this.firmwareVersions.length - 1,\n ]);\n if (this.firmwareVersions.length > 1) {\n const firmwaresBuffer = new Bytes((this.firmwareVersions.length - 1) * 2);\n for (let i = 1; i < this.firmwareVersions.length; i++) {\n const [major, minor] = this.firmwareVersions[i]\n .split(\".\")\n .map((n) => parseInt(n));\n firmwaresBuffer[2 * (i - 1)] = major;\n firmwaresBuffer[2 * (i - 1) + 1] = minor;\n }\n this.payload = Bytes.concat([this.payload, firmwaresBuffer]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"library type\": getEnumMemberName(ZWaveLibraryTypes, this.libraryType),\n \"protocol version\": this.protocolVersion,\n \"firmware versions\": this.firmwareVersions.join(\", \"),\n };\n if (this.hardwareVersion != undefined) {\n message[\"hardware version\"] = this.hardwareVersion;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(VersionCommand.Get)\n@expectedCCResponse(VersionCCReport)\nexport class VersionCCGet extends VersionCC {\n}\n// @publicAPI\nexport interface VersionCCCommandClassReportOptions {\n requestedCC: CommandClasses;\n ccVersion: number;\n}\n@CCCommand(VersionCommand.CommandClassReport)\nexport class VersionCCCommandClassReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCCommandClassReportOptions>) {\n super(options);\n this.requestedCC = options.requestedCC;\n this.ccVersion = options.ccVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCommandClassReport {\n validatePayload(raw.payload.length >= 2);\n const requestedCC: CommandClasses = raw.payload[0];\n const ccVersion = raw.payload[1];\n return new this({\n nodeId: ctx.sourceNodeId,\n requestedCC,\n ccVersion,\n });\n }\n public ccVersion: number;\n public requestedCC: CommandClasses;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.requestedCC, this.ccVersion]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n CC: getCCName(this.requestedCC),\n version: this.ccVersion,\n },\n };\n }\n}\n// @publicAPI\nexport interface VersionCCCommandClassGetOptions {\n requestedCC: CommandClasses;\n}\nfunction testResponseForVersionCommandClassGet(sent: VersionCCCommandClassGet, received: VersionCCCommandClassReport) {\n // We expect a Version CommandClass Report that matches the requested CC\n return sent.requestedCC === received.requestedCC;\n}\n@CCCommand(VersionCommand.CommandClassGet)\n@expectedCCResponse(VersionCCCommandClassReport, testResponseForVersionCommandClassGet)\nexport class VersionCCCommandClassGet extends VersionCC {\n public constructor(options: WithAddress<VersionCCCommandClassGetOptions>) {\n super(options);\n this.requestedCC = options.requestedCC;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCommandClassGet {\n validatePayload(raw.payload.length >= 1);\n const requestedCC: CommandClasses = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n requestedCC,\n });\n }\n public requestedCC: CommandClasses;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.requestedCC]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { CC: getCCName(this.requestedCC) },\n };\n }\n}\n// @publicAPI\nexport interface VersionCCCapabilitiesReportOptions {\n supportsZWaveSoftwareGet: boolean;\n}\n@CCCommand(VersionCommand.CapabilitiesReport)\n@ccValueProperty(\"supportsZWaveSoftwareGet\", VersionCCValues.supportsZWaveSoftwareGet)\nexport class VersionCCCapabilitiesReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCCapabilitiesReportOptions>) {\n super(options);\n this.supportsZWaveSoftwareGet = options.supportsZWaveSoftwareGet;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCapabilitiesReport {\n validatePayload(raw.payload.length >= 1);\n const capabilities = raw.payload[0];\n const supportsZWaveSoftwareGet = !!(capabilities & 0b100);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportsZWaveSoftwareGet,\n });\n }\n public supportsZWaveSoftwareGet: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n (this.supportsZWaveSoftwareGet ? 0b100 : 0) | 0b11,\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supports Z-Wave Software Get command\": this.supportsZWaveSoftwareGet,\n },\n };\n }\n}\n@CCCommand(VersionCommand.CapabilitiesGet)\n@expectedCCResponse(VersionCCCapabilitiesReport)\nexport class VersionCCCapabilitiesGet extends VersionCC {\n}\n// @publicAPI\nexport interface VersionCCZWaveSoftwareReportOptions {\n sdkVersion: string;\n applicationFrameworkAPIVersion: string;\n applicationFrameworkBuildNumber: number;\n hostInterfaceVersion: string;\n hostInterfaceBuildNumber: number;\n zWaveProtocolVersion: string;\n zWaveProtocolBuildNumber: number;\n applicationVersion: string;\n applicationBuildNumber: number;\n}\n@CCCommand(VersionCommand.ZWaveSoftwareReport)\n@ccValueProperty(\"sdkVersion\", VersionCCValues.sdkVersion)\n@ccValueProperty(\"applicationFrameworkAPIVersion\", VersionCCValues.applicationFrameworkAPIVersion)\n@ccValueProperty(\"applicationFrameworkBuildNumber\", VersionCCValues.applicationFrameworkBuildNumber)\n@ccValueProperty(\"hostInterfaceVersion\", VersionCCValues.serialAPIVersion)\n@ccValueProperty(\"hostInterfaceBuildNumber\", VersionCCValues.serialAPIBuildNumber)\n@ccValueProperty(\"zWaveProtocolVersion\", VersionCCValues.zWaveProtocolVersion)\n@ccValueProperty(\"zWaveProtocolBuildNumber\", VersionCCValues.zWaveProtocolBuildNumber)\n@ccValueProperty(\"applicationVersion\", VersionCCValues.applicationVersion)\n@ccValueProperty(\"applicationBuildNumber\", VersionCCValues.applicationBuildNumber)\nexport class VersionCCZWaveSoftwareReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCZWaveSoftwareReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.sdkVersion = options.sdkVersion;\n this.applicationFrameworkAPIVersion =\n options.applicationFrameworkAPIVersion;\n this.applicationFrameworkBuildNumber =\n options.applicationFrameworkBuildNumber;\n this.hostInterfaceVersion = options.hostInterfaceVersion;\n this.hostInterfaceBuildNumber = options.hostInterfaceBuildNumber;\n this.zWaveProtocolVersion = options.zWaveProtocolVersion;\n this.zWaveProtocolBuildNumber = options.zWaveProtocolBuildNumber;\n this.applicationVersion = options.applicationVersion;\n this.applicationBuildNumber = options.applicationBuildNumber;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCZWaveSoftwareReport {\n validatePayload(raw.payload.length >= 23);\n const sdkVersion = parseVersion(raw.payload);\n const applicationFrameworkAPIVersion = parseVersion(raw.payload.subarray(3));\n let applicationFrameworkBuildNumber;\n if (applicationFrameworkAPIVersion !== \"unused\") {\n applicationFrameworkBuildNumber = raw.payload.readUInt16BE(6);\n }\n else {\n applicationFrameworkBuildNumber = 0;\n }\n const hostInterfaceVersion = parseVersion(raw.payload.subarray(8));\n let hostInterfaceBuildNumber;\n if (hostInterfaceVersion !== \"unused\") {\n hostInterfaceBuildNumber = raw.payload.readUInt16BE(11);\n }\n else {\n hostInterfaceBuildNumber = 0;\n }\n const zWaveProtocolVersion = parseVersion(raw.payload.subarray(13));\n let zWaveProtocolBuildNumber;\n if (zWaveProtocolVersion !== \"unused\") {\n zWaveProtocolBuildNumber = raw.payload.readUInt16BE(16);\n }\n else {\n zWaveProtocolBuildNumber = 0;\n }\n const applicationVersion = parseVersion(raw.payload.subarray(18));\n let applicationBuildNumber;\n if (applicationVersion !== \"unused\") {\n applicationBuildNumber = raw.payload.readUInt16BE(21);\n }\n else {\n applicationBuildNumber = 0;\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n sdkVersion,\n applicationFrameworkAPIVersion,\n applicationFrameworkBuildNumber,\n hostInterfaceVersion,\n hostInterfaceBuildNumber,\n zWaveProtocolVersion,\n zWaveProtocolBuildNumber,\n applicationVersion,\n applicationBuildNumber,\n });\n }\n public readonly sdkVersion: string;\n public readonly applicationFrameworkAPIVersion: string;\n public readonly applicationFrameworkBuildNumber: number;\n public readonly hostInterfaceVersion: string;\n public readonly hostInterfaceBuildNumber: number;\n public readonly zWaveProtocolVersion: string;\n public readonly zWaveProtocolBuildNumber: number;\n public readonly applicationVersion: string;\n public readonly applicationBuildNumber: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"SDK version\": this.sdkVersion,\n };\n message[\"appl. framework API version\"] =\n this.applicationFrameworkAPIVersion;\n if (this.applicationFrameworkAPIVersion !== \"unused\") {\n message[\"appl. framework build number\"] =\n this.applicationFrameworkBuildNumber;\n }\n message[\"host interface version\"] = this.hostInterfaceVersion;\n if (this.hostInterfaceVersion !== \"unused\") {\n message[\"host interface build number\"] =\n this.hostInterfaceBuildNumber;\n }\n message[\"Z-Wave protocol version\"] = this.zWaveProtocolVersion;\n if (this.zWaveProtocolVersion !== \"unused\") {\n message[\"Z-Wave protocol build number\"] =\n this.zWaveProtocolBuildNumber;\n }\n message[\"application version\"] = this.applicationVersion;\n if (this.applicationVersion !== \"unused\") {\n message[\"application build number\"] = this.applicationBuildNumber;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(VersionCommand.ZWaveSoftwareGet)\n@expectedCCResponse(VersionCCZWaveSoftwareReport)\nexport class VersionCCZWaveSoftwareGet extends VersionCC {\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -310,7 +310,9 @@ ${supported.map((p) => `\xB7 ${(0, import_shared.getEnumMemberName)(import_Types
|
|
|
310
310
|
this.setMetadata(ctx, import_CCValues_generated.WindowCoveringCCValues.levelChangeUp(param));
|
|
311
311
|
this.setMetadata(ctx, import_CCValues_generated.WindowCoveringCCValues.levelChangeDown(param));
|
|
312
312
|
}
|
|
313
|
-
await this.refreshValues(ctx
|
|
313
|
+
await this.refreshValues(ctx, {
|
|
314
|
+
onProgress: /* @__PURE__ */ __name((completed, total) => node.reportInterviewProgress(completed, total), "onProgress")
|
|
315
|
+
});
|
|
314
316
|
}
|
|
315
317
|
this.setInterviewComplete(ctx, true);
|
|
316
318
|
}
|
|
@@ -321,15 +323,15 @@ ${supported.map((p) => `\xB7 ${(0, import_shared.getEnumMemberName)(import_Types
|
|
|
321
323
|
priority: options?.priority ?? import_core.MessagePriority.NodeQuery
|
|
322
324
|
});
|
|
323
325
|
const parameters = this.getValue(ctx, import_CCValues_generated.WindowCoveringCCValues.supportedParameters) ?? [];
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
continue;
|
|
326
|
+
const queryableParameters = parameters.filter((param) => param % 2 != 0);
|
|
327
|
+
for (const [i, param] of queryableParameters.entries()) {
|
|
327
328
|
ctx.logNode(node.id, {
|
|
328
329
|
endpoint: this.endpointIndex,
|
|
329
330
|
message: `querying position for parameter ${(0, import_shared.getEnumMemberName)(import_Types.WindowCoveringParameter, param)}...`,
|
|
330
331
|
direction: "outbound"
|
|
331
332
|
});
|
|
332
333
|
await api.get(param);
|
|
334
|
+
options?.onProgress?.(i + 1, queryableParameters.length);
|
|
333
335
|
}
|
|
334
336
|
}
|
|
335
337
|
translatePropertyKey(ctx, property, propertyKey) {
|
|
@@ -451,6 +453,8 @@ let WindowCoveringCCReport = (() => {
|
|
|
451
453
|
static from(raw, ctx) {
|
|
452
454
|
(0, import_core.validatePayload)(raw.payload.length >= 4);
|
|
453
455
|
const parameter = raw.payload[0];
|
|
456
|
+
(0, import_core.validatePayload)((0, import_shared.isEnumMember)(import_Types.WindowCoveringParameter, parameter));
|
|
457
|
+
(0, import_core.validatePayload)(raw.payload[1] <= 99, raw.payload[2] <= 99);
|
|
454
458
|
const currentValue = raw.payload[1];
|
|
455
459
|
const targetValue = raw.payload[2];
|
|
456
460
|
const duration = import_core.Duration.parseReport(raw.payload[3]) ?? import_core.Duration.unknown();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src_gen/cc/WindowCoveringCC.ts"],
|
|
4
|
-
"sourcesContent": ["import * as __validateArgs from \"./WindowCoveringCC._validateArgs.js\";\nconst { validateArgs_WindowCoveringCCAPI_get, validateArgs_WindowCoveringCCAPI_set, validateArgs_WindowCoveringCCAPI_startLevelChange, validateArgs_WindowCoveringCCAPI_stopLevelChange } = __validateArgs;\nimport { CommandClasses, Duration, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type SupervisionResult, ValueMetadata, type WithAddress, encodeBitMask, parseBitMask, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName, pick } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, SET_VALUE_HOOKS, type SetValueImplementation, type SetValueImplementationHooksFactory, throwMissingPropertyKey, throwUnsupportedProperty, throwUnsupportedPropertyKey, throwWrongValueType, } from \"../lib/API.js\";\nimport { windowCoveringParameterToLevelChangeLabel, windowCoveringParameterToMetadataStates, } from \"../lib/CCValueUtils.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { type LevelChangeDirection, WindowCoveringCommand, WindowCoveringParameter, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { WindowCoveringCCValues } from \"./_CCValues.generated.js\";\nexport { WindowCoveringCCValues };\n@API(CommandClasses[\"Window Covering\"])\nexport class WindowCoveringCCAPI extends CCAPI {\n public supportsCommand(cmd: WindowCoveringCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case WindowCoveringCommand.Get:\n case WindowCoveringCommand.Set:\n case WindowCoveringCommand.SupportedGet:\n case WindowCoveringCommand.StartLevelChange:\n case WindowCoveringCommand.StopLevelChange:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: WindowCoveringCCAPI, { property, propertyKey }, value, options) {\n const valueId = {\n commandClass: this.ccId,\n property,\n propertyKey,\n };\n if (WindowCoveringCCValues.targetValue.is(valueId)) {\n if (typeof propertyKey !== \"number\"\n // Only odd-numbered parameters have position support and are writable\n || propertyKey % 2 === 0) {\n throwUnsupportedPropertyKey(this.ccId, property, propertyKey!);\n }\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n const parameter = propertyKey;\n const duration = Duration.from(options?.transitionDuration);\n return this.set([{ parameter, value }], duration);\n }\n else if (WindowCoveringCCValues.levelChangeUp.is(valueId)\n || WindowCoveringCCValues.levelChangeDown.is(valueId)) {\n if (typeof value !== \"boolean\") {\n throwWrongValueType(this.ccId, property, \"boolean\", typeof value);\n }\n const parameter = propertyKey as number;\n const direction = WindowCoveringCCValues.levelChangeUp.is(valueId)\n ? \"up\"\n : \"down\";\n if (value) {\n // Perform the level change\n const duration = Duration.from(options?.transitionDuration);\n return this.startLevelChange(parameter, direction, duration);\n }\n else {\n return this.stopLevelChange(parameter);\n }\n }\n else {\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n protected [SET_VALUE_HOOKS]: SetValueImplementationHooksFactory = ({ property, propertyKey }, value, options) => {\n const valueId = {\n commandClass: this.ccId,\n property,\n propertyKey,\n };\n if (WindowCoveringCCValues.targetValue.is(valueId)) {\n if (typeof propertyKey !== \"number\")\n return;\n const parameter = propertyKey;\n const duration = Duration.from(options?.transitionDuration);\n const currentValueValueId = WindowCoveringCCValues.currentValue(parameter).endpoint(this.endpoint.index);\n return {\n // This is the target value for a split target/current state pair.\n isSplitStateTargetValue: true,\n // Window Covering commands may take some time to be executed.\n // Therefore we try to supervise the command execution and delay the\n // optimistic update until the final result is received.\n supervisionDelayedUpdates: true,\n supervisionOnSuccess: async () => {\n // Only update currentValue for valid target values\n if (typeof value === \"number\"\n && value >= 0\n && value <= 99) {\n this.tryGetValueDB()?.setValue(currentValueValueId, value);\n }\n else if (value === 255) {\n // We don't know the status now, so refresh the current value\n try {\n await this.get(parameter);\n }\n catch {\n // ignore\n }\n }\n },\n supervisionOnFailure: async () => {\n // The transition failed, so now we don't know the status - refresh the current value\n try {\n await this.get(parameter);\n }\n catch {\n // ignore\n }\n },\n optimisticallyUpdateRelatedValues: (_supervisedAndSuccessful) => {\n // Only update currentValue for valid target values\n if (typeof value === \"number\"\n && value >= 0\n && value <= 99) {\n if (this.isSinglecast()) {\n this.tryGetValueDB()?.setValue(currentValueValueId, value);\n }\n else if (this.isMulticast()) {\n // Figure out which nodes were affected by this command\n const affectedNodes = this.endpoint.node\n .physicalNodes.filter((node) => node\n .getEndpoint(this.endpoint.index)\n ?.supportsCC(this.ccId));\n // and optimistically update the currentValue\n for (const node of affectedNodes) {\n this.host\n .tryGetValueDB(node.id)\n ?.setValue(currentValueValueId, value);\n }\n }\n }\n },\n verifyChanges: () => {\n if (this.isSinglecast()) {\n // We query currentValue instead of targetValue to make sure that unsolicited updates cancel the scheduled poll\n this.schedulePoll(currentValueValueId, value, {\n duration,\n });\n }\n else {\n // For multicasts, do not schedule a refresh - this could cause a LOT of traffic\n }\n },\n };\n }\n };\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: WindowCoveringCCAPI, { property, propertyKey }) {\n switch (property) {\n case \"currentValue\":\n case \"targetValue\":\n case \"duration\":\n if (propertyKey == undefined) {\n throwMissingPropertyKey(this.ccId, property);\n }\n else if (typeof propertyKey !== \"number\") {\n throwUnsupportedPropertyKey(this.ccId, property, propertyKey);\n }\n return (await this.get(propertyKey))?.[property];\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n public async getSupported(): Promise<MaybeNotKnown<readonly WindowCoveringParameter[]>> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.SupportedGet);\n const cc = new WindowCoveringCCSupportedGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<WindowCoveringCCSupportedReport>(cc, this.commandOptions);\n return response?.supportedParameters;\n }\n @validateArgs_WindowCoveringCCAPI_get()\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get(parameter: WindowCoveringParameter) {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.Get);\n const cc = new WindowCoveringCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n });\n const response = await this.host.sendCommand<WindowCoveringCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"currentValue\", \"targetValue\", \"duration\"]);\n }\n }\n @validateArgs_WindowCoveringCCAPI_set()\n public async set(targetValues: {\n parameter: WindowCoveringParameter;\n value: number;\n }[], duration?: Duration | string): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.StartLevelChange);\n const cc = new WindowCoveringCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n targetValues,\n duration,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_WindowCoveringCCAPI_startLevelChange()\n public async startLevelChange(parameter: WindowCoveringParameter, direction: keyof typeof LevelChangeDirection, duration?: Duration | string): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.StartLevelChange);\n const cc = new WindowCoveringCCStartLevelChange({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n direction,\n duration,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_WindowCoveringCCAPI_stopLevelChange()\n public async stopLevelChange(parameter: WindowCoveringParameter): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.StopLevelChange);\n const cc = new WindowCoveringCCStopLevelChange({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n}\n@commandClass(CommandClasses[\"Window Covering\"])\n@implementedVersion(1)\n@ccValues(WindowCoveringCCValues)\nexport class WindowCoveringCC extends CommandClass {\n declare ccCommand: WindowCoveringCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Window Covering\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying supported window covering parameters...\",\n direction: \"outbound\",\n });\n const supported = await api.getSupported();\n if (supported?.length) {\n const logMessage = `supported window covering parameters:\n${supported\n .map((p) => `\u00B7 ${getEnumMemberName(WindowCoveringParameter, p)}`)\n .join(\"\\n\")}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n // Create metadata for all supported parameters\n for (const param of supported) {\n // Default values\n this.setMetadata(ctx, WindowCoveringCCValues.currentValue(param));\n this.setMetadata(ctx, WindowCoveringCCValues.targetValue(param));\n this.setMetadata(ctx, WindowCoveringCCValues.duration(param));\n // Level change values\n this.setMetadata(ctx, WindowCoveringCCValues.levelChangeUp(param));\n this.setMetadata(ctx, WindowCoveringCCValues.levelChangeDown(param));\n }\n // Query current values for all supported parameters\n await this.refreshValues(ctx);\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Window Covering\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n });\n const parameters: number[] = this.getValue(ctx, WindowCoveringCCValues.supportedParameters) ?? [];\n for (const param of parameters) {\n // Only query odd parameters (with position support)\n if (param % 2 == 0)\n continue;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `querying position for parameter ${getEnumMemberName(WindowCoveringParameter, param)}...`,\n direction: \"outbound\",\n });\n await api.get(param);\n }\n }\n public translatePropertyKey(ctx: GetValueDB, property: string | number, propertyKey: string | number): string | undefined {\n if (typeof propertyKey === \"number\") {\n return getEnumMemberName(WindowCoveringParameter, propertyKey);\n }\n return super.translatePropertyKey(ctx, property, propertyKey);\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCSupportedReportOptions {\n supportedParameters: readonly WindowCoveringParameter[];\n}\n@CCCommand(WindowCoveringCommand.SupportedReport)\n@ccValueProperty(\"supportedParameters\", WindowCoveringCCValues.supportedParameters)\nexport class WindowCoveringCCSupportedReport extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCSupportedReportOptions>) {\n super(options);\n this.supportedParameters = options.supportedParameters;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCSupportedReport {\n validatePayload(raw.payload.length >= 1);\n const numBitmaskBytes = raw.payload[0] & 0b1111;\n validatePayload(raw.payload.length >= 1 + numBitmaskBytes);\n const bitmask = raw.payload.subarray(1, 1 + numBitmaskBytes);\n const supportedParameters: WindowCoveringParameter[] = parseBitMask(bitmask, WindowCoveringParameter[\"Outbound Left (no position)\"]);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedParameters,\n });\n }\n public readonly supportedParameters: readonly WindowCoveringParameter[];\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const bitmask = encodeBitMask(this.supportedParameters, undefined, WindowCoveringParameter[\"Outbound Left (no position)\"]).subarray(0, 15);\n const numBitmaskBytes = bitmask.length & 0b1111;\n this.payload = Bytes.concat([\n [numBitmaskBytes],\n bitmask.subarray(0, numBitmaskBytes),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supported parameters\": this.supportedParameters\n .map((p) => `\\n\u00B7 ${getEnumMemberName(WindowCoveringParameter, p)}`)\n .join(\"\"),\n },\n };\n }\n}\n@CCCommand(WindowCoveringCommand.SupportedGet)\n@expectedCCResponse(WindowCoveringCCSupportedReport)\nexport class WindowCoveringCCSupportedGet extends WindowCoveringCC {\n}\n// @publicAPI\nexport interface WindowCoveringCCReportOptions {\n parameter: WindowCoveringParameter;\n currentValue: number;\n targetValue: number;\n duration: Duration;\n}\n@CCCommand(WindowCoveringCommand.Report)\n@ccValueProperty(\"currentValue\", WindowCoveringCCValues.currentValue, (self) => [self.parameter])\n@ccValueProperty(\"targetValue\", WindowCoveringCCValues.targetValue, (self) => [self.parameter])\n@ccValueProperty(\"duration\", WindowCoveringCCValues.duration, (self) => [self.parameter])\nexport class WindowCoveringCCReport extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.parameter = options.parameter;\n this.currentValue = options.currentValue;\n this.targetValue = options.targetValue;\n this.duration = options.duration;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCReport {\n validatePayload(raw.payload.length >= 4);\n const parameter: WindowCoveringParameter = raw.payload[0];\n const currentValue = raw.payload[1];\n const targetValue = raw.payload[2];\n const duration = Duration.parseReport(raw.payload[3])\n ?? Duration.unknown();\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n currentValue,\n targetValue,\n duration,\n });\n }\n public readonly parameter: WindowCoveringParameter;\n public readonly currentValue: number;\n public readonly targetValue: number;\n public readonly duration: Duration;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.parameter,\n this.currentValue,\n this.targetValue,\n this.duration.serializeReport(),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n \"current value\": this.currentValue,\n \"target value\": this.targetValue,\n duration: this.duration.toString(),\n },\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCGetOptions {\n parameter: WindowCoveringParameter;\n}\nfunction testResponseForWindowCoveringGet(sent: WindowCoveringCCGet, received: WindowCoveringCCReport) {\n return received.parameter === sent.parameter;\n}\n@CCCommand(WindowCoveringCommand.Get)\n@expectedCCResponse(WindowCoveringCCReport, testResponseForWindowCoveringGet)\nexport class WindowCoveringCCGet extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCGetOptions>) {\n super(options);\n this.parameter = options.parameter;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCGet {\n validatePayload(raw.payload.length >= 1);\n const parameter: WindowCoveringParameter = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n });\n }\n public parameter: WindowCoveringParameter;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.parameter]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n },\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCSetOptions {\n targetValues: {\n parameter: WindowCoveringParameter;\n value: number;\n }[];\n duration?: Duration | string;\n}\n@CCCommand(WindowCoveringCommand.Set)\n@useSupervision()\nexport class WindowCoveringCCSet extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCSetOptions>) {\n super(options);\n this.targetValues = options.targetValues;\n this.duration = Duration.from(options.duration);\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCSet {\n validatePayload(raw.payload.length >= 1);\n const numEntries = raw.payload[0] & 0b11111;\n validatePayload(raw.payload.length >= 1 + numEntries * 2);\n const targetValues: WindowCoveringCCSetOptions[\"targetValues\"] = [];\n for (let i = 0; i < numEntries; i++) {\n const offset = 1 + i * 2;\n targetValues.push({\n parameter: raw.payload[offset],\n value: raw.payload[offset + 1],\n });\n }\n let duration: Duration | undefined;\n if (raw.payload.length >= 2 + numEntries * 2) {\n duration = Duration.parseSet(raw.payload[1 + numEntries * 2]);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n targetValues,\n duration,\n });\n }\n public targetValues: {\n parameter: WindowCoveringParameter;\n value: number;\n }[];\n public duration: Duration | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const numEntries = this.targetValues.length & 0b11111;\n this.payload = new Bytes(2 + numEntries * 2);\n this.payload[0] = numEntries;\n for (let i = 0; i < numEntries; i++) {\n const offset = 1 + i * 2;\n this.payload[offset] = this.targetValues[i].parameter;\n this.payload[offset + 1] = this.targetValues[i].value;\n }\n this.payload[this.payload.length - 1] = (this.duration ?? Duration.default()).serializeSet();\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {};\n for (const { parameter, value } of this.targetValues) {\n message[getEnumMemberName(WindowCoveringParameter, parameter)] =\n value;\n }\n if (this.duration) {\n message.duration = this.duration.toString();\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCStartLevelChangeOptions {\n parameter: WindowCoveringParameter;\n direction: keyof typeof LevelChangeDirection;\n duration?: Duration | string;\n}\n@CCCommand(WindowCoveringCommand.StartLevelChange)\n@useSupervision()\nexport class WindowCoveringCCStartLevelChange extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCStartLevelChangeOptions>) {\n super(options);\n this.parameter = options.parameter;\n this.direction = options.direction;\n this.duration = Duration.from(options.duration);\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCStartLevelChange {\n validatePayload(raw.payload.length >= 2);\n const direction = !!(raw.payload[0] & 64)\n ? \"down\"\n : \"up\";\n const parameter: WindowCoveringParameter = raw.payload[1];\n let duration: Duration | undefined;\n if (raw.payload.length >= 3) {\n duration = Duration.parseSet(raw.payload[2]);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n direction,\n parameter,\n duration,\n });\n }\n public parameter: WindowCoveringParameter;\n public direction: keyof typeof LevelChangeDirection;\n public duration: Duration | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.direction === \"down\" ? 64 : 0,\n this.parameter,\n (this.duration ?? Duration.default()).serializeSet(),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n direction: this.direction,\n };\n if (this.duration) {\n message.duration = this.duration.toString();\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCStopLevelChangeOptions {\n parameter: WindowCoveringParameter;\n}\n@CCCommand(WindowCoveringCommand.StopLevelChange)\n@useSupervision()\nexport class WindowCoveringCCStopLevelChange extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCStopLevelChangeOptions>) {\n super(options);\n this.parameter = options.parameter;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCStopLevelChange {\n validatePayload(raw.payload.length >= 1);\n const parameter: WindowCoveringParameter = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n });\n }\n public parameter: WindowCoveringParameter;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.parameter]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n },\n };\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import * as __validateArgs from \"./WindowCoveringCC._validateArgs.js\";\nconst { validateArgs_WindowCoveringCCAPI_get, validateArgs_WindowCoveringCCAPI_set, validateArgs_WindowCoveringCCAPI_startLevelChange, validateArgs_WindowCoveringCCAPI_stopLevelChange } = __validateArgs;\nimport { CommandClasses, Duration, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type SupervisionResult, ValueMetadata, type WithAddress, encodeBitMask, parseBitMask, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName, isEnumMember, pick } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, SET_VALUE_HOOKS, type SetValueImplementation, type SetValueImplementationHooksFactory, throwMissingPropertyKey, throwUnsupportedProperty, throwUnsupportedPropertyKey, throwWrongValueType, } from \"../lib/API.js\";\nimport { windowCoveringParameterToLevelChangeLabel, windowCoveringParameterToMetadataStates, } from \"../lib/CCValueUtils.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { type LevelChangeDirection, WindowCoveringCommand, WindowCoveringParameter, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { WindowCoveringCCValues } from \"./_CCValues.generated.js\";\nexport { WindowCoveringCCValues };\n@API(CommandClasses[\"Window Covering\"])\nexport class WindowCoveringCCAPI extends CCAPI {\n public supportsCommand(cmd: WindowCoveringCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case WindowCoveringCommand.Get:\n case WindowCoveringCommand.Set:\n case WindowCoveringCommand.SupportedGet:\n case WindowCoveringCommand.StartLevelChange:\n case WindowCoveringCommand.StopLevelChange:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: WindowCoveringCCAPI, { property, propertyKey }, value, options) {\n const valueId = {\n commandClass: this.ccId,\n property,\n propertyKey,\n };\n if (WindowCoveringCCValues.targetValue.is(valueId)) {\n if (typeof propertyKey !== \"number\"\n // Only odd-numbered parameters have position support and are writable\n || propertyKey % 2 === 0) {\n throwUnsupportedPropertyKey(this.ccId, property, propertyKey!);\n }\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n const parameter = propertyKey;\n const duration = Duration.from(options?.transitionDuration);\n return this.set([{ parameter, value }], duration);\n }\n else if (WindowCoveringCCValues.levelChangeUp.is(valueId)\n || WindowCoveringCCValues.levelChangeDown.is(valueId)) {\n if (typeof value !== \"boolean\") {\n throwWrongValueType(this.ccId, property, \"boolean\", typeof value);\n }\n const parameter = propertyKey as number;\n const direction = WindowCoveringCCValues.levelChangeUp.is(valueId)\n ? \"up\"\n : \"down\";\n if (value) {\n // Perform the level change\n const duration = Duration.from(options?.transitionDuration);\n return this.startLevelChange(parameter, direction, duration);\n }\n else {\n return this.stopLevelChange(parameter);\n }\n }\n else {\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n protected [SET_VALUE_HOOKS]: SetValueImplementationHooksFactory = ({ property, propertyKey }, value, options) => {\n const valueId = {\n commandClass: this.ccId,\n property,\n propertyKey,\n };\n if (WindowCoveringCCValues.targetValue.is(valueId)) {\n if (typeof propertyKey !== \"number\")\n return;\n const parameter = propertyKey;\n const duration = Duration.from(options?.transitionDuration);\n const currentValueValueId = WindowCoveringCCValues.currentValue(parameter).endpoint(this.endpoint.index);\n return {\n // This is the target value for a split target/current state pair.\n isSplitStateTargetValue: true,\n // Window Covering commands may take some time to be executed.\n // Therefore we try to supervise the command execution and delay the\n // optimistic update until the final result is received.\n supervisionDelayedUpdates: true,\n supervisionOnSuccess: async () => {\n // Only update currentValue for valid target values\n if (typeof value === \"number\"\n && value >= 0\n && value <= 99) {\n this.tryGetValueDB()?.setValue(currentValueValueId, value);\n }\n else if (value === 255) {\n // We don't know the status now, so refresh the current value\n try {\n await this.get(parameter);\n }\n catch {\n // ignore\n }\n }\n },\n supervisionOnFailure: async () => {\n // The transition failed, so now we don't know the status - refresh the current value\n try {\n await this.get(parameter);\n }\n catch {\n // ignore\n }\n },\n optimisticallyUpdateRelatedValues: (_supervisedAndSuccessful) => {\n // Only update currentValue for valid target values\n if (typeof value === \"number\"\n && value >= 0\n && value <= 99) {\n if (this.isSinglecast()) {\n this.tryGetValueDB()?.setValue(currentValueValueId, value);\n }\n else if (this.isMulticast()) {\n // Figure out which nodes were affected by this command\n const affectedNodes = this.endpoint.node\n .physicalNodes.filter((node) => node\n .getEndpoint(this.endpoint.index)\n ?.supportsCC(this.ccId));\n // and optimistically update the currentValue\n for (const node of affectedNodes) {\n this.host\n .tryGetValueDB(node.id)\n ?.setValue(currentValueValueId, value);\n }\n }\n }\n },\n verifyChanges: () => {\n if (this.isSinglecast()) {\n // We query currentValue instead of targetValue to make sure that unsolicited updates cancel the scheduled poll\n this.schedulePoll(currentValueValueId, value, {\n duration,\n });\n }\n else {\n // For multicasts, do not schedule a refresh - this could cause a LOT of traffic\n }\n },\n };\n }\n };\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: WindowCoveringCCAPI, { property, propertyKey }) {\n switch (property) {\n case \"currentValue\":\n case \"targetValue\":\n case \"duration\":\n if (propertyKey == undefined) {\n throwMissingPropertyKey(this.ccId, property);\n }\n else if (typeof propertyKey !== \"number\") {\n throwUnsupportedPropertyKey(this.ccId, property, propertyKey);\n }\n return (await this.get(propertyKey))?.[property];\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n public async getSupported(): Promise<MaybeNotKnown<readonly WindowCoveringParameter[]>> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.SupportedGet);\n const cc = new WindowCoveringCCSupportedGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<WindowCoveringCCSupportedReport>(cc, this.commandOptions);\n return response?.supportedParameters;\n }\n @validateArgs_WindowCoveringCCAPI_get()\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get(parameter: WindowCoveringParameter) {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.Get);\n const cc = new WindowCoveringCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n });\n const response = await this.host.sendCommand<WindowCoveringCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"currentValue\", \"targetValue\", \"duration\"]);\n }\n }\n @validateArgs_WindowCoveringCCAPI_set()\n public async set(targetValues: {\n parameter: WindowCoveringParameter;\n value: number;\n }[], duration?: Duration | string): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.StartLevelChange);\n const cc = new WindowCoveringCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n targetValues,\n duration,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_WindowCoveringCCAPI_startLevelChange()\n public async startLevelChange(parameter: WindowCoveringParameter, direction: keyof typeof LevelChangeDirection, duration?: Duration | string): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.StartLevelChange);\n const cc = new WindowCoveringCCStartLevelChange({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n direction,\n duration,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_WindowCoveringCCAPI_stopLevelChange()\n public async stopLevelChange(parameter: WindowCoveringParameter): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.StopLevelChange);\n const cc = new WindowCoveringCCStopLevelChange({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n}\n@commandClass(CommandClasses[\"Window Covering\"])\n@implementedVersion(1)\n@ccValues(WindowCoveringCCValues)\nexport class WindowCoveringCC extends CommandClass {\n declare ccCommand: WindowCoveringCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Window Covering\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying supported window covering parameters...\",\n direction: \"outbound\",\n });\n const supported = await api.getSupported();\n if (supported?.length) {\n const logMessage = `supported window covering parameters:\n${supported\n .map((p) => `\u00B7 ${getEnumMemberName(WindowCoveringParameter, p)}`)\n .join(\"\\n\")}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n // Create metadata for all supported parameters\n for (const param of supported) {\n // Default values\n this.setMetadata(ctx, WindowCoveringCCValues.currentValue(param));\n this.setMetadata(ctx, WindowCoveringCCValues.targetValue(param));\n this.setMetadata(ctx, WindowCoveringCCValues.duration(param));\n // Level change values\n this.setMetadata(ctx, WindowCoveringCCValues.levelChangeUp(param));\n this.setMetadata(ctx, WindowCoveringCCValues.levelChangeDown(param));\n }\n // Query current values for all supported parameters\n await this.refreshValues(ctx, {\n onProgress: (completed, total) => node.reportInterviewProgress(completed, total),\n });\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Window Covering\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n });\n const parameters: number[] = this.getValue(ctx, WindowCoveringCCValues.supportedParameters) ?? [];\n // Only odd parameters have position support and need to be queried\n const queryableParameters = parameters.filter((param) => param % 2 != 0);\n for (const [i, param] of queryableParameters.entries()) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `querying position for parameter ${getEnumMemberName(WindowCoveringParameter, param)}...`,\n direction: \"outbound\",\n });\n await api.get(param);\n options?.onProgress?.(i + 1, queryableParameters.length);\n }\n }\n public translatePropertyKey(ctx: GetValueDB, property: string | number, propertyKey: string | number): string | undefined {\n if (typeof propertyKey === \"number\") {\n return getEnumMemberName(WindowCoveringParameter, propertyKey);\n }\n return super.translatePropertyKey(ctx, property, propertyKey);\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCSupportedReportOptions {\n supportedParameters: readonly WindowCoveringParameter[];\n}\n@CCCommand(WindowCoveringCommand.SupportedReport)\n@ccValueProperty(\"supportedParameters\", WindowCoveringCCValues.supportedParameters)\nexport class WindowCoveringCCSupportedReport extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCSupportedReportOptions>) {\n super(options);\n this.supportedParameters = options.supportedParameters;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCSupportedReport {\n validatePayload(raw.payload.length >= 1);\n const numBitmaskBytes = raw.payload[0] & 0b1111;\n validatePayload(raw.payload.length >= 1 + numBitmaskBytes);\n const bitmask = raw.payload.subarray(1, 1 + numBitmaskBytes);\n const supportedParameters: WindowCoveringParameter[] = parseBitMask(bitmask, WindowCoveringParameter[\"Outbound Left (no position)\"]);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedParameters,\n });\n }\n public readonly supportedParameters: readonly WindowCoveringParameter[];\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const bitmask = encodeBitMask(this.supportedParameters, undefined, WindowCoveringParameter[\"Outbound Left (no position)\"]).subarray(0, 15);\n const numBitmaskBytes = bitmask.length & 0b1111;\n this.payload = Bytes.concat([\n [numBitmaskBytes],\n bitmask.subarray(0, numBitmaskBytes),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supported parameters\": this.supportedParameters\n .map((p) => `\\n\u00B7 ${getEnumMemberName(WindowCoveringParameter, p)}`)\n .join(\"\"),\n },\n };\n }\n}\n@CCCommand(WindowCoveringCommand.SupportedGet)\n@expectedCCResponse(WindowCoveringCCSupportedReport)\nexport class WindowCoveringCCSupportedGet extends WindowCoveringCC {\n}\n// @publicAPI\nexport interface WindowCoveringCCReportOptions {\n parameter: WindowCoveringParameter;\n currentValue: number;\n targetValue: number;\n duration: Duration;\n}\n@CCCommand(WindowCoveringCommand.Report)\n@ccValueProperty(\"currentValue\", WindowCoveringCCValues.currentValue, (self) => [self.parameter])\n@ccValueProperty(\"targetValue\", WindowCoveringCCValues.targetValue, (self) => [self.parameter])\n@ccValueProperty(\"duration\", WindowCoveringCCValues.duration, (self) => [self.parameter])\nexport class WindowCoveringCCReport extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.parameter = options.parameter;\n this.currentValue = options.currentValue;\n this.targetValue = options.targetValue;\n this.duration = options.duration;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCReport {\n validatePayload(raw.payload.length >= 4);\n const parameter: WindowCoveringParameter = raw.payload[0];\n validatePayload(isEnumMember(WindowCoveringParameter, parameter));\n validatePayload(raw.payload[1] <= 99, raw.payload[2] <= 99);\n const currentValue = raw.payload[1];\n const targetValue = raw.payload[2];\n const duration = Duration.parseReport(raw.payload[3])\n ?? Duration.unknown();\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n currentValue,\n targetValue,\n duration,\n });\n }\n public readonly parameter: WindowCoveringParameter;\n public readonly currentValue: number;\n public readonly targetValue: number;\n public readonly duration: Duration;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.parameter,\n this.currentValue,\n this.targetValue,\n this.duration.serializeReport(),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n \"current value\": this.currentValue,\n \"target value\": this.targetValue,\n duration: this.duration.toString(),\n },\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCGetOptions {\n parameter: WindowCoveringParameter;\n}\nfunction testResponseForWindowCoveringGet(sent: WindowCoveringCCGet, received: WindowCoveringCCReport) {\n return received.parameter === sent.parameter;\n}\n@CCCommand(WindowCoveringCommand.Get)\n@expectedCCResponse(WindowCoveringCCReport, testResponseForWindowCoveringGet)\nexport class WindowCoveringCCGet extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCGetOptions>) {\n super(options);\n this.parameter = options.parameter;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCGet {\n validatePayload(raw.payload.length >= 1);\n const parameter: WindowCoveringParameter = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n });\n }\n public parameter: WindowCoveringParameter;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.parameter]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n },\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCSetOptions {\n targetValues: {\n parameter: WindowCoveringParameter;\n value: number;\n }[];\n duration?: Duration | string;\n}\n@CCCommand(WindowCoveringCommand.Set)\n@useSupervision()\nexport class WindowCoveringCCSet extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCSetOptions>) {\n super(options);\n this.targetValues = options.targetValues;\n this.duration = Duration.from(options.duration);\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCSet {\n validatePayload(raw.payload.length >= 1);\n const numEntries = raw.payload[0] & 0b11111;\n validatePayload(raw.payload.length >= 1 + numEntries * 2);\n const targetValues: WindowCoveringCCSetOptions[\"targetValues\"] = [];\n for (let i = 0; i < numEntries; i++) {\n const offset = 1 + i * 2;\n targetValues.push({\n parameter: raw.payload[offset],\n value: raw.payload[offset + 1],\n });\n }\n let duration: Duration | undefined;\n if (raw.payload.length >= 2 + numEntries * 2) {\n duration = Duration.parseSet(raw.payload[1 + numEntries * 2]);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n targetValues,\n duration,\n });\n }\n public targetValues: {\n parameter: WindowCoveringParameter;\n value: number;\n }[];\n public duration: Duration | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const numEntries = this.targetValues.length & 0b11111;\n this.payload = new Bytes(2 + numEntries * 2);\n this.payload[0] = numEntries;\n for (let i = 0; i < numEntries; i++) {\n const offset = 1 + i * 2;\n this.payload[offset] = this.targetValues[i].parameter;\n this.payload[offset + 1] = this.targetValues[i].value;\n }\n this.payload[this.payload.length - 1] = (this.duration ?? Duration.default()).serializeSet();\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {};\n for (const { parameter, value } of this.targetValues) {\n message[getEnumMemberName(WindowCoveringParameter, parameter)] =\n value;\n }\n if (this.duration) {\n message.duration = this.duration.toString();\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCStartLevelChangeOptions {\n parameter: WindowCoveringParameter;\n direction: keyof typeof LevelChangeDirection;\n duration?: Duration | string;\n}\n@CCCommand(WindowCoveringCommand.StartLevelChange)\n@useSupervision()\nexport class WindowCoveringCCStartLevelChange extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCStartLevelChangeOptions>) {\n super(options);\n this.parameter = options.parameter;\n this.direction = options.direction;\n this.duration = Duration.from(options.duration);\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCStartLevelChange {\n validatePayload(raw.payload.length >= 2);\n const direction = !!(raw.payload[0] & 64)\n ? \"down\"\n : \"up\";\n const parameter: WindowCoveringParameter = raw.payload[1];\n let duration: Duration | undefined;\n if (raw.payload.length >= 3) {\n duration = Duration.parseSet(raw.payload[2]);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n direction,\n parameter,\n duration,\n });\n }\n public parameter: WindowCoveringParameter;\n public direction: keyof typeof LevelChangeDirection;\n public duration: Duration | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.direction === \"down\" ? 64 : 0,\n this.parameter,\n (this.duration ?? Duration.default()).serializeSet(),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n direction: this.direction,\n };\n if (this.duration) {\n message.duration = this.duration.toString();\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCStopLevelChangeOptions {\n parameter: WindowCoveringParameter;\n}\n@CCCommand(WindowCoveringCommand.StopLevelChange)\n@useSupervision()\nexport class WindowCoveringCCStopLevelChange extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCStopLevelChangeOptions>) {\n super(options);\n this.parameter = options.parameter;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCStopLevelChange {\n validatePayload(raw.payload.length >= 1);\n const parameter: WindowCoveringParameter = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n });\n }\n public parameter: WindowCoveringParameter;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.parameter]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n },\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -24,6 +24,7 @@ export declare class ZWaveProtocolCCNodeInformationFrame extends ZWaveProtocolCC
|
|
|
24
24
|
supportsSecurity: boolean;
|
|
25
25
|
supportsBeaming: boolean;
|
|
26
26
|
supportedCCs: CommandClasses[];
|
|
27
|
+
controlledCCs: CommandClasses[];
|
|
27
28
|
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
28
29
|
}
|
|
29
30
|
export declare class ZWaveProtocolCCRequestNodeInformationFrame extends ZWaveProtocolCC {
|
|
@@ -169,6 +170,7 @@ export declare class ZWaveProtocolCCNewNodeRegistered extends ZWaveProtocolCC im
|
|
|
169
170
|
supportsSecurity: boolean;
|
|
170
171
|
supportsBeaming: boolean;
|
|
171
172
|
supportedCCs: CommandClasses[];
|
|
173
|
+
controlledCCs: CommandClasses[];
|
|
172
174
|
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
173
175
|
}
|
|
174
176
|
export interface ZWaveProtocolCCNewRangeRegisteredOptions {
|
|
@@ -135,6 +135,7 @@ let ZWaveProtocolCCNodeInformationFrame = (() => {
|
|
|
135
135
|
this.supportsSecurity = options.supportsSecurity;
|
|
136
136
|
this.supportsBeaming = options.supportsBeaming;
|
|
137
137
|
this.supportedCCs = options.supportedCCs;
|
|
138
|
+
this.controlledCCs = options.controlledCCs ?? [];
|
|
138
139
|
}
|
|
139
140
|
static from(raw, ctx) {
|
|
140
141
|
const nif = (0, import_core.parseNodeInformationFrame)(raw.payload);
|
|
@@ -156,6 +157,7 @@ let ZWaveProtocolCCNodeInformationFrame = (() => {
|
|
|
156
157
|
supportsSecurity;
|
|
157
158
|
supportsBeaming;
|
|
158
159
|
supportedCCs;
|
|
160
|
+
controlledCCs;
|
|
159
161
|
serialize(ctx) {
|
|
160
162
|
this.payload = (0, import_core.encodeNodeInformationFrame)(this);
|
|
161
163
|
return super.serialize(ctx);
|
|
@@ -755,6 +757,7 @@ let ZWaveProtocolCCNewNodeRegistered = (() => {
|
|
|
755
757
|
this.supportsSecurity = options.supportsSecurity;
|
|
756
758
|
this.supportsBeaming = options.supportsBeaming;
|
|
757
759
|
this.supportedCCs = options.supportedCCs;
|
|
760
|
+
this.controlledCCs = options.controlledCCs ?? [];
|
|
758
761
|
}
|
|
759
762
|
static from(raw, ctx) {
|
|
760
763
|
(0, import_core.validatePayload)(raw.payload.length >= 1);
|
|
@@ -780,6 +783,7 @@ let ZWaveProtocolCCNewNodeRegistered = (() => {
|
|
|
780
783
|
supportsSecurity;
|
|
781
784
|
supportsBeaming;
|
|
782
785
|
supportedCCs;
|
|
786
|
+
controlledCCs;
|
|
783
787
|
serialize(ctx) {
|
|
784
788
|
this.payload = import_shared.Bytes.concat([
|
|
785
789
|
[this.newNodeId],
|