@zwave-js/cc 15.0.0-beta.0 → 15.0.0-beta.1
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.d.ts +79 -161
- package/build/cjs/cc/AlarmSensorCC.js +12 -50
- package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
- package/build/cjs/cc/AssociationCC.d.ts +63 -199
- package/build/cjs/cc/AssociationCC.js +9 -22
- package/build/cjs/cc/AssociationCC.js.map +2 -2
- package/build/cjs/cc/AssociationGroupInfoCC.d.ts +66 -166
- package/build/cjs/cc/AssociationGroupInfoCC.js +11 -22
- package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
- package/build/cjs/cc/BarrierOperatorCC.d.ts +86 -294
- package/build/cjs/cc/BarrierOperatorCC.js +12 -44
- package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
- package/build/cjs/cc/BasicCC.d.ts +85 -331
- package/build/cjs/cc/BasicCC.js +15 -46
- package/build/cjs/cc/BasicCC.js.map +2 -2
- package/build/cjs/cc/BatteryCC.d.ts +237 -835
- package/build/cjs/cc/BatteryCC.js +7 -84
- package/build/cjs/cc/BatteryCC.js.map +2 -2
- package/build/cjs/cc/BinarySensorCC.d.ts +34 -99
- package/build/cjs/cc/BinarySensorCC.js +9 -29
- package/build/cjs/cc/BinarySensorCC.js.map +2 -2
- package/build/cjs/cc/BinarySwitchCC.d.ts +45 -197
- package/build/cjs/cc/BinarySwitchCC.js +6 -22
- package/build/cjs/cc/BinarySwitchCC.js.map +2 -2
- package/build/cjs/cc/CentralSceneCC.d.ts +77 -296
- package/build/cjs/cc/CentralSceneCC.js +7 -30
- package/build/cjs/cc/CentralSceneCC.js.map +2 -2
- package/build/cjs/cc/ClimateControlScheduleCC.d.ts +45 -160
- package/build/cjs/cc/ClimateControlScheduleCC.js +5 -24
- package/build/cjs/cc/ClimateControlScheduleCC.js.map +2 -2
- package/build/cjs/cc/ColorSwitchCC.d.ts +130 -457
- package/build/cjs/cc/ColorSwitchCC.js +23 -75
- package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
- package/build/cjs/cc/ConfigurationCC.d.ts +32 -100
- package/build/cjs/cc/ConfigurationCC.js +11 -31
- package/build/cjs/cc/ConfigurationCC.js.map +2 -2
- package/build/cjs/cc/DoorLockCC.d.ts +512 -1823
- package/build/cjs/cc/DoorLockCC.js +51 -156
- package/build/cjs/cc/DoorLockCC.js.map +2 -2
- package/build/cjs/cc/DoorLockLoggingCC.d.ts +11 -63
- package/build/cjs/cc/DoorLockLoggingCC.js +4 -8
- package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
- package/build/cjs/cc/EnergyProductionCC.d.ts +14 -29
- package/build/cjs/cc/EnergyProductionCC.js +5 -17
- package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
- package/build/cjs/cc/EntryControlCC.d.ts +73 -324
- package/build/cjs/cc/EntryControlCC.js +9 -36
- package/build/cjs/cc/EntryControlCC.js.map +2 -2
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.d.ts +78 -390
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +5 -26
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlModeCC.d.ts +31 -131
- package/build/cjs/cc/HumidityControlModeCC.js +6 -15
- package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +17 -65
- package/build/cjs/cc/HumidityControlOperatingStateCC.js +4 -12
- package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlSetpointCC.d.ts +51 -128
- package/build/cjs/cc/HumidityControlSetpointCC.js +10 -28
- package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
- package/build/cjs/cc/IndicatorCC.d.ts +123 -365
- package/build/cjs/cc/IndicatorCC.js +15 -61
- package/build/cjs/cc/IndicatorCC.js.map +2 -2
- package/build/cjs/cc/IrrigationCC.d.ts +826 -2317
- package/build/cjs/cc/IrrigationCC.js +29 -233
- package/build/cjs/cc/IrrigationCC.js.map +2 -2
- package/build/cjs/cc/LanguageCC.d.ts +31 -133
- package/build/cjs/cc/LanguageCC.js +4 -15
- package/build/cjs/cc/LanguageCC.js.map +2 -2
- package/build/cjs/cc/LockCC.d.ts +14 -64
- package/build/cjs/cc/LockCC.js +4 -12
- package/build/cjs/cc/LockCC.js.map +2 -2
- package/build/cjs/cc/ManufacturerProprietaryCC.js.map +2 -2
- package/build/cjs/cc/ManufacturerSpecificCC.d.ts +77 -239
- package/build/cjs/cc/ManufacturerSpecificCC.js +5 -26
- package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
- package/build/cjs/cc/MeterCC.d.ts +119 -393
- package/build/cjs/cc/MeterCC.js +25 -69
- package/build/cjs/cc/MeterCC.js.map +2 -2
- package/build/cjs/cc/MultiChannelAssociationCC.d.ts +66 -166
- package/build/cjs/cc/MultiChannelAssociationCC.js +10 -23
- package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
- package/build/cjs/cc/MultiChannelCC.d.ts +119 -499
- package/build/cjs/cc/MultiChannelCC.js +18 -46
- package/build/cjs/cc/MultiChannelCC.js.map +2 -2
- package/build/cjs/cc/MultilevelSensorCC.d.ts +46 -130
- package/build/cjs/cc/MultilevelSensorCC.js +12 -33
- package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
- package/build/cjs/cc/MultilevelSwitchCC.d.ts +160 -525
- package/build/cjs/cc/MultilevelSwitchCC.js +13 -107
- package/build/cjs/cc/MultilevelSwitchCC.js.map +2 -2
- package/build/cjs/cc/NodeNamingCC.d.ts +33 -135
- package/build/cjs/cc/NodeNamingCC.js +5 -16
- package/build/cjs/cc/NodeNamingCC.js.map +2 -2
- package/build/cjs/cc/NotificationCC.d.ts +262 -702
- package/build/cjs/cc/NotificationCC.js +29 -112
- package/build/cjs/cc/NotificationCC.js.map +2 -2
- package/build/cjs/cc/ProtectionCC.d.ts +118 -524
- package/build/cjs/cc/ProtectionCC.js +15 -50
- package/build/cjs/cc/ProtectionCC.js.map +2 -2
- package/build/cjs/cc/SceneActivationCC.d.ts +33 -132
- package/build/cjs/cc/SceneActivationCC.js +4 -17
- package/build/cjs/cc/SceneActivationCC.js.map +2 -2
- package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +34 -61
- package/build/cjs/cc/SceneActuatorConfigurationCC.js +9 -21
- package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +2 -2
- package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +34 -61
- package/build/cjs/cc/SceneControllerConfigurationCC.js +10 -22
- package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
- package/build/cjs/cc/ScheduleEntryLockCC.d.ts +95 -299
- package/build/cjs/cc/ScheduleEntryLockCC.js +13 -30
- package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
- package/build/cjs/cc/SoundSwitchCC.d.ts +72 -261
- package/build/cjs/cc/SoundSwitchCC.js +11 -43
- package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
- package/build/cjs/cc/SupervisionCC.d.ts +17 -33
- package/build/cjs/cc/SupervisionCC.js +4 -9
- package/build/cjs/cc/SupervisionCC.js.map +2 -2
- package/build/cjs/cc/ThermostatFanModeCC.d.ts +44 -195
- package/build/cjs/cc/ThermostatFanModeCC.js +8 -21
- package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
- package/build/cjs/cc/ThermostatFanStateCC.d.ts +17 -65
- package/build/cjs/cc/ThermostatFanStateCC.js +4 -12
- package/build/cjs/cc/ThermostatFanStateCC.js.map +2 -2
- package/build/cjs/cc/ThermostatModeCC.d.ts +44 -195
- package/build/cjs/cc/ThermostatModeCC.js +8 -21
- package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
- package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +17 -65
- package/build/cjs/cc/ThermostatOperatingStateCC.js +4 -12
- package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
- package/build/cjs/cc/ThermostatSetpointCC.d.ts +49 -129
- package/build/cjs/cc/ThermostatSetpointCC.js +10 -25
- package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
- package/build/cjs/cc/TimeParametersCC.d.ts +12 -63
- package/build/cjs/cc/TimeParametersCC.js +4 -11
- package/build/cjs/cc/TimeParametersCC.js.map +2 -2
- package/build/cjs/cc/UserCodeCC.d.ts +311 -1066
- package/build/cjs/cc/UserCodeCC.js +33 -98
- package/build/cjs/cc/UserCodeCC.js.map +2 -2
- package/build/cjs/cc/VersionCC.d.ts +289 -1003
- package/build/cjs/cc/VersionCC.js +7 -98
- package/build/cjs/cc/VersionCC.js.map +2 -2
- package/build/cjs/cc/WakeUpCC.d.ts +49 -201
- package/build/cjs/cc/WakeUpCC.js +6 -26
- package/build/cjs/cc/WakeUpCC.js.map +2 -2
- package/build/cjs/cc/WindowCoveringCC.d.ts +126 -220
- package/build/cjs/cc/WindowCoveringCC.js +16 -128
- package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
- package/build/cjs/cc/ZWavePlusCC.d.ts +69 -329
- package/build/cjs/cc/ZWavePlusCC.js +4 -25
- package/build/cjs/cc/ZWavePlusCC.js.map +2 -2
- package/build/cjs/cc/_CCValues.generated.d.ts +15814 -0
- package/build/cjs/cc/_CCValues.generated.js +8723 -0
- package/build/cjs/cc/_CCValues.generated.js.map +7 -0
- package/build/cjs/lib/CCValueUtils.d.ts +14 -0
- package/build/cjs/lib/CCValueUtils.js +93 -0
- package/build/cjs/lib/CCValueUtils.js.map +7 -0
- package/build/cjs/lib/Values.d.ts +6 -105
- package/build/cjs/lib/Values.js +13 -107
- package/build/cjs/lib/Values.js.map +3 -3
- package/build/esm/cc/AlarmSensorCC.d.ts +79 -161
- package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
- package/build/esm/cc/AlarmSensorCC.js +2 -39
- package/build/esm/cc/AlarmSensorCC.js.map +1 -1
- package/build/esm/cc/AssociationCC.d.ts +63 -199
- package/build/esm/cc/AssociationCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationCC.js +2 -14
- package/build/esm/cc/AssociationCC.js.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.d.ts +66 -166
- package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.js +2 -13
- package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.d.ts +86 -294
- package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.js +2 -34
- package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
- package/build/esm/cc/BasicCC.d.ts +85 -331
- package/build/esm/cc/BasicCC.d.ts.map +1 -1
- package/build/esm/cc/BasicCC.js +2 -32
- package/build/esm/cc/BasicCC.js.map +1 -1
- package/build/esm/cc/BatteryCC.d.ts +237 -835
- package/build/esm/cc/BatteryCC.d.ts.map +1 -1
- package/build/esm/cc/BatteryCC.js +2 -78
- package/build/esm/cc/BatteryCC.js.map +1 -1
- package/build/esm/cc/BinarySensorCC.d.ts +34 -99
- package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySensorCC.js +2 -16
- package/build/esm/cc/BinarySensorCC.js.map +1 -1
- package/build/esm/cc/BinarySwitchCC.d.ts +45 -197
- package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySwitchCC.js +2 -17
- package/build/esm/cc/BinarySwitchCC.js.map +1 -1
- package/build/esm/cc/CentralSceneCC.d.ts +77 -296
- package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
- package/build/esm/cc/CentralSceneCC.js +2 -26
- package/build/esm/cc/CentralSceneCC.js.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.d.ts +45 -160
- package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.js +2 -23
- package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
- package/build/esm/cc/ColorSwitchCC.d.ts +130 -457
- package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/ColorSwitchCC.js +2 -52
- package/build/esm/cc/ColorSwitchCC.js.map +1 -1
- package/build/esm/cc/ConfigurationCC.d.ts +32 -100
- package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/ConfigurationCC.js +2 -15
- package/build/esm/cc/ConfigurationCC.js.map +1 -1
- package/build/esm/cc/DoorLockCC.d.ts +512 -1823
- package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
- package/build/esm/cc/DoorLockCC.js +9 -127
- package/build/esm/cc/DoorLockCC.js.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.d.ts +11 -63
- package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.js +2 -5
- package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
- package/build/esm/cc/EnergyProductionCC.d.ts +14 -29
- package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
- package/build/esm/cc/EnergyProductionCC.js +2 -13
- package/build/esm/cc/EnergyProductionCC.js.map +1 -1
- package/build/esm/cc/EntryControlCC.d.ts +73 -324
- package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
- package/build/esm/cc/EntryControlCC.js +2 -28
- package/build/esm/cc/EntryControlCC.js.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts +78 -390
- package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC.js +2 -23
- package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.d.ts +31 -131
- package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.js +2 -10
- package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +17 -65
- package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.js +2 -9
- package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.d.ts +51 -128
- package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.js +2 -19
- package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
- package/build/esm/cc/IndicatorCC.d.ts +123 -365
- package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
- package/build/esm/cc/IndicatorCC.js +2 -43
- package/build/esm/cc/IndicatorCC.js.map +1 -1
- package/build/esm/cc/IrrigationCC.d.ts +826 -2317
- package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
- package/build/esm/cc/IrrigationCC.js +3 -222
- package/build/esm/cc/IrrigationCC.js.map +1 -1
- package/build/esm/cc/LanguageCC.d.ts +31 -133
- package/build/esm/cc/LanguageCC.d.ts.map +1 -1
- package/build/esm/cc/LanguageCC.js +2 -12
- package/build/esm/cc/LanguageCC.js.map +1 -1
- package/build/esm/cc/LockCC.d.ts +14 -64
- package/build/esm/cc/LockCC.d.ts.map +1 -1
- package/build/esm/cc/LockCC.js +2 -9
- package/build/esm/cc/LockCC.js.map +1 -1
- package/build/esm/cc/ManufacturerProprietaryCC.d.ts.map +1 -1
- package/build/esm/cc/ManufacturerProprietaryCC.js +0 -1
- package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
- package/build/esm/cc/ManufacturerSpecificCC.d.ts +77 -239
- package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
- package/build/esm/cc/ManufacturerSpecificCC.js +2 -24
- package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
- package/build/esm/cc/MeterCC.d.ts +119 -393
- package/build/esm/cc/MeterCC.d.ts.map +1 -1
- package/build/esm/cc/MeterCC.js +3 -49
- package/build/esm/cc/MeterCC.js.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.d.ts +66 -166
- package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.js +2 -14
- package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
- package/build/esm/cc/MultiChannelCC.d.ts +119 -499
- package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelCC.js +2 -30
- package/build/esm/cc/MultiChannelCC.js.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.d.ts +46 -130
- package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.js +2 -22
- package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.d.ts +160 -525
- package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.js +5 -101
- package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
- package/build/esm/cc/NodeNamingCC.d.ts +33 -135
- package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
- package/build/esm/cc/NodeNamingCC.js +2 -12
- package/build/esm/cc/NodeNamingCC.js.map +1 -1
- package/build/esm/cc/NotificationCC.d.ts +262 -702
- package/build/esm/cc/NotificationCC.d.ts.map +1 -1
- package/build/esm/cc/NotificationCC.js +3 -85
- package/build/esm/cc/NotificationCC.js.map +1 -1
- package/build/esm/cc/ProtectionCC.d.ts +118 -524
- package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
- package/build/esm/cc/ProtectionCC.js +2 -36
- package/build/esm/cc/ProtectionCC.js.map +1 -1
- package/build/esm/cc/SceneActivationCC.d.ts +33 -132
- package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneActivationCC.js +2 -14
- package/build/esm/cc/SceneActivationCC.js.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +34 -61
- package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC.js +2 -14
- package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.d.ts +34 -61
- package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.js +2 -14
- package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.d.ts +95 -299
- package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.js +2 -17
- package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
- package/build/esm/cc/SoundSwitchCC.d.ts +72 -261
- package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/SoundSwitchCC.js +2 -33
- package/build/esm/cc/SoundSwitchCC.js.map +1 -1
- package/build/esm/cc/SupervisionCC.d.ts +17 -33
- package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
- package/build/esm/cc/SupervisionCC.js +2 -7
- package/build/esm/cc/SupervisionCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.d.ts +44 -195
- package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.js +2 -14
- package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.d.ts +17 -65
- package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.js +2 -9
- package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatModeCC.d.ts +44 -195
- package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatModeCC.js +2 -14
- package/build/esm/cc/ThermostatModeCC.js.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.d.ts +17 -65
- package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.js +2 -9
- package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.d.ts +49 -129
- package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.js +2 -16
- package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
- package/build/esm/cc/TimeParametersCC.d.ts +12 -63
- package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
- package/build/esm/cc/TimeParametersCC.js +2 -8
- package/build/esm/cc/TimeParametersCC.js.map +1 -1
- package/build/esm/cc/UserCodeCC.d.ts +311 -1066
- package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
- package/build/esm/cc/UserCodeCC.js +2 -60
- package/build/esm/cc/UserCodeCC.js.map +1 -1
- package/build/esm/cc/VersionCC.d.ts +289 -1003
- package/build/esm/cc/VersionCC.d.ts.map +1 -1
- package/build/esm/cc/VersionCC.js +2 -92
- package/build/esm/cc/VersionCC.js.map +1 -1
- package/build/esm/cc/WakeUpCC.d.ts +49 -201
- package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
- package/build/esm/cc/WakeUpCC.js +2 -21
- package/build/esm/cc/WakeUpCC.js.map +1 -1
- package/build/esm/cc/WindowCoveringCC.d.ts +126 -220
- package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
- package/build/esm/cc/WindowCoveringCC.js +3 -103
- package/build/esm/cc/WindowCoveringCC.js.map +1 -1
- package/build/esm/cc/ZWavePlusCC.d.ts +69 -329
- package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
- package/build/esm/cc/ZWavePlusCC.js +2 -25
- package/build/esm/cc/ZWavePlusCC.js.map +1 -1
- package/build/esm/cc/_CCValues.generated.d.ts +15814 -0
- package/build/esm/cc/_CCValues.generated.d.ts.map +1 -0
- package/build/esm/cc/_CCValues.generated.js +9187 -0
- package/build/esm/cc/_CCValues.generated.js.map +1 -0
- package/build/esm/lib/CCValueUtils.d.ts +14 -0
- package/build/esm/lib/CCValueUtils.d.ts.map +1 -0
- package/build/esm/lib/CCValueUtils.js +62 -0
- package/build/esm/lib/CCValueUtils.js.map +1 -0
- package/build/esm/lib/Values.d.ts +6 -105
- package/build/esm/lib/Values.d.ts.map +1 -1
- package/build/esm/lib/Values.js +7 -104
- package/build/esm/lib/Values.js.map +1 -1
- package/package.json +9 -7
|
@@ -6,214 +6,114 @@ import { PhysicalCCAPI } from "../lib/API.js";
|
|
|
6
6
|
import { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext } from "../lib/CommandClass.js";
|
|
7
7
|
import { type AssociationAddress, type EndpointAddress, MultiChannelAssociationCommand } from "../lib/_Types.js";
|
|
8
8
|
export declare const MultiChannelAssociationCCValues: Readonly<{
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
readonly
|
|
12
|
-
readonly
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
readonly type: "any";
|
|
16
|
-
readonly readable: true;
|
|
17
|
-
readonly writeable: true;
|
|
18
|
-
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
19
|
-
readonly type: "any";
|
|
20
|
-
readonly readable: true;
|
|
21
|
-
readonly writeable: true;
|
|
22
|
-
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
23
|
-
readonly type: "any";
|
|
24
|
-
readonly readable: true;
|
|
25
|
-
readonly writeable: true;
|
|
26
|
-
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
27
|
-
readonly type: "any";
|
|
28
|
-
readonly readable: true;
|
|
29
|
-
readonly writeable: true;
|
|
30
|
-
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
31
|
-
readonly type: "any";
|
|
32
|
-
readonly readable: true;
|
|
33
|
-
readonly writeable: true;
|
|
34
|
-
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
|
|
35
|
-
readonly id: ValueIDBase;
|
|
36
|
-
readonly endpoint: (endpoint?: number | undefined) => {
|
|
9
|
+
groupCount: {
|
|
10
|
+
id: {
|
|
11
|
+
readonly commandClass: (typeof CommandClasses)["Multi Channel Association"];
|
|
12
|
+
readonly property: "groupCount";
|
|
13
|
+
};
|
|
14
|
+
endpoint: (endpoint?: number) => {
|
|
37
15
|
readonly commandClass: (typeof CommandClasses)["Multi Channel Association"];
|
|
38
16
|
readonly endpoint: number;
|
|
39
|
-
readonly property: "
|
|
40
|
-
readonly propertyKey: number;
|
|
17
|
+
readonly property: "groupCount";
|
|
41
18
|
};
|
|
42
|
-
}) & {
|
|
43
19
|
is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
|
|
44
|
-
readonly
|
|
45
|
-
readonly
|
|
46
|
-
readonly
|
|
20
|
+
readonly meta: Readonly<{
|
|
21
|
+
readonly type: "any";
|
|
22
|
+
readonly readable: true;
|
|
23
|
+
readonly writeable: true;
|
|
24
|
+
}>;
|
|
25
|
+
options: {
|
|
26
|
+
readonly internal: true;
|
|
47
27
|
readonly minVersion: 1;
|
|
28
|
+
readonly secret: false;
|
|
29
|
+
readonly stateful: true;
|
|
48
30
|
readonly supportsEndpoints: true;
|
|
49
31
|
readonly autoCreate: true;
|
|
50
|
-
readonly internal: true;
|
|
51
32
|
};
|
|
52
33
|
};
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
readonly
|
|
56
|
-
readonly
|
|
57
|
-
readonly
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
readonly readable: true;
|
|
61
|
-
readonly writeable: true;
|
|
62
|
-
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
63
|
-
readonly type: "any";
|
|
64
|
-
readonly readable: true;
|
|
65
|
-
readonly writeable: true;
|
|
66
|
-
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
67
|
-
readonly type: "any";
|
|
68
|
-
readonly readable: true;
|
|
69
|
-
readonly writeable: true;
|
|
70
|
-
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
71
|
-
readonly type: "any";
|
|
72
|
-
readonly readable: true;
|
|
73
|
-
readonly writeable: true;
|
|
74
|
-
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
75
|
-
readonly type: "any";
|
|
76
|
-
readonly readable: true;
|
|
77
|
-
readonly writeable: true;
|
|
78
|
-
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
|
|
79
|
-
readonly id: ValueIDBase;
|
|
80
|
-
readonly endpoint: (endpoint?: number | undefined) => {
|
|
34
|
+
maxNodes: ((groupId: number) => {
|
|
35
|
+
id: {
|
|
36
|
+
readonly commandClass: (typeof CommandClasses)["Multi Channel Association"];
|
|
37
|
+
readonly property: "maxNodes";
|
|
38
|
+
readonly propertyKey: number;
|
|
39
|
+
};
|
|
40
|
+
endpoint: (endpoint?: number) => {
|
|
81
41
|
readonly commandClass: (typeof CommandClasses)["Multi Channel Association"];
|
|
82
42
|
readonly endpoint: number;
|
|
83
|
-
readonly property: "
|
|
43
|
+
readonly property: "maxNodes";
|
|
84
44
|
readonly propertyKey: number;
|
|
85
45
|
};
|
|
46
|
+
readonly meta: Readonly<{
|
|
47
|
+
readonly type: "any";
|
|
48
|
+
readonly readable: true;
|
|
49
|
+
readonly writeable: true;
|
|
50
|
+
}>;
|
|
86
51
|
}) & {
|
|
87
52
|
is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
|
|
88
|
-
|
|
89
|
-
readonly
|
|
90
|
-
readonly secret: false;
|
|
53
|
+
options: {
|
|
54
|
+
readonly internal: true;
|
|
91
55
|
readonly minVersion: 1;
|
|
56
|
+
readonly secret: false;
|
|
57
|
+
readonly stateful: true;
|
|
92
58
|
readonly supportsEndpoints: true;
|
|
93
59
|
readonly autoCreate: true;
|
|
94
|
-
readonly internal: true;
|
|
95
60
|
};
|
|
96
61
|
};
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
readonly
|
|
100
|
-
readonly
|
|
101
|
-
readonly
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
readonly readable: true;
|
|
105
|
-
readonly writeable: true;
|
|
106
|
-
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
107
|
-
readonly type: "any";
|
|
108
|
-
readonly readable: true;
|
|
109
|
-
readonly writeable: true;
|
|
110
|
-
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
111
|
-
readonly type: "any";
|
|
112
|
-
readonly readable: true;
|
|
113
|
-
readonly writeable: true;
|
|
114
|
-
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
115
|
-
readonly type: "any";
|
|
116
|
-
readonly readable: true;
|
|
117
|
-
readonly writeable: true;
|
|
118
|
-
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
119
|
-
readonly type: "any";
|
|
120
|
-
readonly readable: true;
|
|
121
|
-
readonly writeable: true;
|
|
122
|
-
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
|
|
123
|
-
readonly id: ValueIDBase;
|
|
124
|
-
readonly endpoint: (endpoint?: number | undefined) => {
|
|
62
|
+
nodeIds: ((groupId: number) => {
|
|
63
|
+
id: {
|
|
64
|
+
readonly commandClass: (typeof CommandClasses)["Multi Channel Association"];
|
|
65
|
+
readonly property: "nodeIds";
|
|
66
|
+
readonly propertyKey: number;
|
|
67
|
+
};
|
|
68
|
+
endpoint: (endpoint?: number) => {
|
|
125
69
|
readonly commandClass: (typeof CommandClasses)["Multi Channel Association"];
|
|
126
70
|
readonly endpoint: number;
|
|
127
|
-
readonly property: "
|
|
71
|
+
readonly property: "nodeIds";
|
|
128
72
|
readonly propertyKey: number;
|
|
129
73
|
};
|
|
74
|
+
readonly meta: Readonly<{
|
|
75
|
+
readonly type: "any";
|
|
76
|
+
readonly readable: true;
|
|
77
|
+
readonly writeable: true;
|
|
78
|
+
}>;
|
|
130
79
|
}) & {
|
|
131
80
|
is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
|
|
132
|
-
|
|
133
|
-
readonly
|
|
134
|
-
readonly secret: false;
|
|
81
|
+
options: {
|
|
82
|
+
readonly internal: true;
|
|
135
83
|
readonly minVersion: 1;
|
|
84
|
+
readonly secret: false;
|
|
85
|
+
readonly stateful: true;
|
|
136
86
|
readonly supportsEndpoints: true;
|
|
137
87
|
readonly autoCreate: true;
|
|
138
|
-
readonly internal: true;
|
|
139
88
|
};
|
|
140
89
|
};
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
90
|
+
endpoints: ((groupId: number) => {
|
|
91
|
+
id: {
|
|
92
|
+
readonly commandClass: (typeof CommandClasses)["Multi Channel Association"];
|
|
93
|
+
readonly property: "endpoints";
|
|
94
|
+
readonly propertyKey: number;
|
|
95
|
+
};
|
|
96
|
+
endpoint: (endpoint?: number) => {
|
|
144
97
|
readonly commandClass: (typeof CommandClasses)["Multi Channel Association"];
|
|
145
98
|
readonly endpoint: number;
|
|
146
|
-
readonly property: "
|
|
99
|
+
readonly property: "endpoints";
|
|
100
|
+
readonly propertyKey: number;
|
|
147
101
|
};
|
|
148
|
-
readonly
|
|
149
|
-
readonly meta: Readonly<(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
102
|
+
readonly meta: Readonly<{
|
|
150
103
|
readonly type: "any";
|
|
151
104
|
readonly readable: true;
|
|
152
105
|
readonly writeable: true;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
readonly type: "any";
|
|
159
|
-
readonly readable: true;
|
|
160
|
-
readonly writeable: true;
|
|
161
|
-
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
162
|
-
readonly type: "any";
|
|
163
|
-
readonly readable: true;
|
|
164
|
-
readonly writeable: true;
|
|
165
|
-
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
166
|
-
readonly type: "any";
|
|
167
|
-
readonly readable: true;
|
|
168
|
-
readonly writeable: true;
|
|
169
|
-
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
170
|
-
readonly type: "any";
|
|
171
|
-
readonly readable: true;
|
|
172
|
-
readonly writeable: true;
|
|
173
|
-
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
|
|
174
|
-
readonly options: Readonly<(import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
|
|
175
|
-
readonly internal: false;
|
|
176
|
-
readonly minVersion: 1;
|
|
177
|
-
readonly secret: false;
|
|
178
|
-
readonly stateful: true;
|
|
179
|
-
readonly supportsEndpoints: true;
|
|
180
|
-
readonly autoCreate: true;
|
|
181
|
-
} : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
|
|
182
|
-
readonly internal: false;
|
|
183
|
-
readonly minVersion: 1;
|
|
184
|
-
readonly secret: false;
|
|
185
|
-
readonly stateful: true;
|
|
186
|
-
readonly supportsEndpoints: true;
|
|
187
|
-
readonly autoCreate: true;
|
|
188
|
-
}, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
|
|
189
|
-
readonly internal: false;
|
|
190
|
-
readonly minVersion: 1;
|
|
191
|
-
readonly secret: false;
|
|
192
|
-
readonly stateful: true;
|
|
193
|
-
readonly supportsEndpoints: true;
|
|
194
|
-
readonly autoCreate: true;
|
|
195
|
-
} : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
|
|
196
|
-
readonly internal: false;
|
|
197
|
-
readonly minVersion: 1;
|
|
198
|
-
readonly secret: false;
|
|
199
|
-
readonly stateful: true;
|
|
200
|
-
readonly supportsEndpoints: true;
|
|
201
|
-
readonly autoCreate: true;
|
|
202
|
-
}, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>)[K]] ? never : K]: (import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
|
|
203
|
-
readonly internal: false;
|
|
204
|
-
readonly minVersion: 1;
|
|
205
|
-
readonly secret: false;
|
|
206
|
-
readonly stateful: true;
|
|
207
|
-
readonly supportsEndpoints: true;
|
|
208
|
-
readonly autoCreate: true;
|
|
209
|
-
} : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
|
|
210
|
-
readonly internal: false;
|
|
106
|
+
}>;
|
|
107
|
+
}) & {
|
|
108
|
+
is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
|
|
109
|
+
options: {
|
|
110
|
+
readonly internal: true;
|
|
211
111
|
readonly minVersion: 1;
|
|
212
112
|
readonly secret: false;
|
|
213
113
|
readonly stateful: true;
|
|
214
114
|
readonly supportsEndpoints: true;
|
|
215
115
|
readonly autoCreate: true;
|
|
216
|
-
}
|
|
116
|
+
};
|
|
217
117
|
};
|
|
218
118
|
}>;
|
|
219
119
|
export declare class MultiChannelAssociationCCAPI extends PhysicalCCAPI {
|
|
@@ -37,7 +37,7 @@ __export(MultiChannelAssociationCC_exports, {
|
|
|
37
37
|
MultiChannelAssociationCCSet: () => MultiChannelAssociationCCSet,
|
|
38
38
|
MultiChannelAssociationCCSupportedGroupingsGet: () => MultiChannelAssociationCCSupportedGroupingsGet,
|
|
39
39
|
MultiChannelAssociationCCSupportedGroupingsReport: () => MultiChannelAssociationCCSupportedGroupingsReport,
|
|
40
|
-
MultiChannelAssociationCCValues: () => MultiChannelAssociationCCValues
|
|
40
|
+
MultiChannelAssociationCCValues: () => import_CCValues_generated.MultiChannelAssociationCCValues
|
|
41
41
|
});
|
|
42
42
|
module.exports = __toCommonJS(MultiChannelAssociationCC_exports);
|
|
43
43
|
var __validateArgs = __toESM(require("./MultiChannelAssociationCC._validateArgs.js"), 1);
|
|
@@ -51,6 +51,7 @@ var import_Values = require("../lib/Values.js");
|
|
|
51
51
|
var import_Types = require("../lib/_Types.js");
|
|
52
52
|
var ccUtils = __toESM(require("../lib/utils.js"), 1);
|
|
53
53
|
var import_AssociationCC = require("./AssociationCC.js");
|
|
54
|
+
var import_CCValues_generated = require("./_CCValues.generated.js");
|
|
54
55
|
var __runInitializers = function(thisArg, initializers, value) {
|
|
55
56
|
var useValue = arguments.length > 2;
|
|
56
57
|
for (var i = 0; i < initializers.length; i++) {
|
|
@@ -92,20 +93,6 @@ var __esDecorate = function(ctor, descriptorIn, decorators, contextIn, initializ
|
|
|
92
93
|
done = true;
|
|
93
94
|
};
|
|
94
95
|
const { validateArgs_MultiChannelAssociationCCAPI_reportGroupCount, validateArgs_MultiChannelAssociationCCAPI_getGroup, validateArgs_MultiChannelAssociationCCAPI_sendReport, validateArgs_MultiChannelAssociationCCAPI_addDestinations, validateArgs_MultiChannelAssociationCCAPI_removeDestinations } = __validateArgs;
|
|
95
|
-
const MultiChannelAssociationCCValues = Object.freeze({
|
|
96
|
-
...import_Values.V.defineStaticCCValues(import_safe.CommandClasses["Multi Channel Association"], {
|
|
97
|
-
// number multi channel association groups
|
|
98
|
-
...import_Values.V.staticProperty("groupCount", void 0, { internal: true })
|
|
99
|
-
}),
|
|
100
|
-
...import_Values.V.defineDynamicCCValues(import_safe.CommandClasses["Multi Channel Association"], {
|
|
101
|
-
// maximum number of nodes of a multi channel association group
|
|
102
|
-
...import_Values.V.dynamicPropertyAndKeyWithName("maxNodes", "maxNodes", (groupId) => groupId, ({ property, propertyKey }) => property === "maxNodes" && typeof propertyKey === "number", void 0, { internal: true }),
|
|
103
|
-
// node IDs of a multi channel association group
|
|
104
|
-
...import_Values.V.dynamicPropertyAndKeyWithName("nodeIds", "nodeIds", (groupId) => groupId, ({ property, propertyKey }) => property === "nodeIds" && typeof propertyKey === "number", void 0, { internal: true }),
|
|
105
|
-
// Endpoint addresses of a multi channel association group
|
|
106
|
-
...import_Values.V.dynamicPropertyAndKeyWithName("endpoints", "endpoints", (groupId) => groupId, ({ property, propertyKey }) => property === "endpoints" && typeof propertyKey === "number", void 0, { internal: true })
|
|
107
|
-
})
|
|
108
|
-
});
|
|
109
96
|
function endpointAddressesToString(endpoints) {
|
|
110
97
|
return endpoints.map(({ nodeId, endpoint }) => {
|
|
111
98
|
if (typeof endpoint === "number") {
|
|
@@ -304,7 +291,7 @@ let MultiChannelAssociationCCAPI = (() => {
|
|
|
304
291
|
return MultiChannelAssociationCCAPI2 = _classThis;
|
|
305
292
|
})();
|
|
306
293
|
let MultiChannelAssociationCC = (() => {
|
|
307
|
-
let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_safe.CommandClasses["Multi Channel Association"]), (0, import_CommandClassDecorators.implementedVersion)(5), (0, import_CommandClassDecorators.ccValues)(MultiChannelAssociationCCValues)];
|
|
294
|
+
let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_safe.CommandClasses["Multi Channel Association"]), (0, import_CommandClassDecorators.implementedVersion)(5), (0, import_CommandClassDecorators.ccValues)(import_CCValues_generated.MultiChannelAssociationCCValues)];
|
|
308
295
|
let _classDescriptor;
|
|
309
296
|
let _classExtraInitializers = [];
|
|
310
297
|
let _classThis;
|
|
@@ -338,14 +325,14 @@ let MultiChannelAssociationCC = (() => {
|
|
|
338
325
|
* This only works AFTER the interview process
|
|
339
326
|
*/
|
|
340
327
|
static getGroupCountCached(ctx, endpoint) {
|
|
341
|
-
return ctx.getValueDB(endpoint.nodeId).getValue(MultiChannelAssociationCCValues.groupCount.endpoint(endpoint.index)) || 0;
|
|
328
|
+
return ctx.getValueDB(endpoint.nodeId).getValue(import_CCValues_generated.MultiChannelAssociationCCValues.groupCount.endpoint(endpoint.index)) || 0;
|
|
342
329
|
}
|
|
343
330
|
/**
|
|
344
331
|
* Returns the number of nodes an association group supports.
|
|
345
332
|
* This only works AFTER the interview process
|
|
346
333
|
*/
|
|
347
334
|
static getMaxNodesCached(ctx, endpoint, groupId) {
|
|
348
|
-
return ctx.getValueDB(endpoint.nodeId).getValue(MultiChannelAssociationCCValues.maxNodes(groupId).endpoint(endpoint.index)) ?? 0;
|
|
335
|
+
return ctx.getValueDB(endpoint.nodeId).getValue(import_CCValues_generated.MultiChannelAssociationCCValues.maxNodes(groupId).endpoint(endpoint.index)) ?? 0;
|
|
349
336
|
}
|
|
350
337
|
/**
|
|
351
338
|
* Returns all the destinations of all association groups reported by the node/endpoint.
|
|
@@ -357,9 +344,9 @@ let MultiChannelAssociationCC = (() => {
|
|
|
357
344
|
const valueDB = ctx.getValueDB(endpoint.nodeId);
|
|
358
345
|
for (let i = 1; i <= groupCount; i++) {
|
|
359
346
|
const groupDestinations = [];
|
|
360
|
-
const nodes = valueDB.getValue(MultiChannelAssociationCCValues.nodeIds(i).endpoint(endpoint.index)) ?? [];
|
|
347
|
+
const nodes = valueDB.getValue(import_CCValues_generated.MultiChannelAssociationCCValues.nodeIds(i).endpoint(endpoint.index)) ?? [];
|
|
361
348
|
groupDestinations.push(...nodes.map((nodeId) => ({ nodeId })));
|
|
362
|
-
const endpoints = valueDB.getValue(MultiChannelAssociationCCValues.endpoints(i).endpoint(endpoint.index)) ?? [];
|
|
349
|
+
const endpoints = valueDB.getValue(import_CCValues_generated.MultiChannelAssociationCCValues.endpoints(i).endpoint(endpoint.index)) ?? [];
|
|
363
350
|
for (const ep of endpoints) {
|
|
364
351
|
if (typeof ep.endpoint === "number") {
|
|
365
352
|
groupDestinations.push({
|
|
@@ -423,7 +410,7 @@ let MultiChannelAssociationCC = (() => {
|
|
|
423
410
|
const assocAPI = import_API.CCAPI.create(import_safe.CommandClasses.Association, ctx, endpoint).withOptions({
|
|
424
411
|
priority: import_safe.MessagePriority.NodeQuery
|
|
425
412
|
});
|
|
426
|
-
const mcGroupCount = this.getValue(ctx, MultiChannelAssociationCCValues.groupCount) ?? 0;
|
|
413
|
+
const mcGroupCount = this.getValue(ctx, import_CCValues_generated.MultiChannelAssociationCCValues.groupCount) ?? 0;
|
|
427
414
|
const assocGroupCount = this.getValue(ctx, import_AssociationCC.AssociationCCValues.groupCount) || mcGroupCount;
|
|
428
415
|
for (let groupId = 1; groupId <= mcGroupCount; groupId++) {
|
|
429
416
|
ctx.logNode(node.id, {
|
|
@@ -611,7 +598,7 @@ let MultiChannelAssociationCCRemove = (() => {
|
|
|
611
598
|
return MultiChannelAssociationCCRemove2 = _classThis;
|
|
612
599
|
})();
|
|
613
600
|
let MultiChannelAssociationCCReport = (() => {
|
|
614
|
-
let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.MultiChannelAssociationCommand.Report), (0, import_CommandClassDecorators.ccValueProperty)("maxNodes", MultiChannelAssociationCCValues.maxNodes, (self) => [self.groupId]), (0, import_CommandClassDecorators.ccValueProperty)("nodeIds", MultiChannelAssociationCCValues.nodeIds, (self) => [self.groupId]), (0, import_CommandClassDecorators.ccValueProperty)("endpoints", MultiChannelAssociationCCValues.endpoints, (self) => [self.groupId])];
|
|
601
|
+
let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.MultiChannelAssociationCommand.Report), (0, import_CommandClassDecorators.ccValueProperty)("maxNodes", import_CCValues_generated.MultiChannelAssociationCCValues.maxNodes, (self) => [self.groupId]), (0, import_CommandClassDecorators.ccValueProperty)("nodeIds", import_CCValues_generated.MultiChannelAssociationCCValues.nodeIds, (self) => [self.groupId]), (0, import_CommandClassDecorators.ccValueProperty)("endpoints", import_CCValues_generated.MultiChannelAssociationCCValues.endpoints, (self) => [self.groupId])];
|
|
615
602
|
let _classDescriptor;
|
|
616
603
|
let _classExtraInitializers = [];
|
|
617
604
|
let _classThis;
|
|
@@ -745,7 +732,7 @@ let MultiChannelAssociationCCGet = (() => {
|
|
|
745
732
|
return MultiChannelAssociationCCGet2 = _classThis;
|
|
746
733
|
})();
|
|
747
734
|
let MultiChannelAssociationCCSupportedGroupingsReport = (() => {
|
|
748
|
-
let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.MultiChannelAssociationCommand.SupportedGroupingsReport), (0, import_CommandClassDecorators.ccValueProperty)("groupCount", MultiChannelAssociationCCValues.groupCount)];
|
|
735
|
+
let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.MultiChannelAssociationCommand.SupportedGroupingsReport), (0, import_CommandClassDecorators.ccValueProperty)("groupCount", import_CCValues_generated.MultiChannelAssociationCCValues.groupCount)];
|
|
749
736
|
let _classDescriptor;
|
|
750
737
|
let _classExtraInitializers = [];
|
|
751
738
|
let _classThis;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cc/MultiChannelAssociationCC.ts"],
|
|
4
|
-
"sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport type {\n\tEndpointId,\n\tGetValueDB,\n\tMessageRecord,\n\tSupervisionResult,\n\tWithAddress,\n} from \"@zwave-js/core/safe\";\nimport {\n\tCommandClasses,\n\tMAX_NODES,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tencodeBitMask,\n\tparseBitMask,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype RefreshValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport {\n\ttype AssociationAddress,\n\ttype EndpointAddress,\n\tMultiChannelAssociationCommand,\n} from \"../lib/_Types.js\";\nimport * as ccUtils from \"../lib/utils.js\";\nimport { AssociationCCValues } from \"./AssociationCC.js\";\n\nexport const MultiChannelAssociationCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses[\"Multi Channel Association\"], {\n\t\t// number multi channel association groups\n\t\t...V.staticProperty(\"groupCount\", undefined, { internal: true }),\n\t}),\n\n\t...V.defineDynamicCCValues(CommandClasses[\"Multi Channel Association\"], {\n\t\t// maximum number of nodes of a multi channel association group\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"maxNodes\",\n\t\t\t\"maxNodes\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"maxNodes\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\n\t\t// node IDs of a multi channel association group\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"nodeIds\",\n\t\t\t\"nodeIds\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"nodeIds\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\n\t\t// Endpoint addresses of a multi channel association group\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"endpoints\",\n\t\t\t\"endpoints\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"endpoints\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t}),\n});\n\nfunction endpointAddressesToString(\n\tendpoints: readonly EndpointAddress[],\n): string {\n\treturn endpoints\n\t\t.map(({ nodeId, endpoint }) => {\n\t\t\tif (typeof endpoint === \"number\") {\n\t\t\t\treturn `${nodeId}:${endpoint}`;\n\t\t\t} else {\n\t\t\t\treturn `${nodeId}:[${endpoint.map(String).join(\", \")}]`;\n\t\t\t}\n\t\t})\n\t\t.join(\", \");\n}\n\nconst MULTI_CHANNEL_ASSOCIATION_MARKER = 0x00;\n\nfunction serializeMultiChannelAssociationDestination(\n\tnodeIds: number[],\n\tendpoints: EndpointAddress[],\n): Bytes {\n\tconst nodeAddressBytes = nodeIds.length;\n\tconst endpointAddressBytes = endpoints.length * 2;\n\tconst payload = new Bytes(\n\t\t// node addresses\n\t\tnodeAddressBytes\n\t\t\t// endpoint marker\n\t\t\t+ (endpointAddressBytes > 0 ? 1 : 0)\n\t\t\t// endpoints\n\t\t\t+ endpointAddressBytes,\n\t);\n\t// write node addresses\n\tfor (let i = 0; i < nodeIds.length; i++) {\n\t\tpayload[i] = nodeIds[i];\n\t}\n\t// write endpoint addresses\n\tif (endpointAddressBytes > 0) {\n\t\tlet offset = nodeIds.length;\n\t\tpayload[offset] = MULTI_CHANNEL_ASSOCIATION_MARKER;\n\t\toffset += 1;\n\t\tfor (let i = 0; i < endpoints.length; i++) {\n\t\t\tconst endpoint = endpoints[i];\n\t\t\tconst destination = typeof endpoint.endpoint === \"number\"\n\t\t\t\t// The destination is a single number\n\t\t\t\t? endpoint.endpoint & 0b0111_1111\n\t\t\t\t// The destination is a bit mask\n\t\t\t\t: encodeBitMask(endpoint.endpoint, 7)[0] | 0b1000_0000;\n\n\t\t\tpayload[offset + 2 * i] = endpoint.nodeId;\n\t\t\tpayload[offset + 2 * i + 1] = destination;\n\t\t}\n\t}\n\treturn payload;\n}\n\nfunction deserializeMultiChannelAssociationDestination(data: Uint8Array): {\n\tnodeIds: number[];\n\tendpoints: EndpointAddress[];\n} {\n\tconst nodeIds: number[] = [];\n\tlet endpointOffset = data.length;\n\t// Scan node ids until we find the marker\n\tfor (let i = 0; i < data.length; i++) {\n\t\tif (data[i] === MULTI_CHANNEL_ASSOCIATION_MARKER) {\n\t\t\tendpointOffset = i + 1;\n\t\t\tbreak;\n\t\t}\n\t\tnodeIds.push(data[i]);\n\t}\n\tconst endpoints: EndpointAddress[] = [];\n\tfor (let i = endpointOffset; i < data.length; i += 2) {\n\t\tconst nodeId = data[i];\n\t\tconst isBitMask = !!(data[i + 1] & 0b1000_0000);\n\t\tconst destination = data[i + 1] & 0b0111_1111;\n\t\tconst endpoint = isBitMask\n\t\t\t? parseBitMask(Bytes.from([destination]))\n\t\t\t: destination;\n\n\t\tendpoints.push({ nodeId, endpoint });\n\t}\n\n\treturn { nodeIds, endpoints };\n}\n\n// @noSetValueAPI\n\n@API(CommandClasses[\"Multi Channel Association\"])\nexport class MultiChannelAssociationCCAPI extends PhysicalCCAPI {\n\tpublic supportsCommand(\n\t\tcmd: MultiChannelAssociationCommand,\n\t): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase MultiChannelAssociationCommand.Get:\n\t\t\tcase MultiChannelAssociationCommand.Set:\n\t\t\tcase MultiChannelAssociationCommand.Report:\n\t\t\tcase MultiChannelAssociationCommand.Remove:\n\t\t\tcase MultiChannelAssociationCommand.SupportedGroupingsGet:\n\t\t\tcase MultiChannelAssociationCommand.SupportedGroupingsReport:\n\t\t\t\treturn true; // This is mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t/**\n\t * Returns the number of association groups a node supports.\n\t * Association groups are consecutive, starting at 1.\n\t */\n\tpublic async getGroupCount(): Promise<MaybeNotKnown<number>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultiChannelAssociationCommand,\n\t\t\tMultiChannelAssociationCommand.SupportedGroupingsGet,\n\t\t);\n\n\t\tconst cc = new MultiChannelAssociationCCSupportedGroupingsGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tMultiChannelAssociationCCSupportedGroupingsReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.groupCount;\n\t}\n\n\t@validateArgs()\n\tpublic async reportGroupCount(groupCount: number): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultiChannelAssociationCommand,\n\t\t\tMultiChannelAssociationCommand.SupportedGroupingsReport,\n\t\t);\n\n\t\tconst cc = new MultiChannelAssociationCCSupportedGroupingsReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupCount,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Returns information about an association group.\n\t */\n\t@validateArgs()\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getGroup(groupId: number) {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultiChannelAssociationCommand,\n\t\t\tMultiChannelAssociationCommand.Get,\n\t\t);\n\n\t\tconst cc = new MultiChannelAssociationCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tMultiChannelAssociationCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\"maxNodes\", \"nodeIds\", \"endpoints\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async sendReport(\n\t\toptions: MultiChannelAssociationCCReportOptions,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultiChannelAssociationCommand,\n\t\t\tMultiChannelAssociationCommand.Report,\n\t\t);\n\n\t\tconst cc = new MultiChannelAssociationCCReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Adds new nodes or endpoints to an association group\n\t */\n\t@validateArgs()\n\tpublic async addDestinations(\n\t\toptions: MultiChannelAssociationCCSetOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultiChannelAssociationCommand,\n\t\t\tMultiChannelAssociationCommand.Set,\n\t\t);\n\n\t\tconst cc = new MultiChannelAssociationCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Removes nodes or endpoints from an association group\n\t */\n\t@validateArgs()\n\tpublic async removeDestinations(\n\t\toptions: MultiChannelAssociationCCRemoveOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultiChannelAssociationCommand,\n\t\t\tMultiChannelAssociationCommand.Remove,\n\t\t);\n\n\t\tif (!options.groupId && this.version === 1) {\n\t\t\t// V1 does not support omitting the group, manually remove the destination from all groups\n\t\t\t// We don't want to do too much work, so find out which groups the destination is in\n\t\t\tconst currentDestinations = MultiChannelAssociationCC\n\t\t\t\t.getAllDestinationsCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t);\n\t\t\tfor (const [group, destinations] of currentDestinations) {\n\t\t\t\tconst cc = new MultiChannelAssociationCCRemove({\n\t\t\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t\t\tgroupId: group,\n\t\t\t\t\tnodeIds: destinations\n\t\t\t\t\t\t.filter((d) => d.endpoint != undefined)\n\t\t\t\t\t\t.map((d) => d.nodeId),\n\t\t\t\t\tendpoints: destinations.filter(\n\t\t\t\t\t\t(d): d is AssociationAddress & { endpoint: number } =>\n\t\t\t\t\t\t\td.endpoint != undefined,\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t\t// TODO: evaluate intermediate supervision results\n\t\t\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t\t\t}\n\t\t} else if (options.groupId && options.groupId < 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must not be negative!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t} else {\n\t\t\tconst cc = new MultiChannelAssociationCCRemove({\n\t\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t\t...options,\n\t\t\t});\n\t\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t\t}\n\t}\n}\n\n@commandClass(CommandClasses[\"Multi Channel Association\"])\n@implementedVersion(5)\n@ccValues(MultiChannelAssociationCCValues)\nexport class MultiChannelAssociationCC extends CommandClass {\n\tdeclare ccCommand: MultiChannelAssociationCommand;\n\n\tpublic determineRequiredCCInterviews(): readonly CommandClasses[] {\n\t\t// MultiChannelAssociationCC must be interviewed after Z-Wave+ if that is supported\n\t\treturn [\n\t\t\t...super.determineRequiredCCInterviews(),\n\t\t\tCommandClasses[\"Z-Wave Plus Info\"],\n\t\t\t// We need information about endpoints to correctly configure the lifeline associations\n\t\t\tCommandClasses[\"Multi Channel\"],\n\t\t\t// AssociationCC will short-circuit if this CC is supported\n\t\t\tCommandClasses.Association,\n\t\t];\n\t}\n\n\t/**\n\t * Returns the number of association groups reported by the node/endpoint.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getGroupCountCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tMultiChannelAssociationCCValues.groupCount.endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) || 0;\n\t}\n\n\t/**\n\t * Returns the number of nodes an association group supports.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getMaxNodesCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tgroupId: number,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tMultiChannelAssociationCCValues.maxNodes(groupId).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) ?? 0;\n\t}\n\n\t/**\n\t * Returns all the destinations of all association groups reported by the node/endpoint.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getAllDestinationsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): ReadonlyMap<number, readonly AssociationAddress[]> {\n\t\tconst ret = new Map<number, AssociationAddress[]>();\n\t\tconst groupCount = this.getGroupCountCached(ctx, endpoint);\n\t\tconst valueDB = ctx.getValueDB(endpoint.nodeId);\n\t\tfor (let i = 1; i <= groupCount; i++) {\n\t\t\tconst groupDestinations: AssociationAddress[] = [];\n\t\t\t// Add all node destinations\n\t\t\tconst nodes = valueDB.getValue<number[]>(\n\t\t\t\tMultiChannelAssociationCCValues.nodeIds(i).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) ?? [];\n\t\t\tgroupDestinations.push(...nodes.map((nodeId) => ({ nodeId })));\n\t\t\t// And all endpoint destinations\n\t\t\tconst endpoints = valueDB.getValue<EndpointAddress[]>(\n\t\t\t\tMultiChannelAssociationCCValues.endpoints(i).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) ?? [];\n\t\t\tfor (const ep of endpoints) {\n\t\t\t\tif (typeof ep.endpoint === \"number\") {\n\t\t\t\t\tgroupDestinations.push({\n\t\t\t\t\t\tnodeId: ep.nodeId,\n\t\t\t\t\t\tendpoint: ep.endpoint,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tgroupDestinations.push(\n\t\t\t\t\t\t...ep.endpoint.map((e) => ({\n\t\t\t\t\t\t\tnodeId: ep.nodeId,\n\t\t\t\t\t\t\tendpoint: e,\n\t\t\t\t\t\t})),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tret.set(\n\t\t\t\ti,\n\t\t\t\t// Filter out duplicates\n\t\t\t\tgroupDestinations.filter(\n\t\t\t\t\t(addr, index) =>\n\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t=== groupDestinations.findIndex(\n\t\t\t\t\t\t\t\t({ nodeId, endpoint }) =>\n\t\t\t\t\t\t\t\t\tnodeId === addr.nodeId\n\t\t\t\t\t\t\t\t\t&& endpoint === addr.endpoint,\n\t\t\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\treturn ret;\n\t}\n\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst mcAPI = CCAPI.create(\n\t\t\tCommandClasses[\"Multi Channel Association\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t);\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `Interviewing ${this.ccName}...`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\t// First find out how many groups are supported as multi channel\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"querying number of multi channel association groups...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst mcGroupCount = await mcAPI.getGroupCount();\n\t\tif (mcGroupCount != undefined) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`supports ${mcGroupCount} multi channel association groups`,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t} else {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t\"Querying multi channel association groups timed out, skipping interview...\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Query each association group for its members\n\t\tawait this.refreshValues(ctx);\n\n\t\t// And set up lifeline associations\n\t\tawait ccUtils.configureLifelineAssociations(ctx, endpoint);\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst mcAPI = CCAPI.create(\n\t\t\tCommandClasses[\"Multi Channel Association\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\t\tconst assocAPI = CCAPI.create(\n\t\t\tCommandClasses.Association,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tconst mcGroupCount: number = this.getValue(\n\t\t\tctx,\n\t\t\tMultiChannelAssociationCCValues.groupCount,\n\t\t) ?? 0;\n\n\t\t// Some devices report more association groups than multi channel association groups, so we need this info here\n\t\tconst assocGroupCount: number =\n\t\t\tthis.getValue(ctx, AssociationCCValues.groupCount)\n\t\t\t|| mcGroupCount;\n\n\t\t// Then query each multi channel association group\n\t\tfor (let groupId = 1; groupId <= mcGroupCount; groupId++) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`querying multi channel association group #${groupId}...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst group = await mcAPI.getGroup(groupId);\n\t\t\tif (!group) continue;\n\t\t\tconst logMessage =\n\t\t\t\t`received information for multi channel association group #${groupId}:\nmaximum # of nodes: ${group.maxNodes}\ncurrently assigned nodes: ${group.nodeIds.map(String).join(\", \")}\ncurrently assigned endpoints: ${\n\t\t\t\t\tgroup.endpoints\n\t\t\t\t\t\t.map(({ nodeId, endpoint }) => {\n\t\t\t\t\t\t\tif (typeof endpoint === \"number\") {\n\t\t\t\t\t\t\t\treturn `${nodeId}:${endpoint}`;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn `${nodeId}:[${\n\t\t\t\t\t\t\t\t\tendpoint.map(String).join(\", \")\n\t\t\t\t\t\t\t\t}]`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(\"\")\n\t\t\t\t}`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\n\t\t// Check if there are more non-multi-channel association groups we haven't queried yet\n\t\tif (assocAPI.isSupported() && assocGroupCount > mcGroupCount) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`querying additional non-multi-channel association groups...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tfor (\n\t\t\t\tlet groupId = mcGroupCount + 1;\n\t\t\t\tgroupId <= assocGroupCount;\n\t\t\t\tgroupId++\n\t\t\t) {\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: `querying association group #${groupId}...`,\n\t\t\t\t\tdirection: \"outbound\",\n\t\t\t\t});\n\t\t\t\tconst group = await assocAPI.getGroup(groupId);\n\t\t\t\tif (!group) continue;\n\t\t\t\tconst logMessage =\n\t\t\t\t\t`received information for association group #${groupId}:\nmaximum # of nodes: ${group.maxNodes}\ncurrently assigned nodes: ${group.nodeIds.map(String).join(\", \")}`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n// @publicAPI\nexport type MultiChannelAssociationCCSetOptions =\n\t& {\n\t\tgroupId: number;\n\t}\n\t& (\n\t\t| { nodeIds: number[] }\n\t\t| { endpoints: EndpointAddress[] }\n\t\t| { nodeIds: number[]; endpoints: EndpointAddress[] }\n\t);\n\n@CCCommand(MultiChannelAssociationCommand.Set)\n@useSupervision()\nexport class MultiChannelAssociationCCSet extends MultiChannelAssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultiChannelAssociationCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.groupId = options.groupId;\n\t\tthis.nodeIds = (\"nodeIds\" in options && options.nodeIds) || [];\n\t\tif (this.nodeIds.some((n) => n < 1 || n > MAX_NODES)) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`All node IDs must be between 1 and ${MAX_NODES}!`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.endpoints = (\"endpoints\" in options && options.endpoints)\n\t\t\t|| [];\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultiChannelAssociationCCSet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupId = raw.payload[0];\n\n\t\tconst { nodeIds, endpoints } =\n\t\t\tdeserializeMultiChannelAssociationDestination(\n\t\t\t\traw.payload.subarray(1),\n\t\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t\tendpoints,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\tpublic nodeIds: number[];\n\tpublic endpoints: EndpointAddress[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.groupId]),\n\t\t\tserializeMultiChannelAssociationDestination(\n\t\t\t\tthis.nodeIds,\n\t\t\t\tthis.endpoints,\n\t\t\t),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\t\"node ids\": this.nodeIds.join(\", \"),\n\t\t\t\tendpoints: endpointAddressesToString(this.endpoints),\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface MultiChannelAssociationCCRemoveOptions {\n\t/** The group from which to remove the nodes. If none is specified, the nodes will be removed from all groups. */\n\tgroupId?: number;\n\t/** The nodes to remove. If no nodeIds and no endpoint addresses are specified, ALL nodes will be removed. */\n\tnodeIds?: number[];\n\t/** The single endpoints to remove. If no nodeIds and no endpoint addresses are specified, ALL will be removed. */\n\tendpoints?: EndpointAddress[];\n}\n\n@CCCommand(MultiChannelAssociationCommand.Remove)\n@useSupervision()\nexport class MultiChannelAssociationCCRemove extends MultiChannelAssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultiChannelAssociationCCRemoveOptions>,\n\t) {\n\t\tsuper(options);\n\t\t// When removing associations, we allow invalid node IDs.\n\t\t// See GH#3606 - it is possible that those exist.\n\t\tthis.groupId = options.groupId;\n\t\tthis.nodeIds = options.nodeIds;\n\t\tthis.endpoints = options.endpoints;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultiChannelAssociationCCRemove {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupId: number | undefined = raw.payload[0];\n\n\t\tconst { nodeIds, endpoints } =\n\t\t\tdeserializeMultiChannelAssociationDestination(\n\t\t\t\traw.payload.subarray(1),\n\t\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t\tendpoints,\n\t\t});\n\t}\n\n\tpublic groupId?: number;\n\tpublic nodeIds?: number[];\n\tpublic endpoints?: EndpointAddress[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.groupId || 0]),\n\t\t\tserializeMultiChannelAssociationDestination(\n\t\t\t\tthis.nodeIds || [],\n\t\t\t\tthis.endpoints || [],\n\t\t\t),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"group id\": this.groupId || \"(all groups)\",\n\t\t};\n\t\tif (this.nodeIds) {\n\t\t\tmessage[\"node ids\"] = this.nodeIds.join(\", \");\n\t\t}\n\t\tif (this.endpoints) {\n\t\t\tmessage.endpoints = endpointAddressesToString(this.endpoints);\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface MultiChannelAssociationCCReportOptions {\n\tgroupId: number;\n\tmaxNodes: number;\n\tnodeIds: number[];\n\tendpoints: EndpointAddress[];\n\treportsToFollow: number;\n}\n\n@CCCommand(MultiChannelAssociationCommand.Report)\n@ccValueProperty(\n\t\"maxNodes\",\n\tMultiChannelAssociationCCValues.maxNodes,\n\t(self) => [self.groupId],\n)\n@ccValueProperty(\n\t\"nodeIds\",\n\tMultiChannelAssociationCCValues.nodeIds,\n\t(self) => [self.groupId],\n)\n@ccValueProperty(\n\t\"endpoints\",\n\tMultiChannelAssociationCCValues.endpoints,\n\t(self) => [self.groupId],\n)\nexport class MultiChannelAssociationCCReport extends MultiChannelAssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultiChannelAssociationCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupId = options.groupId;\n\t\tthis.maxNodes = options.maxNodes;\n\t\tthis.nodeIds = options.nodeIds;\n\t\tthis.endpoints = options.endpoints;\n\t\tthis.reportsToFollow = options.reportsToFollow;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultiChannelAssociationCCReport {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst groupId = raw.payload[0];\n\t\tconst maxNodes = raw.payload[1];\n\t\tconst reportsToFollow = raw.payload[2];\n\n\t\tconst { nodeIds, endpoints } =\n\t\t\tdeserializeMultiChannelAssociationDestination(\n\t\t\t\traw.payload.subarray(3),\n\t\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tmaxNodes,\n\t\t\tnodeIds,\n\t\t\tendpoints,\n\t\t\treportsToFollow,\n\t\t});\n\t}\n\n\tpublic readonly groupId: number;\n\n\tpublic maxNodes: number;\n\n\tpublic nodeIds: number[];\n\n\tpublic endpoints: EndpointAddress[];\n\n\tpublic reportsToFollow: number;\n\n\tpublic getPartialCCSessionId(): Record<string, any> | undefined {\n\t\t// Distinguish sessions by the association group ID\n\t\treturn { groupId: this.groupId };\n\t}\n\n\tpublic expectMoreMessages(): boolean {\n\t\treturn this.reportsToFollow > 0;\n\t}\n\n\tpublic mergePartialCCs(\n\t\tpartials: MultiChannelAssociationCCReport[],\n\t\t_ctx: CCParsingContext,\n\t): Promise<void> {\n\t\t// Concat the list of nodes\n\t\tthis.nodeIds = [...partials, this]\n\t\t\t.map((report) => [...report.nodeIds])\n\t\t\t.reduce((prev, cur) => prev.concat(...cur), []);\n\t\t// Concat the list of endpoints\n\t\tthis.endpoints = [...partials, this]\n\t\t\t.map((report) => [...report.endpoints])\n\t\t\t.reduce((prev, cur) => prev.concat(...cur), []);\n\t\treturn Promise.resolve();\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tconst destinations = serializeMultiChannelAssociationDestination(\n\t\t\tthis.nodeIds,\n\t\t\tthis.endpoints,\n\t\t);\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([\n\t\t\t\tthis.groupId,\n\t\t\t\tthis.maxNodes,\n\t\t\t\tthis.reportsToFollow,\n\t\t\t]),\n\t\t\tdestinations,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\t\"maximum # of nodes\": this.maxNodes,\n\t\t\t\t\"node ids\": this.nodeIds.join(\", \"),\n\t\t\t\tendpoints: endpointAddressesToString(this.endpoints),\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface MultiChannelAssociationCCGetOptions {\n\tgroupId: number;\n}\n\n@CCCommand(MultiChannelAssociationCommand.Get)\n@expectedCCResponse(MultiChannelAssociationCCReport)\nexport class MultiChannelAssociationCCGet extends MultiChannelAssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultiChannelAssociationCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultiChannelAssociationCCGet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupId = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"group id\": this.groupId },\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface MultiChannelAssociationCCSupportedGroupingsReportOptions {\n\tgroupCount: number;\n}\n\n@CCCommand(MultiChannelAssociationCommand.SupportedGroupingsReport)\n@ccValueProperty(\"groupCount\", MultiChannelAssociationCCValues.groupCount)\nexport class MultiChannelAssociationCCSupportedGroupingsReport\n\textends MultiChannelAssociationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<\n\t\t\tMultiChannelAssociationCCSupportedGroupingsReportOptions\n\t\t>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupCount = options.groupCount;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultiChannelAssociationCCSupportedGroupingsReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupCount = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupCount,\n\t\t});\n\t}\n\n\tpublic readonly groupCount: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupCount]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"group count\": this.groupCount },\n\t\t};\n\t}\n}\n\n@CCCommand(MultiChannelAssociationCommand.SupportedGroupingsGet)\n@expectedCCResponse(MultiChannelAssociationCCSupportedGroupingsReport)\nexport class MultiChannelAssociationCCSupportedGroupingsGet\n\textends MultiChannelAssociationCC\n{}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport type {\n\tEndpointId,\n\tGetValueDB,\n\tMessageRecord,\n\tSupervisionResult,\n\tWithAddress,\n} from \"@zwave-js/core/safe\";\nimport {\n\tCommandClasses,\n\tMAX_NODES,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tencodeBitMask,\n\tparseBitMask,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype RefreshValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport {\n\ttype AssociationAddress,\n\ttype EndpointAddress,\n\tMultiChannelAssociationCommand,\n} from \"../lib/_Types.js\";\nimport * as ccUtils from \"../lib/utils.js\";\nimport { AssociationCCValues } from \"./AssociationCC.js\";\n\nexport const MultiChannelAssociationCCValues = V.defineCCValues(\n\tCommandClasses[\"Multi Channel Association\"],\n\t{\n\t\t...V.staticProperty(\"groupCount\", undefined, { internal: true }),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"maxNodes\",\n\t\t\t\"maxNodes\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"maxNodes\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"nodeIds\",\n\t\t\t\"nodeIds\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"nodeIds\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"endpoints\",\n\t\t\t\"endpoints\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"endpoints\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t},\n);\n\nfunction endpointAddressesToString(\n\tendpoints: readonly EndpointAddress[],\n): string {\n\treturn endpoints\n\t\t.map(({ nodeId, endpoint }) => {\n\t\t\tif (typeof endpoint === \"number\") {\n\t\t\t\treturn `${nodeId}:${endpoint}`;\n\t\t\t} else {\n\t\t\t\treturn `${nodeId}:[${endpoint.map(String).join(\", \")}]`;\n\t\t\t}\n\t\t})\n\t\t.join(\", \");\n}\n\nconst MULTI_CHANNEL_ASSOCIATION_MARKER = 0x00;\n\nfunction serializeMultiChannelAssociationDestination(\n\tnodeIds: number[],\n\tendpoints: EndpointAddress[],\n): Bytes {\n\tconst nodeAddressBytes = nodeIds.length;\n\tconst endpointAddressBytes = endpoints.length * 2;\n\tconst payload = new Bytes(\n\t\t// node addresses\n\t\tnodeAddressBytes\n\t\t\t// endpoint marker\n\t\t\t+ (endpointAddressBytes > 0 ? 1 : 0)\n\t\t\t// endpoints\n\t\t\t+ endpointAddressBytes,\n\t);\n\t// write node addresses\n\tfor (let i = 0; i < nodeIds.length; i++) {\n\t\tpayload[i] = nodeIds[i];\n\t}\n\t// write endpoint addresses\n\tif (endpointAddressBytes > 0) {\n\t\tlet offset = nodeIds.length;\n\t\tpayload[offset] = MULTI_CHANNEL_ASSOCIATION_MARKER;\n\t\toffset += 1;\n\t\tfor (let i = 0; i < endpoints.length; i++) {\n\t\t\tconst endpoint = endpoints[i];\n\t\t\tconst destination = typeof endpoint.endpoint === \"number\"\n\t\t\t\t// The destination is a single number\n\t\t\t\t? endpoint.endpoint & 0b0111_1111\n\t\t\t\t// The destination is a bit mask\n\t\t\t\t: encodeBitMask(endpoint.endpoint, 7)[0] | 0b1000_0000;\n\n\t\t\tpayload[offset + 2 * i] = endpoint.nodeId;\n\t\t\tpayload[offset + 2 * i + 1] = destination;\n\t\t}\n\t}\n\treturn payload;\n}\n\nfunction deserializeMultiChannelAssociationDestination(data: Uint8Array): {\n\tnodeIds: number[];\n\tendpoints: EndpointAddress[];\n} {\n\tconst nodeIds: number[] = [];\n\tlet endpointOffset = data.length;\n\t// Scan node ids until we find the marker\n\tfor (let i = 0; i < data.length; i++) {\n\t\tif (data[i] === MULTI_CHANNEL_ASSOCIATION_MARKER) {\n\t\t\tendpointOffset = i + 1;\n\t\t\tbreak;\n\t\t}\n\t\tnodeIds.push(data[i]);\n\t}\n\tconst endpoints: EndpointAddress[] = [];\n\tfor (let i = endpointOffset; i < data.length; i += 2) {\n\t\tconst nodeId = data[i];\n\t\tconst isBitMask = !!(data[i + 1] & 0b1000_0000);\n\t\tconst destination = data[i + 1] & 0b0111_1111;\n\t\tconst endpoint = isBitMask\n\t\t\t? parseBitMask(Bytes.from([destination]))\n\t\t\t: destination;\n\n\t\tendpoints.push({ nodeId, endpoint });\n\t}\n\n\treturn { nodeIds, endpoints };\n}\n\n// @noSetValueAPI\n\n@API(CommandClasses[\"Multi Channel Association\"])\nexport class MultiChannelAssociationCCAPI extends PhysicalCCAPI {\n\tpublic supportsCommand(\n\t\tcmd: MultiChannelAssociationCommand,\n\t): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase MultiChannelAssociationCommand.Get:\n\t\t\tcase MultiChannelAssociationCommand.Set:\n\t\t\tcase MultiChannelAssociationCommand.Report:\n\t\t\tcase MultiChannelAssociationCommand.Remove:\n\t\t\tcase MultiChannelAssociationCommand.SupportedGroupingsGet:\n\t\t\tcase MultiChannelAssociationCommand.SupportedGroupingsReport:\n\t\t\t\treturn true; // This is mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t/**\n\t * Returns the number of association groups a node supports.\n\t * Association groups are consecutive, starting at 1.\n\t */\n\tpublic async getGroupCount(): Promise<MaybeNotKnown<number>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultiChannelAssociationCommand,\n\t\t\tMultiChannelAssociationCommand.SupportedGroupingsGet,\n\t\t);\n\n\t\tconst cc = new MultiChannelAssociationCCSupportedGroupingsGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tMultiChannelAssociationCCSupportedGroupingsReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.groupCount;\n\t}\n\n\t@validateArgs()\n\tpublic async reportGroupCount(groupCount: number): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultiChannelAssociationCommand,\n\t\t\tMultiChannelAssociationCommand.SupportedGroupingsReport,\n\t\t);\n\n\t\tconst cc = new MultiChannelAssociationCCSupportedGroupingsReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupCount,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Returns information about an association group.\n\t */\n\t@validateArgs()\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getGroup(groupId: number) {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultiChannelAssociationCommand,\n\t\t\tMultiChannelAssociationCommand.Get,\n\t\t);\n\n\t\tconst cc = new MultiChannelAssociationCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tMultiChannelAssociationCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\"maxNodes\", \"nodeIds\", \"endpoints\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async sendReport(\n\t\toptions: MultiChannelAssociationCCReportOptions,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultiChannelAssociationCommand,\n\t\t\tMultiChannelAssociationCommand.Report,\n\t\t);\n\n\t\tconst cc = new MultiChannelAssociationCCReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Adds new nodes or endpoints to an association group\n\t */\n\t@validateArgs()\n\tpublic async addDestinations(\n\t\toptions: MultiChannelAssociationCCSetOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultiChannelAssociationCommand,\n\t\t\tMultiChannelAssociationCommand.Set,\n\t\t);\n\n\t\tconst cc = new MultiChannelAssociationCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Removes nodes or endpoints from an association group\n\t */\n\t@validateArgs()\n\tpublic async removeDestinations(\n\t\toptions: MultiChannelAssociationCCRemoveOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultiChannelAssociationCommand,\n\t\t\tMultiChannelAssociationCommand.Remove,\n\t\t);\n\n\t\tif (!options.groupId && this.version === 1) {\n\t\t\t// V1 does not support omitting the group, manually remove the destination from all groups\n\t\t\t// We don't want to do too much work, so find out which groups the destination is in\n\t\t\tconst currentDestinations = MultiChannelAssociationCC\n\t\t\t\t.getAllDestinationsCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t);\n\t\t\tfor (const [group, destinations] of currentDestinations) {\n\t\t\t\tconst cc = new MultiChannelAssociationCCRemove({\n\t\t\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t\t\tgroupId: group,\n\t\t\t\t\tnodeIds: destinations\n\t\t\t\t\t\t.filter((d) => d.endpoint != undefined)\n\t\t\t\t\t\t.map((d) => d.nodeId),\n\t\t\t\t\tendpoints: destinations.filter(\n\t\t\t\t\t\t(d): d is AssociationAddress & { endpoint: number } =>\n\t\t\t\t\t\t\td.endpoint != undefined,\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t\t// TODO: evaluate intermediate supervision results\n\t\t\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t\t\t}\n\t\t} else if (options.groupId && options.groupId < 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must not be negative!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t} else {\n\t\t\tconst cc = new MultiChannelAssociationCCRemove({\n\t\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t\t...options,\n\t\t\t});\n\t\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t\t}\n\t}\n}\n\n@commandClass(CommandClasses[\"Multi Channel Association\"])\n@implementedVersion(5)\n@ccValues(MultiChannelAssociationCCValues)\nexport class MultiChannelAssociationCC extends CommandClass {\n\tdeclare ccCommand: MultiChannelAssociationCommand;\n\n\tpublic determineRequiredCCInterviews(): readonly CommandClasses[] {\n\t\t// MultiChannelAssociationCC must be interviewed after Z-Wave+ if that is supported\n\t\treturn [\n\t\t\t...super.determineRequiredCCInterviews(),\n\t\t\tCommandClasses[\"Z-Wave Plus Info\"],\n\t\t\t// We need information about endpoints to correctly configure the lifeline associations\n\t\t\tCommandClasses[\"Multi Channel\"],\n\t\t\t// AssociationCC will short-circuit if this CC is supported\n\t\t\tCommandClasses.Association,\n\t\t];\n\t}\n\n\t/**\n\t * Returns the number of association groups reported by the node/endpoint.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getGroupCountCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tMultiChannelAssociationCCValues.groupCount.endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) || 0;\n\t}\n\n\t/**\n\t * Returns the number of nodes an association group supports.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getMaxNodesCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tgroupId: number,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tMultiChannelAssociationCCValues.maxNodes(groupId).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) ?? 0;\n\t}\n\n\t/**\n\t * Returns all the destinations of all association groups reported by the node/endpoint.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getAllDestinationsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): ReadonlyMap<number, readonly AssociationAddress[]> {\n\t\tconst ret = new Map<number, AssociationAddress[]>();\n\t\tconst groupCount = this.getGroupCountCached(ctx, endpoint);\n\t\tconst valueDB = ctx.getValueDB(endpoint.nodeId);\n\t\tfor (let i = 1; i <= groupCount; i++) {\n\t\t\tconst groupDestinations: AssociationAddress[] = [];\n\t\t\t// Add all node destinations\n\t\t\tconst nodes = valueDB.getValue<number[]>(\n\t\t\t\tMultiChannelAssociationCCValues.nodeIds(i).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) ?? [];\n\t\t\tgroupDestinations.push(...nodes.map((nodeId) => ({ nodeId })));\n\t\t\t// And all endpoint destinations\n\t\t\tconst endpoints = valueDB.getValue<EndpointAddress[]>(\n\t\t\t\tMultiChannelAssociationCCValues.endpoints(i).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) ?? [];\n\t\t\tfor (const ep of endpoints) {\n\t\t\t\tif (typeof ep.endpoint === \"number\") {\n\t\t\t\t\tgroupDestinations.push({\n\t\t\t\t\t\tnodeId: ep.nodeId,\n\t\t\t\t\t\tendpoint: ep.endpoint,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tgroupDestinations.push(\n\t\t\t\t\t\t...ep.endpoint.map((e) => ({\n\t\t\t\t\t\t\tnodeId: ep.nodeId,\n\t\t\t\t\t\t\tendpoint: e,\n\t\t\t\t\t\t})),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tret.set(\n\t\t\t\ti,\n\t\t\t\t// Filter out duplicates\n\t\t\t\tgroupDestinations.filter(\n\t\t\t\t\t(addr, index) =>\n\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t=== groupDestinations.findIndex(\n\t\t\t\t\t\t\t\t({ nodeId, endpoint }) =>\n\t\t\t\t\t\t\t\t\tnodeId === addr.nodeId\n\t\t\t\t\t\t\t\t\t&& endpoint === addr.endpoint,\n\t\t\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\treturn ret;\n\t}\n\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst mcAPI = CCAPI.create(\n\t\t\tCommandClasses[\"Multi Channel Association\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t);\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `Interviewing ${this.ccName}...`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\t// First find out how many groups are supported as multi channel\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"querying number of multi channel association groups...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst mcGroupCount = await mcAPI.getGroupCount();\n\t\tif (mcGroupCount != undefined) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`supports ${mcGroupCount} multi channel association groups`,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t} else {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t\"Querying multi channel association groups timed out, skipping interview...\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Query each association group for its members\n\t\tawait this.refreshValues(ctx);\n\n\t\t// And set up lifeline associations\n\t\tawait ccUtils.configureLifelineAssociations(ctx, endpoint);\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst mcAPI = CCAPI.create(\n\t\t\tCommandClasses[\"Multi Channel Association\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\t\tconst assocAPI = CCAPI.create(\n\t\t\tCommandClasses.Association,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tconst mcGroupCount: number = this.getValue(\n\t\t\tctx,\n\t\t\tMultiChannelAssociationCCValues.groupCount,\n\t\t) ?? 0;\n\n\t\t// Some devices report more association groups than multi channel association groups, so we need this info here\n\t\tconst assocGroupCount: number =\n\t\t\tthis.getValue(ctx, AssociationCCValues.groupCount)\n\t\t\t|| mcGroupCount;\n\n\t\t// Then query each multi channel association group\n\t\tfor (let groupId = 1; groupId <= mcGroupCount; groupId++) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`querying multi channel association group #${groupId}...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst group = await mcAPI.getGroup(groupId);\n\t\t\tif (!group) continue;\n\t\t\tconst logMessage =\n\t\t\t\t`received information for multi channel association group #${groupId}:\nmaximum # of nodes: ${group.maxNodes}\ncurrently assigned nodes: ${group.nodeIds.map(String).join(\", \")}\ncurrently assigned endpoints: ${\n\t\t\t\t\tgroup.endpoints\n\t\t\t\t\t\t.map(({ nodeId, endpoint }) => {\n\t\t\t\t\t\t\tif (typeof endpoint === \"number\") {\n\t\t\t\t\t\t\t\treturn `${nodeId}:${endpoint}`;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn `${nodeId}:[${\n\t\t\t\t\t\t\t\t\tendpoint.map(String).join(\", \")\n\t\t\t\t\t\t\t\t}]`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(\"\")\n\t\t\t\t}`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\n\t\t// Check if there are more non-multi-channel association groups we haven't queried yet\n\t\tif (assocAPI.isSupported() && assocGroupCount > mcGroupCount) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`querying additional non-multi-channel association groups...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tfor (\n\t\t\t\tlet groupId = mcGroupCount + 1;\n\t\t\t\tgroupId <= assocGroupCount;\n\t\t\t\tgroupId++\n\t\t\t) {\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: `querying association group #${groupId}...`,\n\t\t\t\t\tdirection: \"outbound\",\n\t\t\t\t});\n\t\t\t\tconst group = await assocAPI.getGroup(groupId);\n\t\t\t\tif (!group) continue;\n\t\t\t\tconst logMessage =\n\t\t\t\t\t`received information for association group #${groupId}:\nmaximum # of nodes: ${group.maxNodes}\ncurrently assigned nodes: ${group.nodeIds.map(String).join(\", \")}`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n// @publicAPI\nexport type MultiChannelAssociationCCSetOptions =\n\t& {\n\t\tgroupId: number;\n\t}\n\t& (\n\t\t| { nodeIds: number[] }\n\t\t| { endpoints: EndpointAddress[] }\n\t\t| { nodeIds: number[]; endpoints: EndpointAddress[] }\n\t);\n\n@CCCommand(MultiChannelAssociationCommand.Set)\n@useSupervision()\nexport class MultiChannelAssociationCCSet extends MultiChannelAssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultiChannelAssociationCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.groupId = options.groupId;\n\t\tthis.nodeIds = (\"nodeIds\" in options && options.nodeIds) || [];\n\t\tif (this.nodeIds.some((n) => n < 1 || n > MAX_NODES)) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`All node IDs must be between 1 and ${MAX_NODES}!`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.endpoints = (\"endpoints\" in options && options.endpoints)\n\t\t\t|| [];\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultiChannelAssociationCCSet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupId = raw.payload[0];\n\n\t\tconst { nodeIds, endpoints } =\n\t\t\tdeserializeMultiChannelAssociationDestination(\n\t\t\t\traw.payload.subarray(1),\n\t\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t\tendpoints,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\tpublic nodeIds: number[];\n\tpublic endpoints: EndpointAddress[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.groupId]),\n\t\t\tserializeMultiChannelAssociationDestination(\n\t\t\t\tthis.nodeIds,\n\t\t\t\tthis.endpoints,\n\t\t\t),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\t\"node ids\": this.nodeIds.join(\", \"),\n\t\t\t\tendpoints: endpointAddressesToString(this.endpoints),\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface MultiChannelAssociationCCRemoveOptions {\n\t/** The group from which to remove the nodes. If none is specified, the nodes will be removed from all groups. */\n\tgroupId?: number;\n\t/** The nodes to remove. If no nodeIds and no endpoint addresses are specified, ALL nodes will be removed. */\n\tnodeIds?: number[];\n\t/** The single endpoints to remove. If no nodeIds and no endpoint addresses are specified, ALL will be removed. */\n\tendpoints?: EndpointAddress[];\n}\n\n@CCCommand(MultiChannelAssociationCommand.Remove)\n@useSupervision()\nexport class MultiChannelAssociationCCRemove extends MultiChannelAssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultiChannelAssociationCCRemoveOptions>,\n\t) {\n\t\tsuper(options);\n\t\t// When removing associations, we allow invalid node IDs.\n\t\t// See GH#3606 - it is possible that those exist.\n\t\tthis.groupId = options.groupId;\n\t\tthis.nodeIds = options.nodeIds;\n\t\tthis.endpoints = options.endpoints;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultiChannelAssociationCCRemove {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupId: number | undefined = raw.payload[0];\n\n\t\tconst { nodeIds, endpoints } =\n\t\t\tdeserializeMultiChannelAssociationDestination(\n\t\t\t\traw.payload.subarray(1),\n\t\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t\tendpoints,\n\t\t});\n\t}\n\n\tpublic groupId?: number;\n\tpublic nodeIds?: number[];\n\tpublic endpoints?: EndpointAddress[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.groupId || 0]),\n\t\t\tserializeMultiChannelAssociationDestination(\n\t\t\t\tthis.nodeIds || [],\n\t\t\t\tthis.endpoints || [],\n\t\t\t),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"group id\": this.groupId || \"(all groups)\",\n\t\t};\n\t\tif (this.nodeIds) {\n\t\t\tmessage[\"node ids\"] = this.nodeIds.join(\", \");\n\t\t}\n\t\tif (this.endpoints) {\n\t\t\tmessage.endpoints = endpointAddressesToString(this.endpoints);\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface MultiChannelAssociationCCReportOptions {\n\tgroupId: number;\n\tmaxNodes: number;\n\tnodeIds: number[];\n\tendpoints: EndpointAddress[];\n\treportsToFollow: number;\n}\n\n@CCCommand(MultiChannelAssociationCommand.Report)\n@ccValueProperty(\n\t\"maxNodes\",\n\tMultiChannelAssociationCCValues.maxNodes,\n\t(self) => [self.groupId],\n)\n@ccValueProperty(\n\t\"nodeIds\",\n\tMultiChannelAssociationCCValues.nodeIds,\n\t(self) => [self.groupId],\n)\n@ccValueProperty(\n\t\"endpoints\",\n\tMultiChannelAssociationCCValues.endpoints,\n\t(self) => [self.groupId],\n)\nexport class MultiChannelAssociationCCReport extends MultiChannelAssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultiChannelAssociationCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupId = options.groupId;\n\t\tthis.maxNodes = options.maxNodes;\n\t\tthis.nodeIds = options.nodeIds;\n\t\tthis.endpoints = options.endpoints;\n\t\tthis.reportsToFollow = options.reportsToFollow;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultiChannelAssociationCCReport {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst groupId = raw.payload[0];\n\t\tconst maxNodes = raw.payload[1];\n\t\tconst reportsToFollow = raw.payload[2];\n\n\t\tconst { nodeIds, endpoints } =\n\t\t\tdeserializeMultiChannelAssociationDestination(\n\t\t\t\traw.payload.subarray(3),\n\t\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tmaxNodes,\n\t\t\tnodeIds,\n\t\t\tendpoints,\n\t\t\treportsToFollow,\n\t\t});\n\t}\n\n\tpublic readonly groupId: number;\n\n\tpublic maxNodes: number;\n\n\tpublic nodeIds: number[];\n\n\tpublic endpoints: EndpointAddress[];\n\n\tpublic reportsToFollow: number;\n\n\tpublic getPartialCCSessionId(): Record<string, any> | undefined {\n\t\t// Distinguish sessions by the association group ID\n\t\treturn { groupId: this.groupId };\n\t}\n\n\tpublic expectMoreMessages(): boolean {\n\t\treturn this.reportsToFollow > 0;\n\t}\n\n\tpublic mergePartialCCs(\n\t\tpartials: MultiChannelAssociationCCReport[],\n\t\t_ctx: CCParsingContext,\n\t): Promise<void> {\n\t\t// Concat the list of nodes\n\t\tthis.nodeIds = [...partials, this]\n\t\t\t.map((report) => [...report.nodeIds])\n\t\t\t.reduce((prev, cur) => prev.concat(...cur), []);\n\t\t// Concat the list of endpoints\n\t\tthis.endpoints = [...partials, this]\n\t\t\t.map((report) => [...report.endpoints])\n\t\t\t.reduce((prev, cur) => prev.concat(...cur), []);\n\t\treturn Promise.resolve();\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tconst destinations = serializeMultiChannelAssociationDestination(\n\t\t\tthis.nodeIds,\n\t\t\tthis.endpoints,\n\t\t);\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([\n\t\t\t\tthis.groupId,\n\t\t\t\tthis.maxNodes,\n\t\t\t\tthis.reportsToFollow,\n\t\t\t]),\n\t\t\tdestinations,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\t\"maximum # of nodes\": this.maxNodes,\n\t\t\t\t\"node ids\": this.nodeIds.join(\", \"),\n\t\t\t\tendpoints: endpointAddressesToString(this.endpoints),\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface MultiChannelAssociationCCGetOptions {\n\tgroupId: number;\n}\n\n@CCCommand(MultiChannelAssociationCommand.Get)\n@expectedCCResponse(MultiChannelAssociationCCReport)\nexport class MultiChannelAssociationCCGet extends MultiChannelAssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultiChannelAssociationCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultiChannelAssociationCCGet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupId = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"group id\": this.groupId },\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface MultiChannelAssociationCCSupportedGroupingsReportOptions {\n\tgroupCount: number;\n}\n\n@CCCommand(MultiChannelAssociationCommand.SupportedGroupingsReport)\n@ccValueProperty(\"groupCount\", MultiChannelAssociationCCValues.groupCount)\nexport class MultiChannelAssociationCCSupportedGroupingsReport\n\textends MultiChannelAssociationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<\n\t\t\tMultiChannelAssociationCCSupportedGroupingsReportOptions\n\t\t>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupCount = options.groupCount;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultiChannelAssociationCCSupportedGroupingsReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupCount = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupCount,\n\t\t});\n\t}\n\n\tpublic readonly groupCount: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupCount]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"group count\": this.groupCount },\n\t\t};\n\t}\n}\n\n@CCCommand(MultiChannelAssociationCommand.SupportedGroupingsGet)\n@expectedCCResponse(MultiChannelAssociationCCSupportedGroupingsReport)\nexport class MultiChannelAssociationCCSupportedGroupingsGet\n\textends MultiChannelAssociationCC\n{}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_safe", "endpoint"]
|
|
7
7
|
}
|