@zwave-js/cc 15.31.1 → 15.32.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/AlarmSensorCC.js +2 -3
- package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
- package/build/cjs/cc/AssociationGroupInfoCC.js +5 -2
- package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
- package/build/cjs/cc/BarrierOperatorCC.js +5 -8
- package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
- package/build/cjs/cc/BinarySensorCC.js +1 -2
- package/build/cjs/cc/BinarySensorCC.js.map +2 -2
- package/build/cjs/cc/ColorSwitchCC.js +3 -5
- package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
- package/build/cjs/cc/ConfigurationCC.d.ts +7 -0
- package/build/cjs/cc/ConfigurationCC.js +28 -8
- package/build/cjs/cc/ConfigurationCC.js.map +2 -2
- package/build/cjs/cc/EntryControlCC.js +3 -2
- package/build/cjs/cc/EntryControlCC.js.map +2 -2
- package/build/cjs/cc/IndicatorCC.js +3 -3
- package/build/cjs/cc/IndicatorCC.js.map +2 -2
- package/build/cjs/cc/IrrigationCC.js.map +1 -1
- package/build/cjs/cc/LanguageCC.js +6 -2
- package/build/cjs/cc/LanguageCC.js.map +2 -2
- package/build/cjs/cc/ManufacturerSpecificCC.js +1 -1
- package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
- package/build/cjs/cc/MeterCC.js +25 -4
- package/build/cjs/cc/MeterCC.js.map +2 -2
- package/build/cjs/cc/NodeNamingCC.js +2 -2
- package/build/cjs/cc/NodeNamingCC.js.map +2 -2
- package/build/cjs/cc/NotificationCC.js +10 -11
- package/build/cjs/cc/NotificationCC.js.map +2 -2
- package/build/cjs/cc/PowerlevelCC.js +1 -1
- package/build/cjs/cc/PowerlevelCC.js.map +2 -2
- package/build/cjs/cc/Security2CC.js +11 -6
- package/build/cjs/cc/Security2CC.js.map +2 -2
- package/build/cjs/cc/SecurityCC.js +2 -1
- package/build/cjs/cc/SecurityCC.js.map +2 -2
- package/build/cjs/cc/SoundSwitchCC.js +1 -1
- package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
- package/build/cjs/cc/ThermostatSetpointCC.js +2 -1
- package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
- package/build/cjs/cc/UserCredentialCC.d.ts +6 -0
- package/build/cjs/cc/UserCredentialCC.js +81 -6
- package/build/cjs/cc/UserCredentialCC.js.map +2 -2
- package/build/cjs/cc/WindowCoveringCC.js +1 -2
- package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
- package/build/cjs/cc/_CCValues.generated.d.ts +2 -2
- package/build/cjs/lib/Security2/Extension.js +2 -1
- package/build/cjs/lib/Security2/Extension.js.map +2 -2
- package/build/cjs/lib/securityLogging.d.ts +6 -0
- package/build/cjs/lib/securityLogging.js +34 -0
- package/build/cjs/lib/securityLogging.js.map +7 -0
- package/build/cjs/lib/serializers.js +3 -0
- package/build/cjs/lib/serializers.js.map +2 -2
- package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
- package/build/esm/cc/AlarmSensorCC.js +5 -3
- package/build/esm/cc/AlarmSensorCC.js.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.js +10 -6
- 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 +6 -9
- 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 +2 -3
- 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 +4 -7
- package/build/esm/cc/ColorSwitchCC.js.map +1 -1
- package/build/esm/cc/ConfigurationCC.d.ts +7 -0
- package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/ConfigurationCC.js +34 -13
- package/build/esm/cc/ConfigurationCC.js.map +1 -1
- package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
- package/build/esm/cc/EntryControlCC.js +4 -3
- package/build/esm/cc/EntryControlCC.js.map +1 -1
- package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
- package/build/esm/cc/IndicatorCC.js +4 -6
- package/build/esm/cc/IndicatorCC.js.map +1 -1
- 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 +8 -3
- package/build/esm/cc/LanguageCC.js.map +1 -1
- package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
- package/build/esm/cc/ManufacturerSpecificCC.js +2 -2
- package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
- package/build/esm/cc/MeterCC.d.ts.map +1 -1
- package/build/esm/cc/MeterCC.js +27 -5
- package/build/esm/cc/MeterCC.js.map +1 -1
- package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
- package/build/esm/cc/NodeNamingCC.js +3 -3
- 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 +22 -24
- package/build/esm/cc/NotificationCC.js.map +1 -1
- package/build/esm/cc/PowerlevelCC.d.ts.map +1 -1
- package/build/esm/cc/PowerlevelCC.js +2 -2
- package/build/esm/cc/PowerlevelCC.js.map +1 -1
- package/build/esm/cc/Security2CC.d.ts.map +1 -1
- package/build/esm/cc/Security2CC.js +21 -10
- package/build/esm/cc/Security2CC.js.map +1 -1
- package/build/esm/cc/SecurityCC.d.ts.map +1 -1
- package/build/esm/cc/SecurityCC.js +4 -4
- package/build/esm/cc/SecurityCC.js.map +1 -1
- package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/SoundSwitchCC.js +2 -2
- package/build/esm/cc/SoundSwitchCC.js.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.js +5 -1
- package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
- package/build/esm/cc/UserCredentialCC.d.ts +6 -0
- package/build/esm/cc/UserCredentialCC.d.ts.map +1 -1
- package/build/esm/cc/UserCredentialCC.js +103 -13
- package/build/esm/cc/UserCredentialCC.js.map +1 -1
- package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
- package/build/esm/cc/WindowCoveringCC.js +3 -4
- package/build/esm/cc/WindowCoveringCC.js.map +1 -1
- package/build/esm/cc/_CCValues.generated.d.ts +2 -2
- package/build/esm/cc/_CCValues.generated.d.ts.map +1 -1
- package/build/esm/lib/Security2/Extension.d.ts.map +1 -1
- package/build/esm/lib/Security2/Extension.js +3 -3
- package/build/esm/lib/Security2/Extension.js.map +1 -1
- package/build/esm/lib/securityLogging.d.ts +6 -0
- package/build/esm/lib/securityLogging.d.ts.map +1 -0
- package/build/esm/lib/securityLogging.js +10 -0
- package/build/esm/lib/securityLogging.js.map +1 -0
- package/build/esm/lib/serializers.d.ts.map +1 -1
- package/build/esm/lib/serializers.js +4 -0
- package/build/esm/lib/serializers.js.map +1 -1
- package/package.json +11 -11
|
@@ -459,8 +459,7 @@ let WindowCoveringCCReport = (() => {
|
|
|
459
459
|
}
|
|
460
460
|
static from(raw, ctx) {
|
|
461
461
|
(0, import_core.validatePayload)(raw.payload.length >= 4);
|
|
462
|
-
const parameter = raw.payload[0];
|
|
463
|
-
(0, import_core.validatePayload)((0, import_shared.isEnumMember)(import_Types.WindowCoveringParameter, parameter));
|
|
462
|
+
const parameter = (0, import_core.parseEnumValue)(import_Types.WindowCoveringParameter, raw.payload[0]);
|
|
464
463
|
(0, import_core.validatePayload)(raw.payload[1] <= 99, raw.payload[2] <= 99);
|
|
465
464
|
const currentValue = raw.payload[1];
|
|
466
465
|
const targetValue = raw.payload[2];
|
|
@@ -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, logList, logText, 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.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.Set);\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 tag: \"interview\",\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 = logText(\"supported window covering parameters:\", {\n nested: logList(supported.map((p) => getEnumMemberName(WindowCoveringParameter, p))),\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 tag: \"interview\",\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 tag: options?.tag,\n });\n const parameters: number[] = this.getValue(ctx, WindowCoveringCCValues.supportedParameters)\n ?? [];\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\": logList(this.supportedParameters.map((p) => getEnumMemberName(WindowCoveringParameter, p))),\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) => [\n self.parameter,\n])\n@ccValueProperty(\"duration\", WindowCoveringCCValues.duration, (self) => [\n self.parameter,\n])\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]) ?? 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) ? \"down\" : \"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, logList, logText, parseBitMask, parseEnumValue, 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.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.Set);\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 tag: \"interview\",\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 = logText(\"supported window covering parameters:\", {\n nested: logList(supported.map((p) => getEnumMemberName(WindowCoveringParameter, p))),\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 tag: \"interview\",\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 tag: options?.tag,\n });\n const parameters: number[] = this.getValue(ctx, WindowCoveringCCValues.supportedParameters)\n ?? [];\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\": logList(this.supportedParameters.map((p) => getEnumMemberName(WindowCoveringParameter, p))),\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) => [\n self.parameter,\n])\n@ccValueProperty(\"duration\", WindowCoveringCCValues.duration, (self) => [\n self.parameter,\n])\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 = parseEnumValue(WindowCoveringParameter, raw.payload[0]);\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]) ?? 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) ? \"down\" : \"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
|
}
|
|
@@ -774,7 +774,7 @@ export declare const BatteryCCValues: Readonly<{
|
|
|
774
774
|
readonly writeable: false;
|
|
775
775
|
readonly type: "number";
|
|
776
776
|
readonly label: "Temperature";
|
|
777
|
-
readonly unit: "
|
|
777
|
+
readonly unit: "°C";
|
|
778
778
|
};
|
|
779
779
|
options: {
|
|
780
780
|
readonly internal: false;
|
|
@@ -9583,7 +9583,7 @@ export declare const CCValues: {
|
|
|
9583
9583
|
readonly writeable: false;
|
|
9584
9584
|
readonly type: "number";
|
|
9585
9585
|
readonly label: "Temperature";
|
|
9586
|
-
readonly unit: "
|
|
9586
|
+
readonly unit: "°C";
|
|
9587
9587
|
};
|
|
9588
9588
|
options: {
|
|
9589
9589
|
readonly internal: false;
|
|
@@ -37,6 +37,7 @@ var import_tslib = require("tslib");
|
|
|
37
37
|
var import_core = require("@zwave-js/core");
|
|
38
38
|
var import_reflection = require("@zwave-js/core/reflection");
|
|
39
39
|
var import_shared = require("@zwave-js/shared");
|
|
40
|
+
var import_securityLogging = require("../securityLogging.js");
|
|
40
41
|
var S2ExtensionType;
|
|
41
42
|
(function(S2ExtensionType2) {
|
|
42
43
|
S2ExtensionType2[S2ExtensionType2["SPAN"] = 1] = "SPAN";
|
|
@@ -300,7 +301,7 @@ let MPANExtension = (() => {
|
|
|
300
301
|
return super.serialize(moreToFollow);
|
|
301
302
|
}
|
|
302
303
|
toLogEntryDict() {
|
|
303
|
-
const mpanState = (0,
|
|
304
|
+
const mpanState = (0, import_securityLogging.shouldLogSecurityDetails)() ? (0, import_shared.buffer2hex)(this.innerMPANState) : "(hidden)";
|
|
304
305
|
return {
|
|
305
306
|
"group ID": this.groupId,
|
|
306
307
|
"MPAN state": mpanState
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src_gen/lib/Security2/Extension.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n\ttype LogPayloadText,\n\ttype MessageRecord,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tlogBuffer,\n\tlogDict,\n\tlogText,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { createSimpleReflectionDecorator } from \"@zwave-js/core/reflection\";\nimport {\n\tBytes,\n\ttype BytesView,\n\tbuffer2hex,\n\tgetEnumMemberName,\n\tgetenv,\n} from \"@zwave-js/shared\";\n\nenum S2ExtensionType {\n\tSPAN = 0x01,\n\tMPAN = 0x02,\n\tMGRP = 0x03,\n\tMOS = 0x04,\n}\n\nconst extensionTypeDecorator = createSimpleReflectionDecorator<\n\ttypeof Security2Extension,\n\t[type: S2ExtensionType],\n\tSecurity2ExtensionConstructor<Security2Extension>\n>({\n\tname: \"extensionType\",\n});\n\n/** Defines which S2 extension type a subclass of S2Extension has */\nexport const extensionType = extensionTypeDecorator.decorator;\n\n/** Returns which S2 extension type a subclass of S2Extension has */\nexport const getExtensionType = extensionTypeDecorator.lookupValue;\n\n/**\n * Looks up the S2 extension constructor for a given S2 extension type\n */\nexport const getS2ExtensionConstructor =\n\textensionTypeDecorator.lookupConstructor;\n\nexport type Security2ExtensionConstructor<T extends Security2Extension> =\n\ttypeof Security2Extension & {\n\t\tnew (options: Security2ExtensionOptions): T;\n\t};\n\nexport enum ValidateS2ExtensionResult {\n\tOK,\n\tDiscardExtension,\n\tDiscardCommand,\n}\n\n/** Tests if the extension may be accepted */\nexport function validateS2Extension(\n\text: Security2Extension,\n\twasEncrypted: boolean,\n): ValidateS2ExtensionResult {\n\tif (ext instanceof InvalidExtension) {\n\t\t// The extension could not be parsed, ignore it\n\t\treturn ValidateS2ExtensionResult.DiscardExtension;\n\t}\n\n\tif (ext.critical && !(ext.type in S2ExtensionType)) {\n\t\t// A receiving node MUST discard the entire command if the Critical flag\n\t\t// is set to \u20181\u2019 and the Type field advertises a value that the\n\t\t// receiving node does not support.\n\t\treturn ValidateS2ExtensionResult.DiscardCommand;\n\t}\n\n\t// Check if the extension is correctly encrypted or not encrypted\n\tswitch (ext.type) {\n\t\tcase S2ExtensionType.MPAN:\n\t\t\tif (!wasEncrypted) {\n\t\t\t\treturn ValidateS2ExtensionResult.DiscardExtension;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase S2ExtensionType.SPAN:\n\t\tcase S2ExtensionType.MGRP:\n\t\tcase S2ExtensionType.MOS:\n\t\t\tif (wasEncrypted) {\n\t\t\t\treturn ValidateS2ExtensionResult.DiscardExtension;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\treturn ValidateS2ExtensionResult.OK;\n}\n\nexport class Security2ExtensionRaw {\n\tpublic constructor(\n\t\tpublic type: S2ExtensionType,\n\t\tpublic critical: boolean,\n\t\tpublic readonly moreToFollow: boolean,\n\t\tpublic payload: BytesView,\n\t) {}\n\n\tpublic static parse(data: BytesView): Security2ExtensionRaw {\n\t\tvalidatePayload(data.length >= 2);\n\t\tconst totalLength = data[0];\n\t\tconst moreToFollow = !!(data[1] & 0b1000_0000);\n\t\tconst critical = !!(data[1] & 0b0100_0000);\n\t\tconst type = data[1] & 0b11_1111;\n\t\tconst payload = data.subarray(2, totalLength);\n\n\t\treturn new Security2ExtensionRaw(type, critical, moreToFollow, payload);\n\t}\n\n\tpublic withPayload(payload: Bytes): Security2ExtensionRaw {\n\t\treturn new Security2ExtensionRaw(\n\t\t\tthis.type,\n\t\t\tthis.critical,\n\t\t\tthis.moreToFollow,\n\t\t\tpayload,\n\t\t);\n\t}\n}\n\ninterface Security2ExtensionBaseOptions {\n\tcritical?: boolean;\n\tmoreToFollow?: boolean;\n}\n\ninterface Security2ExtensionOptions extends Security2ExtensionBaseOptions {\n\ttype?: S2ExtensionType;\n\tpayload?: BytesView;\n}\n\nexport class Security2Extension {\n\tpublic constructor(options: Security2ExtensionOptions) {\n\t\tconst {\n\t\t\t// Try to determine the extension type if none is given\n\t\t\ttype = getExtensionType(this),\n\t\t\tcritical = false,\n\t\t\tmoreToFollow = false,\n\t\t\tpayload = new Uint8Array(),\n\t\t} = options;\n\n\t\tif (type == undefined) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"A Security2Extension must have a given or predefined extension type\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tthis.type = type;\n\t\tthis.critical = critical;\n\t\tthis.moreToFollow = moreToFollow;\n\t\tthis.payload = payload;\n\t}\n\n\tpublic static parse(data: BytesView): Security2Extension {\n\t\tconst raw = Security2ExtensionRaw.parse(data);\n\t\tconst Constructor =\n\t\t\tgetS2ExtensionConstructor(raw.type) ?? Security2Extension;\n\t\treturn Constructor.from(raw);\n\t}\n\n\t/** Creates an instance of the message that is serialized in the given buffer */\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\treturn new this({\n\t\t\ttype: raw.type,\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tpayload: raw.payload,\n\t\t});\n\t}\n\n\tpublic type: S2ExtensionType;\n\tpublic critical: boolean;\n\tpublic readonly moreToFollow?: boolean;\n\tpublic payload: BytesView;\n\n\tpublic isEncrypted(): boolean {\n\t\treturn false;\n\t}\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\treturn Bytes.concat([\n\t\t\t[\n\t\t\t\t2 + this.payload.length,\n\t\t\t\t(moreToFollow ? 0b1000_0000 : 0)\n\t\t\t\t\t| (this.critical ? 0b0100_0000 : 0)\n\t\t\t\t\t| (this.type & 0b11_1111),\n\t\t\t],\n\t\t\tthis.payload,\n\t\t]);\n\t}\n\n\t/** Returns the number of bytes the first extension in the buffer occupies */\n\tpublic static getExtensionLength(data: BytesView): {\n\t\texpected?: number;\n\t\tactual: number;\n\t} {\n\t\tconst actual = data[0];\n\t\tlet expected: number | undefined;\n\n\t\t// For known extensions, return the expected length\n\t\tconst type = data[1] & 0b11_1111;\n\t\tswitch (type) {\n\t\t\tcase S2ExtensionType.SPAN:\n\t\t\t\texpected = SPANExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t\tcase S2ExtensionType.MPAN:\n\t\t\t\texpected = MPANExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t\tcase S2ExtensionType.MGRP:\n\t\t\t\texpected = MGRPExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t\tcase S2ExtensionType.MOS:\n\t\t\t\texpected = MOSExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn { expected, actual };\n\t}\n\n\t/** Returns the number of bytes the serialized extension will occupy */\n\tpublic computeLength(): number {\n\t\treturn 2 + this.payload.length;\n\t}\n\n\tpublic toLogEntry(): LogPayloadText {\n\t\treturn logText([], {\n\t\t\ttags: [getEnumMemberName(S2ExtensionType, this.type)],\n\t\t\tnested: logDict(this.toLogEntryDict()),\n\t\t});\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\treturn {\n\t\t\tpayload: logBuffer(this.payload),\n\t\t};\n\t}\n}\n\nexport class InvalidExtension extends Security2Extension {}\n\ninterface SPANExtensionOptions {\n\tsenderEI: BytesView;\n}\n\n@extensionType(S2ExtensionType.SPAN)\nexport class SPANExtension extends Security2Extension {\n\tpublic constructor(\n\t\toptions: SPANExtensionOptions & Security2ExtensionBaseOptions,\n\t) {\n\t\tif (options.senderEI.length !== 16) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The sender's entropy must be a 16-byte buffer!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tsuper({ critical: true, ...options });\n\t\tthis.senderEI = options.senderEI;\n\t}\n\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\tvalidatePayload(raw.payload.length === 16);\n\t\tconst senderEI = raw.payload;\n\n\t\treturn new SPANExtension({\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tsenderEI,\n\t\t});\n\t}\n\n\tpublic senderEI: BytesView;\n\tpublic static readonly expectedLength = 18;\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\tthis.payload = this.senderEI;\n\t\treturn super.serialize(moreToFollow);\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\treturn {\n\t\t\t\"sender EI\": buffer2hex(this.senderEI),\n\t\t};\n\t}\n}\n\ninterface MPANExtensionOptions {\n\tgroupId: number;\n\tinnerMPANState: BytesView;\n}\n\n@extensionType(S2ExtensionType.MPAN)\nexport class MPANExtension extends Security2Extension {\n\tpublic constructor(\n\t\toptions: MPANExtensionOptions & Security2ExtensionBaseOptions,\n\t) {\n\t\tif (options.innerMPANState.length !== 16) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The inner MPAN state must be a 16-byte buffer!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tsuper({ critical: true, ...options });\n\t\tthis.groupId = options.groupId;\n\t\tthis.innerMPANState = options.innerMPANState;\n\t}\n\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\tvalidatePayload(raw.payload.length === 17);\n\t\tconst groupId = raw.payload[0];\n\t\tconst innerMPANState = raw.payload.subarray(1);\n\n\t\treturn new MPANExtension({\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tgroupId,\n\t\t\tinnerMPANState,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\tpublic innerMPANState: BytesView;\n\n\tpublic isEncrypted(): boolean {\n\t\treturn true;\n\t}\n\n\tpublic static readonly expectedLength = 19;\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\tthis.payload = Bytes.concat([[this.groupId], this.innerMPANState]);\n\t\treturn super.serialize(moreToFollow);\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\tconst mpanState =\n\t\t\tgetenv(\"NODE_ENV\") === \"test\"\n\t\t\t|| getenv(\"NODE_ENV\") === \"development\"\n\t\t\t\t? buffer2hex(this.innerMPANState)\n\t\t\t\t: \"(hidden)\";\n\t\treturn {\n\t\t\t\"group ID\": this.groupId,\n\t\t\t\"MPAN state\": mpanState,\n\t\t};\n\t}\n}\n\ninterface MGRPExtensionOptions {\n\tgroupId: number;\n}\n\n@extensionType(S2ExtensionType.MGRP)\nexport class MGRPExtension extends Security2Extension {\n\tpublic constructor(\n\t\toptions: MGRPExtensionOptions & Security2ExtensionBaseOptions,\n\t) {\n\t\tsuper({ critical: true, ...options });\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\tvalidatePayload(raw.payload.length === 1);\n\t\tconst groupId = raw.payload[0];\n\n\t\treturn new MGRPExtension({\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic static readonly expectedLength = 3;\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\tthis.payload = Bytes.from([this.groupId]);\n\t\treturn super.serialize(moreToFollow);\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\treturn {\n\t\t\t\"group ID\": this.groupId,\n\t\t};\n\t}\n}\n\n@extensionType(S2ExtensionType.MOS)\nexport class MOSExtension extends Security2Extension {\n\tpublic constructor(options: Security2ExtensionBaseOptions = {}) {\n\t\tsuper({ critical: false, ...options });\n\t}\n\n\tpublic static readonly expectedLength = 2;\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kBASO;AACP,wBAAgD;AAChD,
|
|
4
|
+
"sourcesContent": ["import {\n\ttype LogPayloadText,\n\ttype MessageRecord,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tlogBuffer,\n\tlogDict,\n\tlogText,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { createSimpleReflectionDecorator } from \"@zwave-js/core/reflection\";\nimport {\n\tBytes,\n\ttype BytesView,\n\tbuffer2hex,\n\tgetEnumMemberName,\n} from \"@zwave-js/shared\";\n\nimport { shouldLogSecurityDetails } from \"../securityLogging.js\";\n\nenum S2ExtensionType {\n\tSPAN = 0x01,\n\tMPAN = 0x02,\n\tMGRP = 0x03,\n\tMOS = 0x04,\n}\n\nconst extensionTypeDecorator = createSimpleReflectionDecorator<\n\ttypeof Security2Extension,\n\t[type: S2ExtensionType],\n\tSecurity2ExtensionConstructor<Security2Extension>\n>({\n\tname: \"extensionType\",\n});\n\n/** Defines which S2 extension type a subclass of S2Extension has */\nexport const extensionType = extensionTypeDecorator.decorator;\n\n/** Returns which S2 extension type a subclass of S2Extension has */\nexport const getExtensionType = extensionTypeDecorator.lookupValue;\n\n/**\n * Looks up the S2 extension constructor for a given S2 extension type\n */\nexport const getS2ExtensionConstructor =\n\textensionTypeDecorator.lookupConstructor;\n\nexport type Security2ExtensionConstructor<T extends Security2Extension> =\n\ttypeof Security2Extension & {\n\t\tnew (options: Security2ExtensionOptions): T;\n\t};\n\nexport enum ValidateS2ExtensionResult {\n\tOK,\n\tDiscardExtension,\n\tDiscardCommand,\n}\n\n/** Tests if the extension may be accepted */\nexport function validateS2Extension(\n\text: Security2Extension,\n\twasEncrypted: boolean,\n): ValidateS2ExtensionResult {\n\tif (ext instanceof InvalidExtension) {\n\t\t// The extension could not be parsed, ignore it\n\t\treturn ValidateS2ExtensionResult.DiscardExtension;\n\t}\n\n\tif (ext.critical && !(ext.type in S2ExtensionType)) {\n\t\t// A receiving node MUST discard the entire command if the Critical flag\n\t\t// is set to \u20181\u2019 and the Type field advertises a value that the\n\t\t// receiving node does not support.\n\t\treturn ValidateS2ExtensionResult.DiscardCommand;\n\t}\n\n\t// Check if the extension is correctly encrypted or not encrypted\n\tswitch (ext.type) {\n\t\tcase S2ExtensionType.MPAN:\n\t\t\tif (!wasEncrypted) {\n\t\t\t\treturn ValidateS2ExtensionResult.DiscardExtension;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase S2ExtensionType.SPAN:\n\t\tcase S2ExtensionType.MGRP:\n\t\tcase S2ExtensionType.MOS:\n\t\t\tif (wasEncrypted) {\n\t\t\t\treturn ValidateS2ExtensionResult.DiscardExtension;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\treturn ValidateS2ExtensionResult.OK;\n}\n\nexport class Security2ExtensionRaw {\n\tpublic constructor(\n\t\tpublic type: S2ExtensionType,\n\t\tpublic critical: boolean,\n\t\tpublic readonly moreToFollow: boolean,\n\t\tpublic payload: BytesView,\n\t) {}\n\n\tpublic static parse(data: BytesView): Security2ExtensionRaw {\n\t\tvalidatePayload(data.length >= 2);\n\t\tconst totalLength = data[0];\n\t\tconst moreToFollow = !!(data[1] & 0b1000_0000);\n\t\tconst critical = !!(data[1] & 0b0100_0000);\n\t\tconst type = data[1] & 0b11_1111;\n\t\tconst payload = data.subarray(2, totalLength);\n\n\t\treturn new Security2ExtensionRaw(type, critical, moreToFollow, payload);\n\t}\n\n\tpublic withPayload(payload: Bytes): Security2ExtensionRaw {\n\t\treturn new Security2ExtensionRaw(\n\t\t\tthis.type,\n\t\t\tthis.critical,\n\t\t\tthis.moreToFollow,\n\t\t\tpayload,\n\t\t);\n\t}\n}\n\ninterface Security2ExtensionBaseOptions {\n\tcritical?: boolean;\n\tmoreToFollow?: boolean;\n}\n\ninterface Security2ExtensionOptions extends Security2ExtensionBaseOptions {\n\ttype?: S2ExtensionType;\n\tpayload?: BytesView;\n}\n\nexport class Security2Extension {\n\tpublic constructor(options: Security2ExtensionOptions) {\n\t\tconst {\n\t\t\t// Try to determine the extension type if none is given\n\t\t\ttype = getExtensionType(this),\n\t\t\tcritical = false,\n\t\t\tmoreToFollow = false,\n\t\t\tpayload = new Uint8Array(),\n\t\t} = options;\n\n\t\tif (type == undefined) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"A Security2Extension must have a given or predefined extension type\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tthis.type = type;\n\t\tthis.critical = critical;\n\t\tthis.moreToFollow = moreToFollow;\n\t\tthis.payload = payload;\n\t}\n\n\tpublic static parse(data: BytesView): Security2Extension {\n\t\tconst raw = Security2ExtensionRaw.parse(data);\n\t\tconst Constructor =\n\t\t\tgetS2ExtensionConstructor(raw.type) ?? Security2Extension;\n\t\treturn Constructor.from(raw);\n\t}\n\n\t/** Creates an instance of the message that is serialized in the given buffer */\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\treturn new this({\n\t\t\ttype: raw.type,\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tpayload: raw.payload,\n\t\t});\n\t}\n\n\tpublic type: S2ExtensionType;\n\tpublic critical: boolean;\n\tpublic readonly moreToFollow?: boolean;\n\tpublic payload: BytesView;\n\n\tpublic isEncrypted(): boolean {\n\t\treturn false;\n\t}\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\treturn Bytes.concat([\n\t\t\t[\n\t\t\t\t2 + this.payload.length,\n\t\t\t\t(moreToFollow ? 0b1000_0000 : 0)\n\t\t\t\t\t| (this.critical ? 0b0100_0000 : 0)\n\t\t\t\t\t| (this.type & 0b11_1111),\n\t\t\t],\n\t\t\tthis.payload,\n\t\t]);\n\t}\n\n\t/** Returns the number of bytes the first extension in the buffer occupies */\n\tpublic static getExtensionLength(data: BytesView): {\n\t\texpected?: number;\n\t\tactual: number;\n\t} {\n\t\tconst actual = data[0];\n\t\tlet expected: number | undefined;\n\n\t\t// For known extensions, return the expected length\n\t\tconst type = data[1] & 0b11_1111;\n\t\tswitch (type) {\n\t\t\tcase S2ExtensionType.SPAN:\n\t\t\t\texpected = SPANExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t\tcase S2ExtensionType.MPAN:\n\t\t\t\texpected = MPANExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t\tcase S2ExtensionType.MGRP:\n\t\t\t\texpected = MGRPExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t\tcase S2ExtensionType.MOS:\n\t\t\t\texpected = MOSExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn { expected, actual };\n\t}\n\n\t/** Returns the number of bytes the serialized extension will occupy */\n\tpublic computeLength(): number {\n\t\treturn 2 + this.payload.length;\n\t}\n\n\tpublic toLogEntry(): LogPayloadText {\n\t\treturn logText([], {\n\t\t\ttags: [getEnumMemberName(S2ExtensionType, this.type)],\n\t\t\tnested: logDict(this.toLogEntryDict()),\n\t\t});\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\treturn {\n\t\t\tpayload: logBuffer(this.payload),\n\t\t};\n\t}\n}\n\nexport class InvalidExtension extends Security2Extension {}\n\ninterface SPANExtensionOptions {\n\tsenderEI: BytesView;\n}\n\n@extensionType(S2ExtensionType.SPAN)\nexport class SPANExtension extends Security2Extension {\n\tpublic constructor(\n\t\toptions: SPANExtensionOptions & Security2ExtensionBaseOptions,\n\t) {\n\t\tif (options.senderEI.length !== 16) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The sender's entropy must be a 16-byte buffer!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tsuper({ critical: true, ...options });\n\t\tthis.senderEI = options.senderEI;\n\t}\n\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\tvalidatePayload(raw.payload.length === 16);\n\t\tconst senderEI = raw.payload;\n\n\t\treturn new SPANExtension({\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tsenderEI,\n\t\t});\n\t}\n\n\tpublic senderEI: BytesView;\n\tpublic static readonly expectedLength = 18;\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\tthis.payload = this.senderEI;\n\t\treturn super.serialize(moreToFollow);\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\treturn {\n\t\t\t\"sender EI\": buffer2hex(this.senderEI),\n\t\t};\n\t}\n}\n\ninterface MPANExtensionOptions {\n\tgroupId: number;\n\tinnerMPANState: BytesView;\n}\n\n@extensionType(S2ExtensionType.MPAN)\nexport class MPANExtension extends Security2Extension {\n\tpublic constructor(\n\t\toptions: MPANExtensionOptions & Security2ExtensionBaseOptions,\n\t) {\n\t\tif (options.innerMPANState.length !== 16) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The inner MPAN state must be a 16-byte buffer!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tsuper({ critical: true, ...options });\n\t\tthis.groupId = options.groupId;\n\t\tthis.innerMPANState = options.innerMPANState;\n\t}\n\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\tvalidatePayload(raw.payload.length === 17);\n\t\tconst groupId = raw.payload[0];\n\t\tconst innerMPANState = raw.payload.subarray(1);\n\n\t\treturn new MPANExtension({\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tgroupId,\n\t\t\tinnerMPANState,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\tpublic innerMPANState: BytesView;\n\n\tpublic isEncrypted(): boolean {\n\t\treturn true;\n\t}\n\n\tpublic static readonly expectedLength = 19;\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\tthis.payload = Bytes.concat([[this.groupId], this.innerMPANState]);\n\t\treturn super.serialize(moreToFollow);\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\tconst mpanState = shouldLogSecurityDetails()\n\t\t\t? buffer2hex(this.innerMPANState)\n\t\t\t: \"(hidden)\";\n\t\treturn {\n\t\t\t\"group ID\": this.groupId,\n\t\t\t\"MPAN state\": mpanState,\n\t\t};\n\t}\n}\n\ninterface MGRPExtensionOptions {\n\tgroupId: number;\n}\n\n@extensionType(S2ExtensionType.MGRP)\nexport class MGRPExtension extends Security2Extension {\n\tpublic constructor(\n\t\toptions: MGRPExtensionOptions & Security2ExtensionBaseOptions,\n\t) {\n\t\tsuper({ critical: true, ...options });\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\tvalidatePayload(raw.payload.length === 1);\n\t\tconst groupId = raw.payload[0];\n\n\t\treturn new MGRPExtension({\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic static readonly expectedLength = 3;\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\tthis.payload = Bytes.from([this.groupId]);\n\t\treturn super.serialize(moreToFollow);\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\treturn {\n\t\t\t\"group ID\": this.groupId,\n\t\t};\n\t}\n}\n\n@extensionType(S2ExtensionType.MOS)\nexport class MOSExtension extends Security2Extension {\n\tpublic constructor(options: Security2ExtensionBaseOptions = {}) {\n\t\tsuper({ critical: false, ...options });\n\t}\n\n\tpublic static readonly expectedLength = 2;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["S2ExtensionType", "ValidateS2ExtensionResult", "SPANExtension", "MPANExtension", "MGRPExtension"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether keys, nonces and plaintext of secure commands may be logged.
|
|
3
|
+
* This exposes key material, so it requires an explicit opt-in outside of tests.
|
|
4
|
+
*/
|
|
5
|
+
export declare function shouldLogSecurityDetails(): boolean;
|
|
6
|
+
//# sourceMappingURL=securityLogging.d.ts.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var securityLogging_exports = {};
|
|
21
|
+
__export(securityLogging_exports, {
|
|
22
|
+
shouldLogSecurityDetails: () => shouldLogSecurityDetails
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(securityLogging_exports);
|
|
25
|
+
var import_shared = require("@zwave-js/shared");
|
|
26
|
+
function shouldLogSecurityDetails() {
|
|
27
|
+
return (0, import_shared.getenv)("NODE_ENV") === "test" || (0, import_shared.getenv)("ZWAVEJS_LOG_SECURITY_DETAILS") === "true";
|
|
28
|
+
}
|
|
29
|
+
__name(shouldLogSecurityDetails, "shouldLogSecurityDetails");
|
|
30
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
31
|
+
0 && (module.exports = {
|
|
32
|
+
shouldLogSecurityDetails
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=securityLogging.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src_gen/lib/securityLogging.ts"],
|
|
4
|
+
"sourcesContent": ["import { getenv } from \"@zwave-js/shared\";\n\n/**\n * Whether keys, nonces and plaintext of secure commands may be logged.\n * This exposes key material, so it requires an explicit opt-in outside of tests.\n */\nexport function shouldLogSecurityDetails(): boolean {\n\treturn (\n\t\tgetenv(\"NODE_ENV\") === \"test\"\n\t\t|| getenv(\"ZWAVEJS_LOG_SECURITY_DETAILS\") === \"true\"\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;AAAA,oBAAuB;AAMjB,SAAU,2BAAwB;AACvC,aACC,sBAAO,UAAU,MAAM,cACpB,sBAAO,8BAA8B,MAAM;AAEhD;AALgB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -104,6 +104,9 @@ function encodeTimezone(tz) {
|
|
|
104
104
|
const delta = tz.dstOffset - tz.standardOffset;
|
|
105
105
|
const deltaMinutes = Math.abs(delta);
|
|
106
106
|
const deltaSign = delta < 0 ? 1 : 0;
|
|
107
|
+
if (deltaMinutes > 127) {
|
|
108
|
+
throw new import_core.ZWaveError("The given timezone is not valid!", import_core.ZWaveErrorCodes.CC_Invalid);
|
|
109
|
+
}
|
|
107
110
|
return import_shared.Bytes.from([
|
|
108
111
|
hourSign << 7 | hour & 127,
|
|
109
112
|
minutes,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src_gen/lib/serializers.ts"],
|
|
4
|
-
"sourcesContent": ["import { ZWaveError, ZWaveErrorCodes, validatePayload } from \"@zwave-js/core\";\nimport { Bytes, type BytesView } from \"@zwave-js/shared\";\nimport { clamp } from \"alcalzone-shared/math\";\n\nimport type {\n\tSetbackSpecialState,\n\tSetbackState,\n\tSwitchpoint,\n\tTimezone,\n} from \"./_Types.js\";\n\nexport const setbackSpecialStateValues: Record<SetbackSpecialState, number> = {\n\t\"Frost Protection\": 0x79,\n\t\"Energy Saving\": 0x7a,\n\tUnused: 0x7f,\n};\n\n/**\n * @publicAPI\n * Encodes a setback state to use in a ThermostatSetbackCC\n */\nexport function encodeSetbackState(state: SetbackState): Bytes {\n\tlet rawValue: number;\n\tif (typeof state === \"string\") {\n\t\trawValue = setbackSpecialStateValues[state];\n\t} else {\n\t\tstate = clamp(state, -12.8, 12);\n\t\trawValue = Math.round(state * 10);\n\t}\n\n\tconst ret = new Bytes(1);\n\tret.writeInt8(rawValue);\n\treturn ret;\n}\n\n/**\n * @publicAPI\n * Decodes a setback state used in a ThermostatSetbackCC\n */\nexport function decodeSetbackState(\n\tdata: BytesView,\n\toffset: number = 0,\n): SetbackState | undefined {\n\tconst val = Bytes.view(data).readInt8(offset);\n\tif (val > 120) {\n\t\t// Special state, try to look it up\n\t\tconst foundEntry = Object.entries(setbackSpecialStateValues).find(\n\t\t\t([, v]) => val === v,\n\t\t);\n\t\tif (!foundEntry) return;\n\t\treturn foundEntry[0] as SetbackSpecialState;\n\t} else {\n\t\treturn val / 10;\n\t}\n}\n\n/**\n * @publicAPI\n * Decodes a switch point used in a ClimateControlScheduleCC\n */\nexport function decodeSwitchpoint(data: BytesView): Switchpoint {\n\treturn {\n\t\thour: data[0] & 0b000_11111,\n\t\tminute: data[1] & 0b00_111111,\n\t\tstate: decodeSetbackState(data, 2),\n\t};\n}\n\n/**\n * @publicAPI\n * Encodes a switch point to use in a ClimateControlScheduleCC\n */\nexport function encodeSwitchpoint(point: Switchpoint): Bytes {\n\tif (point.state == undefined) {\n\t\tthrow new ZWaveError(\n\t\t\t\"The given Switchpoint is not valid!\",\n\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t);\n\t}\n\treturn Bytes.concat([\n\t\t[point.hour & 0b000_11111, point.minute & 0b00_111111],\n\t\tencodeSetbackState(point.state),\n\t]);\n}\n\n/**\n * @publicAPI\n * Decodes timezone information used in time related CCs\n */\nexport function parseTimezone(data: BytesView): Timezone {\n\t// The timezone structure is 3 bytes: hour, minute, delta\n\tvalidatePayload(data.length >= 3);\n\tconst hourSign = !!(data[0] & 0b1000_0000);\n\tconst hour = data[0] & 0b0111_1111;\n\tconst minute = data[1];\n\tconst standardOffset = (hourSign ? -1 : 1) * (hour * 60 + minute);\n\tconst deltaSign = !!(data[2] & 0b1000_0000);\n\tconst deltaMinutes = data[2] & 0b0111_1111;\n\tconst dstOffset = standardOffset + (deltaSign ? -1 : 1) * deltaMinutes;\n\n\treturn {\n\t\tstandardOffset,\n\t\tdstOffset,\n\t};\n}\n\n/**\n * @publicAPI\n * Decodes timezone information used in time related CCs\n */\nexport function encodeTimezone(tz: Timezone): Bytes {\n\tif (\n\t\tMath.abs(tz.standardOffset) >= 24 * 60\n\t\t|| Math.abs(tz.dstOffset) >= 24 * 60\n\t) {\n\t\tthrow new ZWaveError(\n\t\t\t\"The given timezone is not valid!\",\n\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t);\n\t}\n\tconst minutes = Math.abs(tz.standardOffset) % 60;\n\tconst hour = Math.floor(Math.abs(tz.standardOffset) / 60);\n\tconst hourSign = tz.standardOffset < 0 ? 1 : 0;\n\n\tconst delta = tz.dstOffset - tz.standardOffset;\n\tconst deltaMinutes = Math.abs(delta);\n\tconst deltaSign = delta < 0 ? 1 : 0;\n\n\treturn Bytes.from([\n\t\t(hourSign << 7) | (hour & 0b0111_1111),\n\t\tminutes,\n\t\t(deltaSign << 7) | (deltaMinutes & 0b0111_1111),\n\t]);\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAAA,kBAA6D;AAC7D,oBAAsC;AACtC,kBAAsB;AASf,MAAM,4BAAiE;EAC7E,oBAAoB;EACpB,iBAAiB;EACjB,QAAQ;;AAOH,SAAU,mBAAmB,OAAmB;AACrD,MAAI;AACJ,MAAI,OAAO,UAAU,UAAU;AAC9B,eAAW,0BAA0B,KAAK;EAC3C,OAAO;AACN,gBAAQ,mBAAM,OAAO,OAAO,EAAE;AAC9B,eAAW,KAAK,MAAM,QAAQ,EAAE;EACjC;AAEA,QAAM,MAAM,IAAI,oBAAM,CAAC;AACvB,MAAI,UAAU,QAAQ;AACtB,SAAO;AACR;AAZgB;AAkBV,SAAU,mBACf,MACA,SAAiB,GAAC;AAElB,QAAM,MAAM,oBAAM,KAAK,IAAI,EAAE,SAAS,MAAM;AAC5C,MAAI,MAAM,KAAK;AAEd,UAAM,aAAa,OAAO,QAAQ,yBAAyB,EAAE,KAC5D,CAAC,CAAC,EAAE,CAAC,MAAM,QAAQ,CAAC;AAErB,QAAI,CAAC;AAAY;AACjB,WAAO,WAAW,CAAC;EACpB,OAAO;AACN,WAAO,MAAM;EACd;AACD;AAfgB;AAqBV,SAAU,kBAAkB,MAAe;AAChD,SAAO;IACN,MAAM,KAAK,CAAC,IAAI;IAChB,QAAQ,KAAK,CAAC,IAAI;IAClB,OAAO,mBAAmB,MAAM,CAAC;;AAEnC;AANgB;AAYV,SAAU,kBAAkB,OAAkB;AACnD,MAAI,MAAM,SAAS,QAAW;AAC7B,UAAM,IAAI,uBACT,uCACA,4BAAgB,UAAU;EAE5B;AACA,SAAO,oBAAM,OAAO;IACnB,CAAC,MAAM,OAAO,IAAa,MAAM,SAAS,EAAW;IACrD,mBAAmB,MAAM,KAAK;GAC9B;AACF;AAXgB;AAiBV,SAAU,cAAc,MAAe;AAE5C,mCAAgB,KAAK,UAAU,CAAC;AAChC,QAAM,WAAW,CAAC,EAAE,KAAK,CAAC,IAAI;AAC9B,QAAM,OAAO,KAAK,CAAC,IAAI;AACvB,QAAM,SAAS,KAAK,CAAC;AACrB,QAAM,kBAAkB,WAAW,KAAK,MAAM,OAAO,KAAK;AAC1D,QAAM,YAAY,CAAC,EAAE,KAAK,CAAC,IAAI;AAC/B,QAAM,eAAe,KAAK,CAAC,IAAI;AAC/B,QAAM,YAAY,kBAAkB,YAAY,KAAK,KAAK;AAE1D,SAAO;IACN;IACA;;AAEF;AAfgB;AAqBV,SAAU,eAAe,IAAY;AAC1C,MACC,KAAK,IAAI,GAAG,cAAc,KAAK,KAAK,MACjC,KAAK,IAAI,GAAG,SAAS,KAAK,KAAK,IACjC;AACD,UAAM,IAAI,uBACT,oCACA,4BAAgB,UAAU;EAE5B;AACA,QAAM,UAAU,KAAK,IAAI,GAAG,cAAc,IAAI;AAC9C,QAAM,OAAO,KAAK,MAAM,KAAK,IAAI,GAAG,cAAc,IAAI,EAAE;AACxD,QAAM,WAAW,GAAG,iBAAiB,IAAI,IAAI;AAE7C,QAAM,QAAQ,GAAG,YAAY,GAAG;AAChC,QAAM,eAAe,KAAK,IAAI,KAAK;AACnC,QAAM,YAAY,QAAQ,IAAI,IAAI;AAElC,SAAO,oBAAM,KAAK;IAChB,YAAY,IAAM,OAAO;IAC1B;IACC,aAAa,IAAM,eAAe;GACnC;AACF;
|
|
4
|
+
"sourcesContent": ["import { ZWaveError, ZWaveErrorCodes, validatePayload } from \"@zwave-js/core\";\nimport { Bytes, type BytesView } from \"@zwave-js/shared\";\nimport { clamp } from \"alcalzone-shared/math\";\n\nimport type {\n\tSetbackSpecialState,\n\tSetbackState,\n\tSwitchpoint,\n\tTimezone,\n} from \"./_Types.js\";\n\nexport const setbackSpecialStateValues: Record<SetbackSpecialState, number> = {\n\t\"Frost Protection\": 0x79,\n\t\"Energy Saving\": 0x7a,\n\tUnused: 0x7f,\n};\n\n/**\n * @publicAPI\n * Encodes a setback state to use in a ThermostatSetbackCC\n */\nexport function encodeSetbackState(state: SetbackState): Bytes {\n\tlet rawValue: number;\n\tif (typeof state === \"string\") {\n\t\trawValue = setbackSpecialStateValues[state];\n\t} else {\n\t\tstate = clamp(state, -12.8, 12);\n\t\trawValue = Math.round(state * 10);\n\t}\n\n\tconst ret = new Bytes(1);\n\tret.writeInt8(rawValue);\n\treturn ret;\n}\n\n/**\n * @publicAPI\n * Decodes a setback state used in a ThermostatSetbackCC\n */\nexport function decodeSetbackState(\n\tdata: BytesView,\n\toffset: number = 0,\n): SetbackState | undefined {\n\tconst val = Bytes.view(data).readInt8(offset);\n\tif (val > 120) {\n\t\t// Special state, try to look it up\n\t\tconst foundEntry = Object.entries(setbackSpecialStateValues).find(\n\t\t\t([, v]) => val === v,\n\t\t);\n\t\tif (!foundEntry) return;\n\t\treturn foundEntry[0] as SetbackSpecialState;\n\t} else {\n\t\treturn val / 10;\n\t}\n}\n\n/**\n * @publicAPI\n * Decodes a switch point used in a ClimateControlScheduleCC\n */\nexport function decodeSwitchpoint(data: BytesView): Switchpoint {\n\treturn {\n\t\thour: data[0] & 0b000_11111,\n\t\tminute: data[1] & 0b00_111111,\n\t\tstate: decodeSetbackState(data, 2),\n\t};\n}\n\n/**\n * @publicAPI\n * Encodes a switch point to use in a ClimateControlScheduleCC\n */\nexport function encodeSwitchpoint(point: Switchpoint): Bytes {\n\tif (point.state == undefined) {\n\t\tthrow new ZWaveError(\n\t\t\t\"The given Switchpoint is not valid!\",\n\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t);\n\t}\n\treturn Bytes.concat([\n\t\t[point.hour & 0b000_11111, point.minute & 0b00_111111],\n\t\tencodeSetbackState(point.state),\n\t]);\n}\n\n/**\n * @publicAPI\n * Decodes timezone information used in time related CCs\n */\nexport function parseTimezone(data: BytesView): Timezone {\n\t// The timezone structure is 3 bytes: hour, minute, delta\n\tvalidatePayload(data.length >= 3);\n\tconst hourSign = !!(data[0] & 0b1000_0000);\n\tconst hour = data[0] & 0b0111_1111;\n\tconst minute = data[1];\n\tconst standardOffset = (hourSign ? -1 : 1) * (hour * 60 + minute);\n\tconst deltaSign = !!(data[2] & 0b1000_0000);\n\tconst deltaMinutes = data[2] & 0b0111_1111;\n\tconst dstOffset = standardOffset + (deltaSign ? -1 : 1) * deltaMinutes;\n\n\treturn {\n\t\tstandardOffset,\n\t\tdstOffset,\n\t};\n}\n\n/**\n * @publicAPI\n * Decodes timezone information used in time related CCs\n */\nexport function encodeTimezone(tz: Timezone): Bytes {\n\tif (\n\t\tMath.abs(tz.standardOffset) >= 24 * 60\n\t\t|| Math.abs(tz.dstOffset) >= 24 * 60\n\t) {\n\t\tthrow new ZWaveError(\n\t\t\t\"The given timezone is not valid!\",\n\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t);\n\t}\n\tconst minutes = Math.abs(tz.standardOffset) % 60;\n\tconst hour = Math.floor(Math.abs(tz.standardOffset) / 60);\n\tconst hourSign = tz.standardOffset < 0 ? 1 : 0;\n\n\tconst delta = tz.dstOffset - tz.standardOffset;\n\tconst deltaMinutes = Math.abs(delta);\n\tconst deltaSign = delta < 0 ? 1 : 0;\n\t// The DST offset is encoded relative to the standard offset in 7 bits\n\tif (deltaMinutes > 0b0111_1111) {\n\t\tthrow new ZWaveError(\n\t\t\t\"The given timezone is not valid!\",\n\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t);\n\t}\n\n\treturn Bytes.from([\n\t\t(hourSign << 7) | (hour & 0b0111_1111),\n\t\tminutes,\n\t\t(deltaSign << 7) | (deltaMinutes & 0b0111_1111),\n\t]);\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAAA,kBAA6D;AAC7D,oBAAsC;AACtC,kBAAsB;AASf,MAAM,4BAAiE;EAC7E,oBAAoB;EACpB,iBAAiB;EACjB,QAAQ;;AAOH,SAAU,mBAAmB,OAAmB;AACrD,MAAI;AACJ,MAAI,OAAO,UAAU,UAAU;AAC9B,eAAW,0BAA0B,KAAK;EAC3C,OAAO;AACN,gBAAQ,mBAAM,OAAO,OAAO,EAAE;AAC9B,eAAW,KAAK,MAAM,QAAQ,EAAE;EACjC;AAEA,QAAM,MAAM,IAAI,oBAAM,CAAC;AACvB,MAAI,UAAU,QAAQ;AACtB,SAAO;AACR;AAZgB;AAkBV,SAAU,mBACf,MACA,SAAiB,GAAC;AAElB,QAAM,MAAM,oBAAM,KAAK,IAAI,EAAE,SAAS,MAAM;AAC5C,MAAI,MAAM,KAAK;AAEd,UAAM,aAAa,OAAO,QAAQ,yBAAyB,EAAE,KAC5D,CAAC,CAAC,EAAE,CAAC,MAAM,QAAQ,CAAC;AAErB,QAAI,CAAC;AAAY;AACjB,WAAO,WAAW,CAAC;EACpB,OAAO;AACN,WAAO,MAAM;EACd;AACD;AAfgB;AAqBV,SAAU,kBAAkB,MAAe;AAChD,SAAO;IACN,MAAM,KAAK,CAAC,IAAI;IAChB,QAAQ,KAAK,CAAC,IAAI;IAClB,OAAO,mBAAmB,MAAM,CAAC;;AAEnC;AANgB;AAYV,SAAU,kBAAkB,OAAkB;AACnD,MAAI,MAAM,SAAS,QAAW;AAC7B,UAAM,IAAI,uBACT,uCACA,4BAAgB,UAAU;EAE5B;AACA,SAAO,oBAAM,OAAO;IACnB,CAAC,MAAM,OAAO,IAAa,MAAM,SAAS,EAAW;IACrD,mBAAmB,MAAM,KAAK;GAC9B;AACF;AAXgB;AAiBV,SAAU,cAAc,MAAe;AAE5C,mCAAgB,KAAK,UAAU,CAAC;AAChC,QAAM,WAAW,CAAC,EAAE,KAAK,CAAC,IAAI;AAC9B,QAAM,OAAO,KAAK,CAAC,IAAI;AACvB,QAAM,SAAS,KAAK,CAAC;AACrB,QAAM,kBAAkB,WAAW,KAAK,MAAM,OAAO,KAAK;AAC1D,QAAM,YAAY,CAAC,EAAE,KAAK,CAAC,IAAI;AAC/B,QAAM,eAAe,KAAK,CAAC,IAAI;AAC/B,QAAM,YAAY,kBAAkB,YAAY,KAAK,KAAK;AAE1D,SAAO;IACN;IACA;;AAEF;AAfgB;AAqBV,SAAU,eAAe,IAAY;AAC1C,MACC,KAAK,IAAI,GAAG,cAAc,KAAK,KAAK,MACjC,KAAK,IAAI,GAAG,SAAS,KAAK,KAAK,IACjC;AACD,UAAM,IAAI,uBACT,oCACA,4BAAgB,UAAU;EAE5B;AACA,QAAM,UAAU,KAAK,IAAI,GAAG,cAAc,IAAI;AAC9C,QAAM,OAAO,KAAK,MAAM,KAAK,IAAI,GAAG,cAAc,IAAI,EAAE;AACxD,QAAM,WAAW,GAAG,iBAAiB,IAAI,IAAI;AAE7C,QAAM,QAAQ,GAAG,YAAY,GAAG;AAChC,QAAM,eAAe,KAAK,IAAI,KAAK;AACnC,QAAM,YAAY,QAAQ,IAAI,IAAI;AAElC,MAAI,eAAe,KAAa;AAC/B,UAAM,IAAI,uBACT,oCACA,4BAAgB,UAAU;EAE5B;AAEA,SAAO,oBAAM,KAAK;IAChB,YAAY,IAAM,OAAO;IAC1B;IACC,aAAa,IAAM,eAAe;GACnC;AACF;AA9BgB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlarmSensorCC.d.ts","sourceRoot":"","sources":["../../../src_gen/cc/AlarmSensorCC.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAsD,KAAK,WAAW,EAA4E,MAAM,gBAAgB,CAAC;AAChR,OAAO,EAAE,KAAK,EAAyC,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAS,aAAa,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,KAAK,KAAK,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,KAAK,oBAAoB,EAAG,MAAM,wBAAwB,CAAC;AAG3K,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,qBACa,gBAAiB,SAAQ,aAAa;IACxC,eAAe,CAAC,GAAG,EAAE,kBAAkB,GAAG,aAAa,CAAC,OAAO,CAAC,CAOtE;IACD;;;OAGG;IAGU,GAAG,CAAC,UAAU,CAAC,EAAE,eAAe,qFAU5C;IAEY,uBAAuB,2CASnC;CACJ;AACD,qBAGa,aAAc,SAAQ,YAAY;IACnC,SAAS,EAAE,kBAAkB,CAAC;IACzB,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD3D;IACY,aAAa,CAAC,GAAG,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCnG;IACD;;;OAGG;IACH,OAAc,6BAA6B,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC,CAInH;IACD,SAAS,CAAC,2BAA2B,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,GAAG,IAAI,CAQxF;CACJ;AAED,MAAM,WAAW,0BAA0B;IACvC,UAAU,EAAE,eAAe,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AACD,qBACa,mBAAoB,SAAQ,aAAa;IAClD,YAAmB,OAAO,EAAE,WAAW,CAAC,0BAA0B,CAAC,EAOlE;IACD,OAAc,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"AlarmSensorCC.d.ts","sourceRoot":"","sources":["../../../src_gen/cc/AlarmSensorCC.ts"],"names":[],"mappings":"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"}
|
|
@@ -225,6 +225,10 @@ let AlarmSensorCCReport = (() => {
|
|
|
225
225
|
static from(raw, ctx) {
|
|
226
226
|
validatePayload(raw.payload.length >= 5, raw.payload[1] !== 0xff);
|
|
227
227
|
const sourceNodeId = raw.payload[0];
|
|
228
|
+
// Alarm Sensor reports may be forwarded by a different node, in which case the payload
|
|
229
|
+
// contains the original node ID. We cannot verify that the forwarding node is allowed
|
|
230
|
+
// to report on behalf of another node, so such reports are ignored.
|
|
231
|
+
validatePayload.withReason(`Ignoring Alarm Sensor Report forwarded on behalf of node ${sourceNodeId}`)(sourceNodeId === 0 || sourceNodeId === ctx.sourceNodeId);
|
|
228
232
|
const sensorType = raw.payload[1];
|
|
229
233
|
// Any positive value gets interpreted as alarm
|
|
230
234
|
const state = raw.payload[2] > 0;
|
|
@@ -236,9 +240,7 @@ let AlarmSensorCCReport = (() => {
|
|
|
236
240
|
// ignore zero durations
|
|
237
241
|
const duration = raw.payload.readUInt16BE(3) || undefined;
|
|
238
242
|
return new this({
|
|
239
|
-
|
|
240
|
-
// (and only then!) the payload contains the original node ID
|
|
241
|
-
nodeId: sourceNodeId || ctx.sourceNodeId,
|
|
243
|
+
nodeId: ctx.sourceNodeId,
|
|
242
244
|
sensorType,
|
|
243
245
|
state,
|
|
244
246
|
severity,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlarmSensorCC.js","sourceRoot":"","sources":["../../../src_gen/cc/AlarmSensorCC.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AlarmSensorCC.js","sourceRoot":"","sources":["../../../src_gen/cc/AlarmSensorCC.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssociationGroupInfoCC.d.ts","sourceRoot":"","sources":["../../../src_gen/cc/AssociationGroupInfoCC.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAuC,KAAK,UAAU,EAAE,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"AssociationGroupInfoCC.d.ts","sourceRoot":"","sources":["../../../src_gen/cc/AssociationGroupInfoCC.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
2
|
import * as __validateArgs from "./AssociationGroupInfoCC._validateArgs.js";
|
|
3
3
|
const { validateArgs_AssociationGroupInfoCCAPI_getGroupName, validateArgs_AssociationGroupInfoCCAPI_reportGroupName, validateArgs_AssociationGroupInfoCCAPI_getGroupInfo, validateArgs_AssociationGroupInfoCCAPI_reportGroupInfo, validateArgs_AssociationGroupInfoCCAPI_getCommands, validateArgs_AssociationGroupInfoCCAPI_reportCommands } = __validateArgs;
|
|
4
|
-
import { CommandClasses, MessagePriority, encodeCCId, getCCName, logDict, logList, logText,
|
|
5
|
-
import { Bytes,
|
|
4
|
+
import { CommandClasses, MessagePriority, encodeCCId, getCCName, logDict, logList, logText, tryParseCCId, validatePayload, } from "@zwave-js/core";
|
|
5
|
+
import { Bytes, stripControlCharacters, getEnumMemberName, num2hex, } from "@zwave-js/shared";
|
|
6
6
|
import { CCAPI, PhysicalCCAPI } from "../lib/API.js";
|
|
7
7
|
import { CommandClass, } from "../lib/CommandClass.js";
|
|
8
8
|
import { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, } from "../lib/CommandClassDecorators.js";
|
|
@@ -320,9 +320,9 @@ let AssociationGroupInfoCCNameReport = (() => {
|
|
|
320
320
|
// CC:0059.01.02.11.001: The Name Length field MUST be in the range 0..42
|
|
321
321
|
validatePayload(nameLength <= 42);
|
|
322
322
|
validatePayload(raw.payload.length >= 2 + nameLength);
|
|
323
|
-
// The specs don't allow 0-terminated
|
|
324
|
-
//
|
|
325
|
-
const name =
|
|
323
|
+
// The specs don't allow 0-terminated strings, but some devices use them.
|
|
324
|
+
// stripControlCharacters cuts them off at the first NUL character.
|
|
325
|
+
const name = stripControlCharacters(raw.payload.subarray(2, 2 + nameLength).toString("utf8"));
|
|
326
326
|
return new this({
|
|
327
327
|
nodeId: ctx.sourceNodeId,
|
|
328
328
|
groupId,
|
|
@@ -594,7 +594,11 @@ let AssociationGroupInfoCCCommandListReport = (() => {
|
|
|
594
594
|
let offset = 0;
|
|
595
595
|
const commands = new Map();
|
|
596
596
|
while (offset < listLength) {
|
|
597
|
-
|
|
597
|
+
// Ignore a truncated entry at the end of the list
|
|
598
|
+
const parsed = tryParseCCId(listBytes, offset);
|
|
599
|
+
if (!parsed || offset + parsed.bytesRead >= listLength)
|
|
600
|
+
break;
|
|
601
|
+
const { ccId, bytesRead } = parsed;
|
|
598
602
|
const command = listBytes[offset + bytesRead];
|
|
599
603
|
if (!commands.has(ccId))
|
|
600
604
|
commands.set(ccId, []);
|