@zwave-js/cc 15.1.1 → 15.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (535) hide show
  1. package/build/cjs/cc/AlarmSensorCC.d.ts +7 -7
  2. package/build/cjs/cc/AlarmSensorCC.js +22 -23
  3. package/build/cjs/cc/AlarmSensorCC.js.map +3 -3
  4. package/build/cjs/cc/AssociationCC.d.ts +8 -9
  5. package/build/cjs/cc/AssociationCC.js +29 -29
  6. package/build/cjs/cc/AssociationCC.js.map +3 -3
  7. package/build/cjs/cc/AssociationGroupInfoCC.d.ts +7 -7
  8. package/build/cjs/cc/AssociationGroupInfoCC.js +31 -32
  9. package/build/cjs/cc/AssociationGroupInfoCC.js.map +3 -3
  10. package/build/cjs/cc/BarrierOperatorCC.d.ts +8 -8
  11. package/build/cjs/cc/BarrierOperatorCC.js +35 -36
  12. package/build/cjs/cc/BarrierOperatorCC.js.map +3 -3
  13. package/build/cjs/cc/BasicCC.d.ts +4 -4
  14. package/build/cjs/cc/BasicCC.js +23 -24
  15. package/build/cjs/cc/BasicCC.js.map +3 -3
  16. package/build/cjs/cc/BatteryCC.d.ts +4 -7
  17. package/build/cjs/cc/BatteryCC.js +18 -20
  18. package/build/cjs/cc/BatteryCC.js.map +3 -3
  19. package/build/cjs/cc/BinarySensorCC.d.ts +5 -5
  20. package/build/cjs/cc/BinarySensorCC.js +20 -21
  21. package/build/cjs/cc/BinarySensorCC.js.map +3 -3
  22. package/build/cjs/cc/BinarySwitchCC._validateArgs.js +2 -2
  23. package/build/cjs/cc/BinarySwitchCC.d.ts +6 -6
  24. package/build/cjs/cc/BinarySwitchCC.js +26 -26
  25. package/build/cjs/cc/BinarySwitchCC.js.map +3 -3
  26. package/build/cjs/cc/CRC16CC.d.ts +3 -3
  27. package/build/cjs/cc/CRC16CC.js +15 -15
  28. package/build/cjs/cc/CRC16CC.js.map +3 -3
  29. package/build/cjs/cc/CentralSceneCC.d.ts +8 -8
  30. package/build/cjs/cc/CentralSceneCC.js +23 -24
  31. package/build/cjs/cc/CentralSceneCC.js.map +3 -3
  32. package/build/cjs/cc/ClimateControlScheduleCC.d.ts +6 -6
  33. package/build/cjs/cc/ClimateControlScheduleCC.js +19 -20
  34. package/build/cjs/cc/ClimateControlScheduleCC.js.map +3 -3
  35. package/build/cjs/cc/ClockCC.d.ts +3 -4
  36. package/build/cjs/cc/ClockCC.js +13 -14
  37. package/build/cjs/cc/ClockCC.js.map +3 -3
  38. package/build/cjs/cc/ColorSwitchCC.d.ts +3 -4
  39. package/build/cjs/cc/ColorSwitchCC.js +22 -24
  40. package/build/cjs/cc/ColorSwitchCC.js.map +3 -3
  41. package/build/cjs/cc/ConfigurationCC.d.ts +3 -3
  42. package/build/cjs/cc/ConfigurationCC.js +114 -115
  43. package/build/cjs/cc/ConfigurationCC.js.map +3 -3
  44. package/build/cjs/cc/DeviceResetLocallyCC.d.ts +2 -2
  45. package/build/cjs/cc/DeviceResetLocallyCC.js +5 -5
  46. package/build/cjs/cc/DeviceResetLocallyCC.js.map +1 -1
  47. package/build/cjs/cc/DoorLockCC.d.ts +29 -29
  48. package/build/cjs/cc/DoorLockCC.js +39 -40
  49. package/build/cjs/cc/DoorLockCC.js.map +3 -3
  50. package/build/cjs/cc/DoorLockLoggingCC.d.ts +4 -4
  51. package/build/cjs/cc/DoorLockLoggingCC.js +13 -14
  52. package/build/cjs/cc/DoorLockLoggingCC.js.map +3 -3
  53. package/build/cjs/cc/EnergyProductionCC.d.ts +2 -3
  54. package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
  55. package/build/cjs/cc/EntryControlCC.d.ts +8 -8
  56. package/build/cjs/cc/EntryControlCC.js +41 -42
  57. package/build/cjs/cc/EntryControlCC.js.map +3 -3
  58. package/build/cjs/cc/FirmwareUpdateMetaDataCC.d.ts +9 -10
  59. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +52 -53
  60. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +3 -3
  61. package/build/cjs/cc/HailCC.js +2 -2
  62. package/build/cjs/cc/HailCC.js.map +1 -1
  63. package/build/cjs/cc/HumidityControlModeCC.d.ts +5 -5
  64. package/build/cjs/cc/HumidityControlModeCC.js +20 -21
  65. package/build/cjs/cc/HumidityControlModeCC.js.map +3 -3
  66. package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +3 -3
  67. package/build/cjs/cc/HumidityControlOperatingStateCC.js +9 -9
  68. package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +3 -3
  69. package/build/cjs/cc/HumidityControlSetpointCC.d.ts +6 -6
  70. package/build/cjs/cc/HumidityControlSetpointCC.js +43 -44
  71. package/build/cjs/cc/HumidityControlSetpointCC.js.map +3 -3
  72. package/build/cjs/cc/InclusionControllerCC.d.ts +2 -3
  73. package/build/cjs/cc/InclusionControllerCC.js.map +2 -2
  74. package/build/cjs/cc/IndicatorCC.d.ts +3 -3
  75. package/build/cjs/cc/IndicatorCC.js +50 -52
  76. package/build/cjs/cc/IndicatorCC.js.map +3 -3
  77. package/build/cjs/cc/IrrigationCC.d.ts +3 -3
  78. package/build/cjs/cc/IrrigationCC.js +74 -75
  79. package/build/cjs/cc/IrrigationCC.js.map +3 -3
  80. package/build/cjs/cc/LanguageCC.d.ts +5 -6
  81. package/build/cjs/cc/LanguageCC.js +14 -15
  82. package/build/cjs/cc/LanguageCC.js.map +3 -3
  83. package/build/cjs/cc/LockCC.d.ts +4 -4
  84. package/build/cjs/cc/LockCC.js +10 -10
  85. package/build/cjs/cc/LockCC.js.map +3 -3
  86. package/build/cjs/cc/ManufacturerProprietaryCC.d.ts +3 -3
  87. package/build/cjs/cc/ManufacturerProprietaryCC.js +10 -10
  88. package/build/cjs/cc/ManufacturerProprietaryCC.js.map +3 -3
  89. package/build/cjs/cc/ManufacturerSpecificCC.d.ts +7 -8
  90. package/build/cjs/cc/ManufacturerSpecificCC.js +20 -21
  91. package/build/cjs/cc/ManufacturerSpecificCC.js.map +3 -3
  92. package/build/cjs/cc/MeterCC.d.ts +4 -6
  93. package/build/cjs/cc/MeterCC.js +52 -54
  94. package/build/cjs/cc/MeterCC.js.map +3 -3
  95. package/build/cjs/cc/MultiChannelAssociationCC.d.ts +7 -8
  96. package/build/cjs/cc/MultiChannelAssociationCC.js +34 -35
  97. package/build/cjs/cc/MultiChannelAssociationCC.js.map +3 -3
  98. package/build/cjs/cc/MultiChannelCC.d.ts +11 -11
  99. package/build/cjs/cc/MultiChannelCC.js +53 -53
  100. package/build/cjs/cc/MultiChannelCC.js.map +3 -3
  101. package/build/cjs/cc/MultiCommandCC.d.ts +3 -3
  102. package/build/cjs/cc/MultiCommandCC.js +13 -13
  103. package/build/cjs/cc/MultiCommandCC.js.map +3 -3
  104. package/build/cjs/cc/MultilevelSensorCC.d.ts +4 -7
  105. package/build/cjs/cc/MultilevelSensorCC.js +26 -28
  106. package/build/cjs/cc/MultilevelSensorCC.js.map +3 -3
  107. package/build/cjs/cc/MultilevelSwitchCC._validateArgs.js +3 -3
  108. package/build/cjs/cc/MultilevelSwitchCC.d.ts +13 -13
  109. package/build/cjs/cc/MultilevelSwitchCC.js +36 -37
  110. package/build/cjs/cc/MultilevelSwitchCC.js.map +3 -3
  111. package/build/cjs/cc/NoOperationCC.js +4 -4
  112. package/build/cjs/cc/NoOperationCC.js.map +1 -1
  113. package/build/cjs/cc/NodeNamingCC.d.ts +5 -5
  114. package/build/cjs/cc/NodeNamingCC.js +20 -20
  115. package/build/cjs/cc/NodeNamingCC.js.map +3 -3
  116. package/build/cjs/cc/NotificationCC.d.ts +4 -5
  117. package/build/cjs/cc/NotificationCC.js +66 -68
  118. package/build/cjs/cc/NotificationCC.js.map +3 -3
  119. package/build/cjs/cc/PowerlevelCC.d.ts +3 -3
  120. package/build/cjs/cc/PowerlevelCC.js +25 -26
  121. package/build/cjs/cc/PowerlevelCC.js.map +3 -3
  122. package/build/cjs/cc/ProtectionCC._validateArgs.js +2 -2
  123. package/build/cjs/cc/ProtectionCC.d.ts +11 -11
  124. package/build/cjs/cc/ProtectionCC.js +35 -36
  125. package/build/cjs/cc/ProtectionCC.js.map +3 -3
  126. package/build/cjs/cc/SceneActivationCC._validateArgs.js +2 -2
  127. package/build/cjs/cc/SceneActivationCC.d.ts +5 -6
  128. package/build/cjs/cc/SceneActivationCC.js +10 -10
  129. package/build/cjs/cc/SceneActivationCC.js.map +3 -3
  130. package/build/cjs/cc/SceneActuatorConfigurationCC._validateArgs.js +2 -2
  131. package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +5 -5
  132. package/build/cjs/cc/SceneActuatorConfigurationCC.js +19 -20
  133. package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +3 -3
  134. package/build/cjs/cc/SceneControllerConfigurationCC._validateArgs.js +2 -2
  135. package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +6 -6
  136. package/build/cjs/cc/SceneControllerConfigurationCC.js +25 -26
  137. package/build/cjs/cc/SceneControllerConfigurationCC.js.map +3 -3
  138. package/build/cjs/cc/ScheduleEntryLockCC.d.ts +2 -3
  139. package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
  140. package/build/cjs/cc/Security2CC.d.ts +3 -4
  141. package/build/cjs/cc/Security2CC.js +60 -62
  142. package/build/cjs/cc/Security2CC.js.map +3 -3
  143. package/build/cjs/cc/SecurityCC.d.ts +3 -4
  144. package/build/cjs/cc/SecurityCC.js +25 -26
  145. package/build/cjs/cc/SecurityCC.js.map +3 -3
  146. package/build/cjs/cc/SoundSwitchCC.d.ts +7 -7
  147. package/build/cjs/cc/SoundSwitchCC.js +28 -29
  148. package/build/cjs/cc/SoundSwitchCC.js.map +3 -3
  149. package/build/cjs/cc/SupervisionCC.d.ts +4 -4
  150. package/build/cjs/cc/SupervisionCC.js +28 -29
  151. package/build/cjs/cc/SupervisionCC.js.map +3 -3
  152. package/build/cjs/cc/ThermostatFanModeCC.d.ts +6 -6
  153. package/build/cjs/cc/ThermostatFanModeCC.js +21 -22
  154. package/build/cjs/cc/ThermostatFanModeCC.js.map +3 -3
  155. package/build/cjs/cc/ThermostatFanStateCC.d.ts +3 -3
  156. package/build/cjs/cc/ThermostatFanStateCC.js +9 -9
  157. package/build/cjs/cc/ThermostatFanStateCC.js.map +3 -3
  158. package/build/cjs/cc/ThermostatModeCC.d.ts +6 -6
  159. package/build/cjs/cc/ThermostatModeCC.js +30 -31
  160. package/build/cjs/cc/ThermostatModeCC.js.map +3 -3
  161. package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +3 -4
  162. package/build/cjs/cc/ThermostatOperatingStateCC.js +9 -9
  163. package/build/cjs/cc/ThermostatOperatingStateCC.js.map +3 -3
  164. package/build/cjs/cc/ThermostatSetbackCC.d.ts +3 -3
  165. package/build/cjs/cc/ThermostatSetbackCC.js +14 -15
  166. package/build/cjs/cc/ThermostatSetbackCC.js.map +3 -3
  167. package/build/cjs/cc/ThermostatSetpointCC.d.ts +6 -6
  168. package/build/cjs/cc/ThermostatSetpointCC.js +48 -49
  169. package/build/cjs/cc/ThermostatSetpointCC.js.map +3 -3
  170. package/build/cjs/cc/TimeCC.d.ts +3 -4
  171. package/build/cjs/cc/TimeCC.js +9 -10
  172. package/build/cjs/cc/TimeCC.js.map +3 -3
  173. package/build/cjs/cc/TimeParametersCC.d.ts +3 -4
  174. package/build/cjs/cc/TimeParametersCC.js +2 -2
  175. package/build/cjs/cc/TimeParametersCC.js.map +2 -2
  176. package/build/cjs/cc/TransportServiceCC.d.ts +3 -3
  177. package/build/cjs/cc/TransportServiceCC.js +44 -45
  178. package/build/cjs/cc/TransportServiceCC.js.map +3 -3
  179. package/build/cjs/cc/UserCodeCC.d.ts +19 -19
  180. package/build/cjs/cc/UserCodeCC.js +102 -103
  181. package/build/cjs/cc/UserCodeCC.js.map +3 -3
  182. package/build/cjs/cc/VersionCC.d.ts +17 -17
  183. package/build/cjs/cc/VersionCC.js +46 -47
  184. package/build/cjs/cc/VersionCC.js.map +3 -3
  185. package/build/cjs/cc/WakeUpCC.d.ts +6 -6
  186. package/build/cjs/cc/WakeUpCC.js +16 -17
  187. package/build/cjs/cc/WakeUpCC.js.map +3 -3
  188. package/build/cjs/cc/WindowCoveringCC.d.ts +3 -4
  189. package/build/cjs/cc/WindowCoveringCC.js +17 -18
  190. package/build/cjs/cc/WindowCoveringCC.js.map +3 -3
  191. package/build/cjs/cc/ZWavePlusCC.d.ts +8 -8
  192. package/build/cjs/cc/ZWavePlusCC.js +15 -16
  193. package/build/cjs/cc/ZWavePlusCC.js.map +3 -3
  194. package/build/cjs/cc/ZWaveProtocolCC.d.ts +2 -2
  195. package/build/cjs/cc/ZWaveProtocolCC.js +35 -35
  196. package/build/cjs/cc/ZWaveProtocolCC.js.map +2 -2
  197. package/build/cjs/cc/_CCValues.generated.js +24 -26
  198. package/build/cjs/cc/_CCValues.generated.js.map +3 -3
  199. package/build/cjs/cc/manufacturerProprietary/FibaroCC.d.ts +3 -3
  200. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js +14 -14
  201. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
  202. package/build/cjs/lib/API.d.ts +3 -3
  203. package/build/cjs/lib/API.js.map +2 -2
  204. package/build/cjs/lib/CommandClass.d.ts +5 -6
  205. package/build/cjs/lib/CommandClass.js +45 -45
  206. package/build/cjs/lib/CommandClass.js.map +3 -3
  207. package/build/cjs/lib/CommandClassDecorators.d.ts +2 -2
  208. package/build/cjs/lib/CommandClassDecorators.js +3 -3
  209. package/build/cjs/lib/CommandClassDecorators.js.map +2 -2
  210. package/build/cjs/lib/Security2/Extension.d.ts +2 -2
  211. package/build/cjs/lib/Security2/Extension.js +17 -17
  212. package/build/cjs/lib/Security2/Extension.js.map +3 -3
  213. package/build/cjs/lib/SetValueResult.d.ts +1 -1
  214. package/build/cjs/lib/SetValueResult.js.map +1 -1
  215. package/build/cjs/lib/Values.d.ts +3 -3
  216. package/build/cjs/lib/Values.js +6 -6
  217. package/build/cjs/lib/Values.js.map +2 -2
  218. package/build/cjs/lib/_Types.d.ts +2 -2
  219. package/build/cjs/lib/_Types.js +3 -3
  220. package/build/cjs/lib/_Types.js.map +1 -1
  221. package/build/cjs/lib/serializers.d.ts +1 -1
  222. package/build/cjs/lib/serializers.js +5 -5
  223. package/build/cjs/lib/serializers.js.map +2 -2
  224. package/build/cjs/lib/traits.d.ts +2 -2
  225. package/build/cjs/lib/utils.d.ts +2 -2
  226. package/build/cjs/lib/utils.js +60 -60
  227. package/build/cjs/lib/utils.js.map +3 -3
  228. package/build/esm/cc/AlarmSensorCC.d.ts +7 -7
  229. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  230. package/build/esm/cc/AlarmSensorCC.js +2 -3
  231. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  232. package/build/esm/cc/AssociationCC.d.ts +8 -9
  233. package/build/esm/cc/AssociationCC.d.ts.map +1 -1
  234. package/build/esm/cc/AssociationCC.js +2 -2
  235. package/build/esm/cc/AssociationCC.js.map +1 -1
  236. package/build/esm/cc/AssociationGroupInfoCC.d.ts +7 -7
  237. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  238. package/build/esm/cc/AssociationGroupInfoCC.js +2 -3
  239. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  240. package/build/esm/cc/BarrierOperatorCC.d.ts +8 -8
  241. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  242. package/build/esm/cc/BarrierOperatorCC.js +2 -3
  243. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  244. package/build/esm/cc/BasicCC.d.ts +4 -4
  245. package/build/esm/cc/BasicCC.d.ts.map +1 -1
  246. package/build/esm/cc/BasicCC.js +2 -3
  247. package/build/esm/cc/BasicCC.js.map +1 -1
  248. package/build/esm/cc/BatteryCC.d.ts +4 -7
  249. package/build/esm/cc/BatteryCC.d.ts.map +1 -1
  250. package/build/esm/cc/BatteryCC.js +2 -4
  251. package/build/esm/cc/BatteryCC.js.map +1 -1
  252. package/build/esm/cc/BinarySensorCC.d.ts +5 -5
  253. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  254. package/build/esm/cc/BinarySensorCC.js +2 -3
  255. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  256. package/build/esm/cc/BinarySwitchCC._validateArgs.js +1 -1
  257. package/build/esm/cc/BinarySwitchCC._validateArgs.js.map +1 -1
  258. package/build/esm/cc/BinarySwitchCC.d.ts +6 -6
  259. package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
  260. package/build/esm/cc/BinarySwitchCC.js +2 -2
  261. package/build/esm/cc/BinarySwitchCC.js.map +1 -1
  262. package/build/esm/cc/CRC16CC.d.ts +3 -3
  263. package/build/esm/cc/CRC16CC.d.ts.map +1 -1
  264. package/build/esm/cc/CRC16CC.js +2 -2
  265. package/build/esm/cc/CRC16CC.js.map +1 -1
  266. package/build/esm/cc/CentralSceneCC.d.ts +8 -8
  267. package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
  268. package/build/esm/cc/CentralSceneCC.js +2 -3
  269. package/build/esm/cc/CentralSceneCC.js.map +1 -1
  270. package/build/esm/cc/ClimateControlScheduleCC.d.ts +6 -6
  271. package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
  272. package/build/esm/cc/ClimateControlScheduleCC.js +2 -3
  273. package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
  274. package/build/esm/cc/ClockCC.d.ts +3 -4
  275. package/build/esm/cc/ClockCC.d.ts.map +1 -1
  276. package/build/esm/cc/ClockCC.js +2 -3
  277. package/build/esm/cc/ClockCC.js.map +1 -1
  278. package/build/esm/cc/ColorSwitchCC.d.ts +3 -4
  279. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  280. package/build/esm/cc/ColorSwitchCC.js +2 -4
  281. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  282. package/build/esm/cc/ConfigurationCC.d.ts +3 -3
  283. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  284. package/build/esm/cc/ConfigurationCC.js +2 -3
  285. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  286. package/build/esm/cc/DeviceResetLocallyCC.d.ts +2 -2
  287. package/build/esm/cc/DeviceResetLocallyCC.d.ts.map +1 -1
  288. package/build/esm/cc/DeviceResetLocallyCC.js +1 -1
  289. package/build/esm/cc/DeviceResetLocallyCC.js.map +1 -1
  290. package/build/esm/cc/DoorLockCC.d.ts +29 -29
  291. package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
  292. package/build/esm/cc/DoorLockCC.js +2 -3
  293. package/build/esm/cc/DoorLockCC.js.map +1 -1
  294. package/build/esm/cc/DoorLockLoggingCC.d.ts +4 -4
  295. package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
  296. package/build/esm/cc/DoorLockLoggingCC.js +2 -3
  297. package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
  298. package/build/esm/cc/EnergyProductionCC.d.ts +2 -3
  299. package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
  300. package/build/esm/cc/EnergyProductionCC.js.map +1 -1
  301. package/build/esm/cc/EntryControlCC.d.ts +8 -8
  302. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  303. package/build/esm/cc/EntryControlCC.js +2 -3
  304. package/build/esm/cc/EntryControlCC.js.map +1 -1
  305. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts +9 -10
  306. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
  307. package/build/esm/cc/FirmwareUpdateMetaDataCC.js +2 -3
  308. package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
  309. package/build/esm/cc/HailCC.js +1 -1
  310. package/build/esm/cc/HailCC.js.map +1 -1
  311. package/build/esm/cc/HumidityControlModeCC.d.ts +5 -5
  312. package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
  313. package/build/esm/cc/HumidityControlModeCC.js +2 -3
  314. package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
  315. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +3 -3
  316. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
  317. package/build/esm/cc/HumidityControlOperatingStateCC.js +2 -2
  318. package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
  319. package/build/esm/cc/HumidityControlSetpointCC.d.ts +6 -6
  320. package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
  321. package/build/esm/cc/HumidityControlSetpointCC.js +2 -3
  322. package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
  323. package/build/esm/cc/InclusionControllerCC.d.ts +2 -3
  324. package/build/esm/cc/InclusionControllerCC.d.ts.map +1 -1
  325. package/build/esm/cc/InclusionControllerCC.js.map +1 -1
  326. package/build/esm/cc/IndicatorCC.d.ts +3 -3
  327. package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
  328. package/build/esm/cc/IndicatorCC.js +2 -4
  329. package/build/esm/cc/IndicatorCC.js.map +1 -1
  330. package/build/esm/cc/IrrigationCC.d.ts +3 -3
  331. package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
  332. package/build/esm/cc/IrrigationCC.js +2 -3
  333. package/build/esm/cc/IrrigationCC.js.map +1 -1
  334. package/build/esm/cc/LanguageCC.d.ts +5 -6
  335. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  336. package/build/esm/cc/LanguageCC.js +2 -3
  337. package/build/esm/cc/LanguageCC.js.map +1 -1
  338. package/build/esm/cc/LockCC.d.ts +4 -4
  339. package/build/esm/cc/LockCC.d.ts.map +1 -1
  340. package/build/esm/cc/LockCC.js +2 -2
  341. package/build/esm/cc/LockCC.js.map +1 -1
  342. package/build/esm/cc/ManufacturerProprietaryCC.d.ts +3 -3
  343. package/build/esm/cc/ManufacturerProprietaryCC.d.ts.map +1 -1
  344. package/build/esm/cc/ManufacturerProprietaryCC.js +2 -2
  345. package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
  346. package/build/esm/cc/ManufacturerSpecificCC.d.ts +7 -8
  347. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  348. package/build/esm/cc/ManufacturerSpecificCC.js +2 -3
  349. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  350. package/build/esm/cc/MeterCC.d.ts +4 -6
  351. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  352. package/build/esm/cc/MeterCC.js +2 -4
  353. package/build/esm/cc/MeterCC.js.map +1 -1
  354. package/build/esm/cc/MultiChannelAssociationCC.d.ts +7 -8
  355. package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
  356. package/build/esm/cc/MultiChannelAssociationCC.js +2 -3
  357. package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
  358. package/build/esm/cc/MultiChannelCC.d.ts +11 -11
  359. package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
  360. package/build/esm/cc/MultiChannelCC.js +2 -2
  361. package/build/esm/cc/MultiChannelCC.js.map +1 -1
  362. package/build/esm/cc/MultiCommandCC.d.ts +3 -3
  363. package/build/esm/cc/MultiCommandCC.d.ts.map +1 -1
  364. package/build/esm/cc/MultiCommandCC.js +2 -2
  365. package/build/esm/cc/MultiCommandCC.js.map +1 -1
  366. package/build/esm/cc/MultilevelSensorCC.d.ts +4 -7
  367. package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
  368. package/build/esm/cc/MultilevelSensorCC.js +2 -4
  369. package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
  370. package/build/esm/cc/MultilevelSwitchCC._validateArgs.js +1 -1
  371. package/build/esm/cc/MultilevelSwitchCC._validateArgs.js.map +1 -1
  372. package/build/esm/cc/MultilevelSwitchCC.d.ts +13 -13
  373. package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
  374. package/build/esm/cc/MultilevelSwitchCC.js +2 -3
  375. package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
  376. package/build/esm/cc/NoOperationCC.js +1 -1
  377. package/build/esm/cc/NoOperationCC.js.map +1 -1
  378. package/build/esm/cc/NodeNamingCC.d.ts +5 -5
  379. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  380. package/build/esm/cc/NodeNamingCC.js +2 -2
  381. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  382. package/build/esm/cc/NotificationCC.d.ts +4 -5
  383. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  384. package/build/esm/cc/NotificationCC.js +2 -4
  385. package/build/esm/cc/NotificationCC.js.map +1 -1
  386. package/build/esm/cc/PowerlevelCC.d.ts +3 -3
  387. package/build/esm/cc/PowerlevelCC.d.ts.map +1 -1
  388. package/build/esm/cc/PowerlevelCC.js +2 -3
  389. package/build/esm/cc/PowerlevelCC.js.map +1 -1
  390. package/build/esm/cc/ProtectionCC._validateArgs.js +1 -1
  391. package/build/esm/cc/ProtectionCC._validateArgs.js.map +1 -1
  392. package/build/esm/cc/ProtectionCC.d.ts +11 -11
  393. package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
  394. package/build/esm/cc/ProtectionCC.js +2 -3
  395. package/build/esm/cc/ProtectionCC.js.map +1 -1
  396. package/build/esm/cc/SceneActivationCC._validateArgs.js +1 -1
  397. package/build/esm/cc/SceneActivationCC._validateArgs.js.map +1 -1
  398. package/build/esm/cc/SceneActivationCC.d.ts +5 -6
  399. package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
  400. package/build/esm/cc/SceneActivationCC.js +2 -2
  401. package/build/esm/cc/SceneActivationCC.js.map +1 -1
  402. package/build/esm/cc/SceneActuatorConfigurationCC._validateArgs.js +1 -1
  403. package/build/esm/cc/SceneActuatorConfigurationCC._validateArgs.js.map +1 -1
  404. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +5 -5
  405. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
  406. package/build/esm/cc/SceneActuatorConfigurationCC.js +2 -3
  407. package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
  408. package/build/esm/cc/SceneControllerConfigurationCC._validateArgs.js +1 -1
  409. package/build/esm/cc/SceneControllerConfigurationCC._validateArgs.js.map +1 -1
  410. package/build/esm/cc/SceneControllerConfigurationCC.d.ts +6 -6
  411. package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
  412. package/build/esm/cc/SceneControllerConfigurationCC.js +2 -3
  413. package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
  414. package/build/esm/cc/ScheduleEntryLockCC.d.ts +2 -3
  415. package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
  416. package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
  417. package/build/esm/cc/Security2CC.d.ts +3 -4
  418. package/build/esm/cc/Security2CC.d.ts.map +1 -1
  419. package/build/esm/cc/Security2CC.js +2 -4
  420. package/build/esm/cc/Security2CC.js.map +1 -1
  421. package/build/esm/cc/SecurityCC.d.ts +3 -4
  422. package/build/esm/cc/SecurityCC.d.ts.map +1 -1
  423. package/build/esm/cc/SecurityCC.js +1 -2
  424. package/build/esm/cc/SecurityCC.js.map +1 -1
  425. package/build/esm/cc/SoundSwitchCC.d.ts +7 -7
  426. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  427. package/build/esm/cc/SoundSwitchCC.js +2 -3
  428. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  429. package/build/esm/cc/SupervisionCC.d.ts +4 -4
  430. package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
  431. package/build/esm/cc/SupervisionCC.js +2 -3
  432. package/build/esm/cc/SupervisionCC.js.map +1 -1
  433. package/build/esm/cc/ThermostatFanModeCC.d.ts +6 -6
  434. package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
  435. package/build/esm/cc/ThermostatFanModeCC.js +2 -3
  436. package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
  437. package/build/esm/cc/ThermostatFanStateCC.d.ts +3 -3
  438. package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
  439. package/build/esm/cc/ThermostatFanStateCC.js +2 -2
  440. package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
  441. package/build/esm/cc/ThermostatModeCC.d.ts +6 -6
  442. package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
  443. package/build/esm/cc/ThermostatModeCC.js +2 -3
  444. package/build/esm/cc/ThermostatModeCC.js.map +1 -1
  445. package/build/esm/cc/ThermostatOperatingStateCC.d.ts +3 -4
  446. package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
  447. package/build/esm/cc/ThermostatOperatingStateCC.js +2 -2
  448. package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
  449. package/build/esm/cc/ThermostatSetbackCC.d.ts +3 -3
  450. package/build/esm/cc/ThermostatSetbackCC.d.ts.map +1 -1
  451. package/build/esm/cc/ThermostatSetbackCC.js +2 -3
  452. package/build/esm/cc/ThermostatSetbackCC.js.map +1 -1
  453. package/build/esm/cc/ThermostatSetpointCC.d.ts +6 -6
  454. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  455. package/build/esm/cc/ThermostatSetpointCC.js +2 -3
  456. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  457. package/build/esm/cc/TimeCC.d.ts +3 -4
  458. package/build/esm/cc/TimeCC.d.ts.map +1 -1
  459. package/build/esm/cc/TimeCC.js +1 -2
  460. package/build/esm/cc/TimeCC.js.map +1 -1
  461. package/build/esm/cc/TimeParametersCC.d.ts +3 -4
  462. package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
  463. package/build/esm/cc/TimeParametersCC.js +1 -1
  464. package/build/esm/cc/TimeParametersCC.js.map +1 -1
  465. package/build/esm/cc/TransportServiceCC.d.ts +3 -3
  466. package/build/esm/cc/TransportServiceCC.d.ts.map +1 -1
  467. package/build/esm/cc/TransportServiceCC.js +2 -3
  468. package/build/esm/cc/TransportServiceCC.js.map +1 -1
  469. package/build/esm/cc/UserCodeCC.d.ts +19 -19
  470. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  471. package/build/esm/cc/UserCodeCC.js +2 -3
  472. package/build/esm/cc/UserCodeCC.js.map +1 -1
  473. package/build/esm/cc/VersionCC.d.ts +17 -17
  474. package/build/esm/cc/VersionCC.d.ts.map +1 -1
  475. package/build/esm/cc/VersionCC.js +2 -3
  476. package/build/esm/cc/VersionCC.js.map +1 -1
  477. package/build/esm/cc/WakeUpCC.d.ts +6 -6
  478. package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
  479. package/build/esm/cc/WakeUpCC.js +2 -3
  480. package/build/esm/cc/WakeUpCC.js.map +1 -1
  481. package/build/esm/cc/WindowCoveringCC.d.ts +3 -4
  482. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  483. package/build/esm/cc/WindowCoveringCC.js +1 -2
  484. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  485. package/build/esm/cc/ZWavePlusCC.d.ts +8 -8
  486. package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
  487. package/build/esm/cc/ZWavePlusCC.js +2 -3
  488. package/build/esm/cc/ZWavePlusCC.js.map +1 -1
  489. package/build/esm/cc/ZWaveProtocolCC.d.ts +2 -2
  490. package/build/esm/cc/ZWaveProtocolCC.d.ts.map +1 -1
  491. package/build/esm/cc/ZWaveProtocolCC.js +1 -1
  492. package/build/esm/cc/ZWaveProtocolCC.js.map +1 -1
  493. package/build/esm/cc/_CCValues.generated.d.ts.map +1 -1
  494. package/build/esm/cc/_CCValues.generated.js +2 -4
  495. package/build/esm/cc/_CCValues.generated.js.map +1 -1
  496. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts +3 -3
  497. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -1
  498. package/build/esm/cc/manufacturerProprietary/FibaroCC.js +1 -1
  499. package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
  500. package/build/esm/lib/API.d.ts +3 -3
  501. package/build/esm/lib/API.d.ts.map +1 -1
  502. package/build/esm/lib/API.js.map +1 -1
  503. package/build/esm/lib/CommandClass.d.ts +5 -6
  504. package/build/esm/lib/CommandClass.d.ts.map +1 -1
  505. package/build/esm/lib/CommandClass.js +2 -2
  506. package/build/esm/lib/CommandClass.js.map +1 -1
  507. package/build/esm/lib/CommandClassDecorators.d.ts +2 -2
  508. package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
  509. package/build/esm/lib/CommandClassDecorators.js +1 -1
  510. package/build/esm/lib/CommandClassDecorators.js.map +1 -1
  511. package/build/esm/lib/Security2/Extension.d.ts +2 -2
  512. package/build/esm/lib/Security2/Extension.d.ts.map +1 -1
  513. package/build/esm/lib/Security2/Extension.js +2 -2
  514. package/build/esm/lib/Security2/Extension.js.map +1 -1
  515. package/build/esm/lib/SetValueResult.d.ts +1 -1
  516. package/build/esm/lib/SetValueResult.d.ts.map +1 -1
  517. package/build/esm/lib/Values.d.ts +3 -3
  518. package/build/esm/lib/Values.d.ts.map +1 -1
  519. package/build/esm/lib/Values.js +1 -1
  520. package/build/esm/lib/Values.js.map +1 -1
  521. package/build/esm/lib/_Types.d.ts +2 -2
  522. package/build/esm/lib/_Types.d.ts.map +1 -1
  523. package/build/esm/lib/_Types.js +1 -1
  524. package/build/esm/lib/_Types.js.map +1 -1
  525. package/build/esm/lib/serializers.d.ts +1 -1
  526. package/build/esm/lib/serializers.d.ts.map +1 -1
  527. package/build/esm/lib/serializers.js +1 -1
  528. package/build/esm/lib/serializers.js.map +1 -1
  529. package/build/esm/lib/traits.d.ts +2 -2
  530. package/build/esm/lib/traits.d.ts.map +1 -1
  531. package/build/esm/lib/utils.d.ts +2 -2
  532. package/build/esm/lib/utils.d.ts.map +1 -1
  533. package/build/esm/lib/utils.js +2 -2
  534. package/build/esm/lib/utils.js.map +1 -1
  535. package/package.json +6 -6
@@ -45,9 +45,8 @@ __export(SoundSwitchCC_exports, {
45
45
  });
46
46
  module.exports = __toCommonJS(SoundSwitchCC_exports);
47
47
  var __validateArgs = __toESM(require("./SoundSwitchCC._validateArgs.js"), 1);
48
- var import_safe = require("@zwave-js/core/safe");
49
- var import_safe2 = require("@zwave-js/shared/safe");
50
- var import_safe3 = require("@zwave-js/shared/safe");
48
+ var import_core = require("@zwave-js/core");
49
+ var import_shared = require("@zwave-js/shared");
51
50
  var import_math = require("alcalzone-shared/math");
52
51
  var import_API = require("../lib/API.js");
53
52
  var import_CommandClass = require("../lib/CommandClass.js");
@@ -97,7 +96,7 @@ var __esDecorate = function(ctor, descriptorIn, decorators, contextIn, initializ
97
96
  };
98
97
  const { validateArgs_SoundSwitchCCAPI_getToneInfo, validateArgs_SoundSwitchCCAPI_setConfiguration, validateArgs_SoundSwitchCCAPI_play } = __validateArgs;
99
98
  let SoundSwitchCCAPI = (() => {
100
- let _classDecorators = [(0, import_CommandClassDecorators.API)(import_safe.CommandClasses["Sound Switch"])];
99
+ let _classDecorators = [(0, import_CommandClassDecorators.API)(import_core.CommandClasses["Sound Switch"])];
101
100
  let _classDescriptor;
102
101
  let _classExtraInitializers = [];
103
102
  let _classThis;
@@ -154,7 +153,7 @@ let SoundSwitchCCAPI = (() => {
154
153
  });
155
154
  const response = await this.host.sendCommand(cc, this.commandOptions);
156
155
  if (response)
157
- return (0, import_safe3.pick)(response, ["duration", "name"]);
156
+ return (0, import_shared.pick)(response, ["duration", "name"]);
158
157
  }
159
158
  async setConfiguration(defaultToneId, defaultVolume) {
160
159
  this.assertSupportsCommand(import_Types.SoundSwitchCommand, import_Types.SoundSwitchCommand.ConfigurationSet);
@@ -175,13 +174,13 @@ let SoundSwitchCCAPI = (() => {
175
174
  });
176
175
  const response = await this.host.sendCommand(cc, this.commandOptions);
177
176
  if (response) {
178
- return (0, import_safe3.pick)(response, ["defaultToneId", "defaultVolume"]);
177
+ return (0, import_shared.pick)(response, ["defaultToneId", "defaultVolume"]);
179
178
  }
180
179
  }
181
180
  async play(toneId, volume) {
182
181
  this.assertSupportsCommand(import_Types.SoundSwitchCommand, import_Types.SoundSwitchCommand.TonePlaySet);
183
182
  if (toneId === 0) {
184
- throw new import_safe.ZWaveError(`Tone ID must be > 0. Use stopPlaying to stop the tone.`, import_safe.ZWaveErrorCodes.Argument_Invalid);
183
+ throw new import_core.ZWaveError(`Tone ID must be > 0. Use stopPlaying to stop the tone.`, import_core.ZWaveErrorCodes.Argument_Invalid);
185
184
  }
186
185
  const cc = new SoundSwitchCCTonePlaySet({
187
186
  nodeId: this.endpoint.nodeId,
@@ -210,7 +209,7 @@ let SoundSwitchCCAPI = (() => {
210
209
  });
211
210
  const response = await this.host.sendCommand(cc, this.commandOptions);
212
211
  if (response) {
213
- return (0, import_safe3.pick)(response, ["toneId", "volume"]);
212
+ return (0, import_shared.pick)(response, ["toneId", "volume"]);
214
213
  }
215
214
  }
216
215
  get [(_getToneInfo_decorators = [validateArgs_SoundSwitchCCAPI_getToneInfo()], _setConfiguration_decorators = [validateArgs_SoundSwitchCCAPI_setConfiguration()], _play_decorators = [validateArgs_SoundSwitchCCAPI_play()], import_API.SET_VALUE)]() {
@@ -245,7 +244,7 @@ let SoundSwitchCCAPI = (() => {
245
244
  } else {
246
245
  result = await this.stopPlaying();
247
246
  }
248
- if (this.isSinglecast() && !(0, import_safe.supervisedCommandSucceeded)(result)) {
247
+ if (this.isSinglecast() && !(0, import_core.supervisedCommandSucceeded)(result)) {
249
248
  this.schedulePoll({ property }, value, {
250
249
  transition: "fast"
251
250
  });
@@ -278,7 +277,7 @@ let SoundSwitchCCAPI = (() => {
278
277
  return SoundSwitchCCAPI2 = _classThis;
279
278
  })();
280
279
  let SoundSwitchCC = (() => {
281
- let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_safe.CommandClasses["Sound Switch"]), (0, import_CommandClassDecorators.implementedVersion)(2), (0, import_CommandClassDecorators.ccValues)(import_CCValues_generated.SoundSwitchCCValues)];
280
+ let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_core.CommandClasses["Sound Switch"]), (0, import_CommandClassDecorators.implementedVersion)(2), (0, import_CommandClassDecorators.ccValues)(import_CCValues_generated.SoundSwitchCCValues)];
282
281
  let _classDescriptor;
283
282
  let _classExtraInitializers = [];
284
283
  let _classThis;
@@ -300,8 +299,8 @@ let SoundSwitchCC = (() => {
300
299
  async interview(ctx) {
301
300
  const node = this.getNode(ctx);
302
301
  const endpoint = this.getEndpoint(ctx);
303
- const api = import_API.CCAPI.create(import_safe.CommandClasses["Sound Switch"], ctx, endpoint).withOptions({
304
- priority: import_safe.MessagePriority.NodeQuery
302
+ const api = import_API.CCAPI.create(import_core.CommandClasses["Sound Switch"], ctx, endpoint).withOptions({
303
+ priority: import_core.MessagePriority.NodeQuery
305
304
  });
306
305
  ctx.logNode(node.id, {
307
306
  endpoint: this.endpointIndex,
@@ -405,7 +404,7 @@ let SoundSwitchCCTonesNumberReport = (() => {
405
404
  this.toneCount = options.toneCount;
406
405
  }
407
406
  static from(raw, ctx) {
408
- (0, import_safe.validatePayload)(raw.payload.length >= 1);
407
+ (0, import_core.validatePayload)(raw.payload.length >= 1);
409
408
  const toneCount = raw.payload[0];
410
409
  return new this({
411
410
  nodeId: ctx.sourceNodeId,
@@ -414,7 +413,7 @@ let SoundSwitchCCTonesNumberReport = (() => {
414
413
  }
415
414
  toneCount;
416
415
  serialize(ctx) {
417
- this.payload = import_safe2.Bytes.from([this.toneCount]);
416
+ this.payload = import_shared.Bytes.from([this.toneCount]);
418
417
  return super.serialize(ctx);
419
418
  }
420
419
  toLogEntry(ctx) {
@@ -476,11 +475,11 @@ let SoundSwitchCCToneInfoReport = (() => {
476
475
  this.name = options.name;
477
476
  }
478
477
  static from(raw, ctx) {
479
- (0, import_safe.validatePayload)(raw.payload.length >= 4);
478
+ (0, import_core.validatePayload)(raw.payload.length >= 4);
480
479
  const toneId = raw.payload[0];
481
480
  const duration = raw.payload.readUInt16BE(1);
482
481
  const nameLength = raw.payload[3];
483
- (0, import_safe.validatePayload)(raw.payload.length >= 4 + nameLength);
482
+ (0, import_core.validatePayload)(raw.payload.length >= 4 + nameLength);
484
483
  const name = raw.payload.subarray(4, 4 + nameLength).toString("utf8");
485
484
  return new this({
486
485
  nodeId: ctx.sourceNodeId,
@@ -493,9 +492,9 @@ let SoundSwitchCCToneInfoReport = (() => {
493
492
  duration;
494
493
  name;
495
494
  serialize(ctx) {
496
- this.payload = import_safe2.Bytes.concat([
497
- import_safe2.Bytes.from([this.toneId, 0, 0, this.name.length]),
498
- import_safe2.Bytes.from(this.name, "utf8")
495
+ this.payload = import_shared.Bytes.concat([
496
+ import_shared.Bytes.from([this.toneId, 0, 0, this.name.length]),
497
+ import_shared.Bytes.from(this.name, "utf8")
499
498
  ]);
500
499
  this.payload.writeUInt16BE(this.duration, 1);
501
500
  return super.serialize(ctx);
@@ -541,7 +540,7 @@ let SoundSwitchCCToneInfoGet = (() => {
541
540
  this.toneId = options.toneId;
542
541
  }
543
542
  static from(raw, ctx) {
544
- (0, import_safe.validatePayload)(raw.payload.length >= 1);
543
+ (0, import_core.validatePayload)(raw.payload.length >= 1);
545
544
  const toneId = raw.payload[0];
546
545
  return new this({
547
546
  nodeId: ctx.sourceNodeId,
@@ -550,7 +549,7 @@ let SoundSwitchCCToneInfoGet = (() => {
550
549
  }
551
550
  toneId;
552
551
  serialize(ctx) {
553
- this.payload = import_safe2.Bytes.from([this.toneId]);
552
+ this.payload = import_shared.Bytes.from([this.toneId]);
554
553
  return super.serialize(ctx);
555
554
  }
556
555
  toLogEntry(ctx) {
@@ -588,7 +587,7 @@ let SoundSwitchCCConfigurationSet = (() => {
588
587
  this.defaultToneId = options.defaultToneId;
589
588
  }
590
589
  static from(raw, ctx) {
591
- (0, import_safe.validatePayload)(raw.payload.length >= 2);
590
+ (0, import_core.validatePayload)(raw.payload.length >= 2);
592
591
  const defaultVolume = raw.payload[0];
593
592
  const defaultToneId = raw.payload[1];
594
593
  return new this({
@@ -600,7 +599,7 @@ let SoundSwitchCCConfigurationSet = (() => {
600
599
  defaultVolume;
601
600
  defaultToneId;
602
601
  serialize(ctx) {
603
- this.payload = import_safe2.Bytes.from([this.defaultVolume, this.defaultToneId]);
602
+ this.payload = import_shared.Bytes.from([this.defaultVolume, this.defaultToneId]);
604
603
  return super.serialize(ctx);
605
604
  }
606
605
  toLogEntry(ctx) {
@@ -641,7 +640,7 @@ let SoundSwitchCCConfigurationReport = (() => {
641
640
  this.defaultToneId = options.defaultToneId;
642
641
  }
643
642
  static from(raw, ctx) {
644
- (0, import_safe.validatePayload)(raw.payload.length >= 2);
643
+ (0, import_core.validatePayload)(raw.payload.length >= 2);
645
644
  const defaultVolume = (0, import_math.clamp)(raw.payload[0], 0, 100);
646
645
  const defaultToneId = raw.payload[1];
647
646
  return new this({
@@ -653,7 +652,7 @@ let SoundSwitchCCConfigurationReport = (() => {
653
652
  defaultVolume;
654
653
  defaultToneId;
655
654
  serialize(ctx) {
656
- this.payload = import_safe2.Bytes.from([this.defaultVolume, this.defaultToneId]);
655
+ this.payload = import_shared.Bytes.from([this.defaultVolume, this.defaultToneId]);
657
656
  return super.serialize(ctx);
658
657
  }
659
658
  toLogEntry(ctx) {
@@ -717,7 +716,7 @@ let SoundSwitchCCTonePlaySet = (() => {
717
716
  this.volume = options.volume;
718
717
  }
719
718
  static from(raw, ctx) {
720
- (0, import_safe.validatePayload)(raw.payload.length >= 1);
719
+ (0, import_core.validatePayload)(raw.payload.length >= 1);
721
720
  const toneId = raw.payload[0];
722
721
  let volume;
723
722
  if (toneId !== 0 && raw.payload.length >= 2) {
@@ -732,7 +731,7 @@ let SoundSwitchCCTonePlaySet = (() => {
732
731
  toneId;
733
732
  volume;
734
733
  serialize(ctx) {
735
- this.payload = import_safe2.Bytes.from([this.toneId, this.volume ?? 0]);
734
+ this.payload = import_shared.Bytes.from([this.toneId, this.volume ?? 0]);
736
735
  return super.serialize(ctx);
737
736
  }
738
737
  toLogEntry(ctx) {
@@ -776,7 +775,7 @@ let SoundSwitchCCTonePlayReport = (() => {
776
775
  this.volume = options.volume;
777
776
  }
778
777
  static from(raw, ctx) {
779
- (0, import_safe.validatePayload)(raw.payload.length >= 1);
778
+ (0, import_core.validatePayload)(raw.payload.length >= 1);
780
779
  const toneId = raw.payload[0];
781
780
  let volume;
782
781
  if (toneId !== 0 && raw.payload.length >= 2) {
@@ -791,7 +790,7 @@ let SoundSwitchCCTonePlayReport = (() => {
791
790
  toneId;
792
791
  volume;
793
792
  serialize(ctx) {
794
- this.payload = import_safe2.Bytes.from([this.toneId, this.volume ?? 0]);
793
+ this.payload = import_shared.Bytes.from([this.toneId, this.volume ?? 0]);
795
794
  return super.serialize(ctx);
796
795
  }
797
796
  toLogEntry(ctx) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cc/SoundSwitchCC.ts"],
4
- "sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport {\n\tCommandClasses,\n\ttype GetValueDB,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tsupervisedCommandSucceeded,\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 { clamp } from \"alcalzone-shared/math\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowUnsupportedProperty,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\ttype CCResponsePredicate,\n\tCommandClass,\n\ttype InterviewContext,\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 { SoundSwitchCommand, type ToneId } from \"../lib/_Types.js\";\n\nexport const SoundSwitchCCValues = V.defineCCValues(\n\tCommandClasses[\"Sound Switch\"],\n\t{\n\t\t...V.staticProperty(\n\t\t\t\"volume\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 100,\n\t\t\t\tunit: \"%\",\n\t\t\t\tlabel: \"Volume\",\n\t\t\t\tallowManualEntry: true,\n\t\t\t\tstates: {\n\t\t\t\t\t0: \"default\",\n\t\t\t\t},\n\t\t\t} as const,\n\t\t),\n\t\t...V.staticProperty(\n\t\t\t\"toneId\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tlabel: \"Play Tone\",\n\t\t\t\tvalueChangeOptions: [\"volume\"],\n\t\t\t} as const,\n\t\t),\n\t\t...V.staticProperty(\n\t\t\t\"defaultVolume\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Number,\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 100,\n\t\t\t\tunit: \"%\",\n\t\t\t\tlabel: \"Default volume\",\n\t\t\t} as const,\n\t\t),\n\t\t...V.staticProperty(\n\t\t\t\"defaultToneId\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Number,\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 254,\n\t\t\t\tlabel: \"Default tone ID\",\n\t\t\t} as const,\n\t\t),\n\t},\n);\n\n@API(CommandClasses[\"Sound Switch\"])\nexport class SoundSwitchCCAPI extends CCAPI {\n\tpublic supportsCommand(cmd: SoundSwitchCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase SoundSwitchCommand.TonesNumberGet:\n\t\t\tcase SoundSwitchCommand.ToneInfoGet:\n\t\t\tcase SoundSwitchCommand.ConfigurationGet:\n\t\t\tcase SoundSwitchCommand.TonePlayGet:\n\t\t\t\treturn this.isSinglecast();\n\t\t\tcase SoundSwitchCommand.ConfigurationSet:\n\t\t\tcase SoundSwitchCommand.TonePlaySet:\n\t\t\t\treturn true; // This is mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tpublic async getToneCount(): Promise<MaybeNotKnown<number>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.TonesNumberGet,\n\t\t);\n\n\t\tconst cc = new SoundSwitchCCTonesNumberGet({\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\tSoundSwitchCCTonesNumberReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.toneCount;\n\t}\n\n\t@validateArgs()\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getToneInfo(toneId: number) {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.ToneInfoGet,\n\t\t);\n\n\t\tconst cc = new SoundSwitchCCToneInfoGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttoneId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tSoundSwitchCCToneInfoReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) return pick(response, [\"duration\", \"name\"]);\n\t}\n\n\t@validateArgs()\n\tpublic async setConfiguration(\n\t\tdefaultToneId: number,\n\t\tdefaultVolume: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.ConfigurationSet,\n\t\t);\n\n\t\tconst cc = new SoundSwitchCCConfigurationSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tdefaultToneId,\n\t\t\tdefaultVolume,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getConfiguration() {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.ConfigurationGet,\n\t\t);\n\n\t\tconst cc = new SoundSwitchCCConfigurationGet({\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\tSoundSwitchCCConfigurationReport\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, [\"defaultToneId\", \"defaultVolume\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async play(\n\t\ttoneId: number,\n\t\tvolume?: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.TonePlaySet,\n\t\t);\n\n\t\tif (toneId === 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`Tone ID must be > 0. Use stopPlaying to stop the tone.`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new SoundSwitchCCTonePlaySet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttoneId,\n\t\t\tvolume,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tpublic async stopPlaying(): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.TonePlaySet,\n\t\t);\n\n\t\tconst cc = new SoundSwitchCCTonePlaySet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttoneId: 0x00,\n\t\t\tvolume: 0x00,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getPlaying() {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.TonePlayGet,\n\t\t);\n\n\t\tconst cc = new SoundSwitchCCTonePlayGet({\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\tSoundSwitchCCTonePlayReport\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, [\"toneId\", \"volume\"]);\n\t\t}\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: SoundSwitchCCAPI,\n\t\t\t{ property },\n\t\t\tvalue,\n\t\t\toptions,\n\t\t) {\n\t\t\tif (property === \"defaultToneId\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this.setConfiguration(\n\t\t\t\t\tvalue,\n\t\t\t\t\t0xff, /* keep current volume */\n\t\t\t\t);\n\t\t\t} else if (property === \"defaultVolume\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this.setConfiguration(\n\t\t\t\t\t0x00, /* keep current tone */\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\t} else if (property === \"volume\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// Allow playing a tone by first setting the volume, then the tone ID\n\t\t\t\tthis.tryGetValueDB()?.setValue(\n\t\t\t\t\tSoundSwitchCCValues.volume.endpoint(\n\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t),\n\t\t\t\t\tvalue,\n\t\t\t\t\t{ source: \"driver\", updateTimestamp: false },\n\t\t\t\t);\n\t\t\t} else if (property === \"toneId\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tlet result: SupervisionResult | undefined;\n\t\t\t\tif (value > 0) {\n\t\t\t\t\t// Use provided volume or try to use the current volume if it exists\n\t\t\t\t\tconst volume = options?.volume !== undefined\n\t\t\t\t\t\t? options.volume\n\t\t\t\t\t\t: this.tryGetValueDB()?.getValue<number>(\n\t\t\t\t\t\t\tSoundSwitchCCValues.volume.endpoint(\n\t\t\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\tresult = await this.play(value, volume);\n\t\t\t\t} else {\n\t\t\t\t\tresult = await this.stopPlaying();\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tthis.isSinglecast()\n\t\t\t\t\t&& !supervisedCommandSucceeded(result)\n\t\t\t\t) {\n\t\t\t\t\t// Verify the current value after a (short) delay, unless the command was supervised and successful\n\t\t\t\t\tthis.schedulePoll({ property }, value, {\n\t\t\t\t\t\ttransition: \"fast\",\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(this: SoundSwitchCCAPI, { property }) {\n\t\t\tswitch (property) {\n\t\t\t\tcase \"defaultToneId\":\n\t\t\t\tcase \"defaultVolume\":\n\t\t\t\t\treturn (await this.getConfiguration())?.[property];\n\n\t\t\t\tcase \"toneId\":\n\t\t\t\tcase \"volume\":\n\t\t\t\t\treturn (await this.getPlaying())?.[property];\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n}\n\n@commandClass(CommandClasses[\"Sound Switch\"])\n@implementedVersion(2)\n@ccValues(SoundSwitchCCValues)\nexport class SoundSwitchCC extends CommandClass {\n\tdeclare ccCommand: SoundSwitchCommand;\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 api = CCAPI.create(\n\t\t\tCommandClasses[\"Sound Switch\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\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\tctx.logNode(node.id, {\n\t\t\tmessage: \"requesting tone count...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst toneCount = await api.getToneCount();\n\t\tif (toneCount != undefined) {\n\t\t\tconst logMessage = `supports ${toneCount} tones`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: logMessage,\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: \"Querying tone count timed out, skipping interview...\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tctx.logNode(node.id, {\n\t\t\tmessage: \"requesting current sound configuration...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst config = await api.getConfiguration();\n\t\tif (config) {\n\t\t\tconst logMessage = `received current sound configuration:\ndefault tone ID: ${config.defaultToneId}\ndefault volume: ${config.defaultVolume}`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\n\t\tconst metadataStates: Record<number, string> = {};\n\t\tfor (let toneId = 1; toneId <= toneCount; toneId++) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: `requesting info for tone #${toneId}`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst info = await api.getToneInfo(toneId);\n\t\t\tif (!info) continue;\n\t\t\tconst logMessage = `received info for tone #${toneId}:\nname: ${info.name}\nduration: ${info.duration} seconds`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t\tmetadataStates[toneId] = `${info.name} (${info.duration} sec)`;\n\t\t}\n\n\t\t// Remember tone count and info on the default tone ID metadata\n\t\tthis.setMetadata(ctx, SoundSwitchCCValues.defaultToneId, {\n\t\t\t...SoundSwitchCCValues.defaultToneId.meta,\n\t\t\tmin: 1,\n\t\t\tmax: toneCount,\n\t\t\tstates: metadataStates,\n\t\t});\n\n\t\t// Remember tone count and info on the tone ID metadata\n\t\tthis.setMetadata(ctx, SoundSwitchCCValues.toneId, {\n\t\t\t...SoundSwitchCCValues.toneId.meta,\n\t\t\tmin: 0,\n\t\t\tmax: toneCount,\n\t\t\tstates: {\n\t\t\t\t0: \"off\",\n\t\t\t\t...metadataStates,\n\t\t\t\t[0xff]: \"default\",\n\t\t\t},\n\t\t});\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n}\n\n// @publicAPI\nexport interface SoundSwitchCCTonesNumberReportOptions {\n\ttoneCount: number;\n}\n\n@CCCommand(SoundSwitchCommand.TonesNumberReport)\nexport class SoundSwitchCCTonesNumberReport extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCTonesNumberReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.toneCount = options.toneCount;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCTonesNumberReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst toneCount = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttoneCount,\n\t\t});\n\t}\n\n\tpublic toneCount: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.toneCount]);\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: { \"# of tones\": this.toneCount },\n\t\t};\n\t}\n}\n\n@CCCommand(SoundSwitchCommand.TonesNumberGet)\n@expectedCCResponse(SoundSwitchCCTonesNumberReport)\nexport class SoundSwitchCCTonesNumberGet extends SoundSwitchCC {}\n\n// @publicAPI\nexport interface SoundSwitchCCToneInfoReportOptions {\n\ttoneId: number;\n\tduration: number;\n\tname: string;\n}\n\n@CCCommand(SoundSwitchCommand.ToneInfoReport)\nexport class SoundSwitchCCToneInfoReport extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCToneInfoReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.toneId = options.toneId;\n\t\tthis.duration = options.duration;\n\t\tthis.name = options.name;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCToneInfoReport {\n\t\tvalidatePayload(raw.payload.length >= 4);\n\t\tconst toneId = raw.payload[0];\n\t\tconst duration = raw.payload.readUInt16BE(1);\n\t\tconst nameLength = raw.payload[3];\n\n\t\tvalidatePayload(raw.payload.length >= 4 + nameLength);\n\t\tconst name = raw.payload.subarray(4, 4 + nameLength).toString(\n\t\t\t\"utf8\",\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttoneId,\n\t\t\tduration,\n\t\t\tname,\n\t\t});\n\t}\n\n\tpublic readonly toneId: number;\n\tpublic readonly duration: number;\n\tpublic readonly name: string;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.toneId, 0, 0, this.name.length]),\n\t\t\tBytes.from(this.name, \"utf8\"),\n\t\t]);\n\t\tthis.payload.writeUInt16BE(this.duration, 1);\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\"tone id\": this.toneId,\n\t\t\t\tduration: `${this.duration} seconds`,\n\t\t\t\tname: this.name,\n\t\t\t},\n\t\t};\n\t}\n}\n\nconst testResponseForSoundSwitchToneInfoGet: CCResponsePredicate<\n\tSoundSwitchCCToneInfoGet,\n\tSoundSwitchCCToneInfoReport\n> = (sent, received) => {\n\treturn received.toneId === sent.toneId;\n};\n\n// @publicAPI\nexport interface SoundSwitchCCToneInfoGetOptions {\n\ttoneId: number;\n}\n\n@CCCommand(SoundSwitchCommand.ToneInfoGet)\n@expectedCCResponse(\n\tSoundSwitchCCToneInfoReport,\n\ttestResponseForSoundSwitchToneInfoGet,\n)\nexport class SoundSwitchCCToneInfoGet extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCToneInfoGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.toneId = options.toneId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCToneInfoGet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst toneId = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttoneId,\n\t\t});\n\t}\n\n\tpublic toneId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.toneId]);\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: { \"tone id\": this.toneId },\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface SoundSwitchCCConfigurationSetOptions {\n\tdefaultVolume: number;\n\tdefaultToneId: number;\n}\n\n@CCCommand(SoundSwitchCommand.ConfigurationSet)\n@useSupervision()\nexport class SoundSwitchCCConfigurationSet extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCConfigurationSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.defaultVolume = options.defaultVolume;\n\t\tthis.defaultToneId = options.defaultToneId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCConfigurationSet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst defaultVolume = raw.payload[0];\n\t\tconst defaultToneId = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tdefaultVolume,\n\t\t\tdefaultToneId,\n\t\t});\n\t}\n\n\tpublic defaultVolume: number;\n\tpublic defaultToneId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.defaultVolume, this.defaultToneId]);\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\"default volume\": `${this.defaultVolume} %`,\n\t\t\t\t\"default tone id\": this.defaultToneId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface SoundSwitchCCConfigurationReportOptions {\n\tdefaultVolume: number;\n\tdefaultToneId: number;\n}\n\n@CCCommand(SoundSwitchCommand.ConfigurationReport)\n@ccValueProperty(\"defaultVolume\", SoundSwitchCCValues.defaultVolume)\n@ccValueProperty(\"defaultToneId\", SoundSwitchCCValues.defaultToneId)\nexport class SoundSwitchCCConfigurationReport extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCConfigurationReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.defaultVolume = options.defaultVolume;\n\t\tthis.defaultToneId = options.defaultToneId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCConfigurationReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst defaultVolume = clamp(raw.payload[0], 0, 100);\n\t\tconst defaultToneId = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tdefaultVolume,\n\t\t\tdefaultToneId,\n\t\t});\n\t}\n\n\tpublic defaultVolume: number;\n\n\tpublic defaultToneId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.defaultVolume, this.defaultToneId]);\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\"default volume\": `${this.defaultVolume} %`,\n\t\t\t\t\"default tone id\": this.defaultToneId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(SoundSwitchCommand.ConfigurationGet)\n@expectedCCResponse(SoundSwitchCCConfigurationReport)\nexport class SoundSwitchCCConfigurationGet extends SoundSwitchCC {}\n\n// @publicAPI\nexport interface SoundSwitchCCTonePlaySetOptions {\n\ttoneId: ToneId | number;\n\t// V2+\n\tvolume?: number;\n}\n\n@CCCommand(SoundSwitchCommand.TonePlaySet)\n@useSupervision()\nexport class SoundSwitchCCTonePlaySet extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCTonePlaySetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.toneId = options.toneId;\n\t\tthis.volume = options.volume;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCTonePlaySet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst toneId = raw.payload[0];\n\t\tlet volume: number | undefined;\n\t\tif (toneId !== 0 && raw.payload.length >= 2) {\n\t\t\tvolume = raw.payload[1];\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttoneId,\n\t\t\tvolume,\n\t\t});\n\t}\n\n\tpublic toneId: ToneId | number;\n\tpublic volume?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.toneId, this.volume ?? 0]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"tone id\": this.toneId,\n\t\t};\n\t\tif (this.volume != undefined) {\n\t\t\tmessage.volume = this.volume === 0 ? \"default\" : `${this.volume} %`;\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 SoundSwitchCCTonePlayReportOptions {\n\ttoneId: ToneId | number;\n\t// V2+\n\tvolume?: number;\n}\n\n@CCCommand(SoundSwitchCommand.TonePlayReport)\n@ccValueProperty(\"toneId\", SoundSwitchCCValues.toneId)\n@ccValueProperty(\"volume\", SoundSwitchCCValues.volume)\nexport class SoundSwitchCCTonePlayReport extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCTonePlayReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.toneId = options.toneId;\n\t\tthis.volume = options.volume;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCTonePlayReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst toneId = raw.payload[0];\n\n\t\tlet volume: number | undefined;\n\t\tif (toneId !== 0 && raw.payload.length >= 2) {\n\t\t\tvolume = raw.payload[1];\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttoneId,\n\t\t\tvolume,\n\t\t});\n\t}\n\n\tpublic readonly toneId: ToneId | number;\n\n\tpublic volume?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.toneId, this.volume ?? 0]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"tone id\": this.toneId,\n\t\t};\n\t\tif (this.volume != undefined) {\n\t\t\tmessage.volume = this.volume === 0 ? \"default\" : `${this.volume} %`;\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@CCCommand(SoundSwitchCommand.TonePlayGet)\n@expectedCCResponse(SoundSwitchCCTonePlayReport)\nexport class SoundSwitchCCTonePlayGet extends SoundSwitchCC {}\n"],
5
- "mappings": "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",
6
- "names": ["import_safe"]
4
+ "sourcesContent": ["import type { CCEncodingContext, CCParsingContext } from \"@zwave-js/cc\";\nimport {\n\tCommandClasses,\n\ttype GetValueDB,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tsupervisedCommandSucceeded,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { Bytes, pick } from \"@zwave-js/shared\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { clamp } from \"alcalzone-shared/math\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowUnsupportedProperty,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\ttype CCResponsePredicate,\n\tCommandClass,\n\ttype InterviewContext,\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 { SoundSwitchCommand, type ToneId } from \"../lib/_Types.js\";\n\nexport const SoundSwitchCCValues = V.defineCCValues(\n\tCommandClasses[\"Sound Switch\"],\n\t{\n\t\t...V.staticProperty(\n\t\t\t\"volume\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 100,\n\t\t\t\tunit: \"%\",\n\t\t\t\tlabel: \"Volume\",\n\t\t\t\tallowManualEntry: true,\n\t\t\t\tstates: {\n\t\t\t\t\t0: \"default\",\n\t\t\t\t},\n\t\t\t} as const,\n\t\t),\n\t\t...V.staticProperty(\n\t\t\t\"toneId\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tlabel: \"Play Tone\",\n\t\t\t\tvalueChangeOptions: [\"volume\"],\n\t\t\t} as const,\n\t\t),\n\t\t...V.staticProperty(\n\t\t\t\"defaultVolume\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Number,\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 100,\n\t\t\t\tunit: \"%\",\n\t\t\t\tlabel: \"Default volume\",\n\t\t\t} as const,\n\t\t),\n\t\t...V.staticProperty(\n\t\t\t\"defaultToneId\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Number,\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 254,\n\t\t\t\tlabel: \"Default tone ID\",\n\t\t\t} as const,\n\t\t),\n\t},\n);\n\n@API(CommandClasses[\"Sound Switch\"])\nexport class SoundSwitchCCAPI extends CCAPI {\n\tpublic supportsCommand(cmd: SoundSwitchCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase SoundSwitchCommand.TonesNumberGet:\n\t\t\tcase SoundSwitchCommand.ToneInfoGet:\n\t\t\tcase SoundSwitchCommand.ConfigurationGet:\n\t\t\tcase SoundSwitchCommand.TonePlayGet:\n\t\t\t\treturn this.isSinglecast();\n\t\t\tcase SoundSwitchCommand.ConfigurationSet:\n\t\t\tcase SoundSwitchCommand.TonePlaySet:\n\t\t\t\treturn true; // This is mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tpublic async getToneCount(): Promise<MaybeNotKnown<number>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.TonesNumberGet,\n\t\t);\n\n\t\tconst cc = new SoundSwitchCCTonesNumberGet({\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\tSoundSwitchCCTonesNumberReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.toneCount;\n\t}\n\n\t@validateArgs()\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getToneInfo(toneId: number) {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.ToneInfoGet,\n\t\t);\n\n\t\tconst cc = new SoundSwitchCCToneInfoGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttoneId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tSoundSwitchCCToneInfoReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) return pick(response, [\"duration\", \"name\"]);\n\t}\n\n\t@validateArgs()\n\tpublic async setConfiguration(\n\t\tdefaultToneId: number,\n\t\tdefaultVolume: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.ConfigurationSet,\n\t\t);\n\n\t\tconst cc = new SoundSwitchCCConfigurationSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tdefaultToneId,\n\t\t\tdefaultVolume,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getConfiguration() {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.ConfigurationGet,\n\t\t);\n\n\t\tconst cc = new SoundSwitchCCConfigurationGet({\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\tSoundSwitchCCConfigurationReport\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, [\"defaultToneId\", \"defaultVolume\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async play(\n\t\ttoneId: number,\n\t\tvolume?: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.TonePlaySet,\n\t\t);\n\n\t\tif (toneId === 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`Tone ID must be > 0. Use stopPlaying to stop the tone.`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new SoundSwitchCCTonePlaySet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttoneId,\n\t\t\tvolume,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tpublic async stopPlaying(): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.TonePlaySet,\n\t\t);\n\n\t\tconst cc = new SoundSwitchCCTonePlaySet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttoneId: 0x00,\n\t\t\tvolume: 0x00,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getPlaying() {\n\t\tthis.assertSupportsCommand(\n\t\t\tSoundSwitchCommand,\n\t\t\tSoundSwitchCommand.TonePlayGet,\n\t\t);\n\n\t\tconst cc = new SoundSwitchCCTonePlayGet({\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\tSoundSwitchCCTonePlayReport\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, [\"toneId\", \"volume\"]);\n\t\t}\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: SoundSwitchCCAPI,\n\t\t\t{ property },\n\t\t\tvalue,\n\t\t\toptions,\n\t\t) {\n\t\t\tif (property === \"defaultToneId\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this.setConfiguration(\n\t\t\t\t\tvalue,\n\t\t\t\t\t0xff, /* keep current volume */\n\t\t\t\t);\n\t\t\t} else if (property === \"defaultVolume\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this.setConfiguration(\n\t\t\t\t\t0x00, /* keep current tone */\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\t} else if (property === \"volume\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// Allow playing a tone by first setting the volume, then the tone ID\n\t\t\t\tthis.tryGetValueDB()?.setValue(\n\t\t\t\t\tSoundSwitchCCValues.volume.endpoint(\n\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t),\n\t\t\t\t\tvalue,\n\t\t\t\t\t{ source: \"driver\", updateTimestamp: false },\n\t\t\t\t);\n\t\t\t} else if (property === \"toneId\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tlet result: SupervisionResult | undefined;\n\t\t\t\tif (value > 0) {\n\t\t\t\t\t// Use provided volume or try to use the current volume if it exists\n\t\t\t\t\tconst volume = options?.volume !== undefined\n\t\t\t\t\t\t? options.volume\n\t\t\t\t\t\t: this.tryGetValueDB()?.getValue<number>(\n\t\t\t\t\t\t\tSoundSwitchCCValues.volume.endpoint(\n\t\t\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\tresult = await this.play(value, volume);\n\t\t\t\t} else {\n\t\t\t\t\tresult = await this.stopPlaying();\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tthis.isSinglecast()\n\t\t\t\t\t&& !supervisedCommandSucceeded(result)\n\t\t\t\t) {\n\t\t\t\t\t// Verify the current value after a (short) delay, unless the command was supervised and successful\n\t\t\t\t\tthis.schedulePoll({ property }, value, {\n\t\t\t\t\t\ttransition: \"fast\",\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(this: SoundSwitchCCAPI, { property }) {\n\t\t\tswitch (property) {\n\t\t\t\tcase \"defaultToneId\":\n\t\t\t\tcase \"defaultVolume\":\n\t\t\t\t\treturn (await this.getConfiguration())?.[property];\n\n\t\t\t\tcase \"toneId\":\n\t\t\t\tcase \"volume\":\n\t\t\t\t\treturn (await this.getPlaying())?.[property];\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n}\n\n@commandClass(CommandClasses[\"Sound Switch\"])\n@implementedVersion(2)\n@ccValues(SoundSwitchCCValues)\nexport class SoundSwitchCC extends CommandClass {\n\tdeclare ccCommand: SoundSwitchCommand;\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 api = CCAPI.create(\n\t\t\tCommandClasses[\"Sound Switch\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\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\tctx.logNode(node.id, {\n\t\t\tmessage: \"requesting tone count...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst toneCount = await api.getToneCount();\n\t\tif (toneCount != undefined) {\n\t\t\tconst logMessage = `supports ${toneCount} tones`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: logMessage,\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: \"Querying tone count timed out, skipping interview...\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tctx.logNode(node.id, {\n\t\t\tmessage: \"requesting current sound configuration...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst config = await api.getConfiguration();\n\t\tif (config) {\n\t\t\tconst logMessage = `received current sound configuration:\ndefault tone ID: ${config.defaultToneId}\ndefault volume: ${config.defaultVolume}`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\n\t\tconst metadataStates: Record<number, string> = {};\n\t\tfor (let toneId = 1; toneId <= toneCount; toneId++) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: `requesting info for tone #${toneId}`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst info = await api.getToneInfo(toneId);\n\t\t\tif (!info) continue;\n\t\t\tconst logMessage = `received info for tone #${toneId}:\nname: ${info.name}\nduration: ${info.duration} seconds`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t\tmetadataStates[toneId] = `${info.name} (${info.duration} sec)`;\n\t\t}\n\n\t\t// Remember tone count and info on the default tone ID metadata\n\t\tthis.setMetadata(ctx, SoundSwitchCCValues.defaultToneId, {\n\t\t\t...SoundSwitchCCValues.defaultToneId.meta,\n\t\t\tmin: 1,\n\t\t\tmax: toneCount,\n\t\t\tstates: metadataStates,\n\t\t});\n\n\t\t// Remember tone count and info on the tone ID metadata\n\t\tthis.setMetadata(ctx, SoundSwitchCCValues.toneId, {\n\t\t\t...SoundSwitchCCValues.toneId.meta,\n\t\t\tmin: 0,\n\t\t\tmax: toneCount,\n\t\t\tstates: {\n\t\t\t\t0: \"off\",\n\t\t\t\t...metadataStates,\n\t\t\t\t[0xff]: \"default\",\n\t\t\t},\n\t\t});\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n}\n\n// @publicAPI\nexport interface SoundSwitchCCTonesNumberReportOptions {\n\ttoneCount: number;\n}\n\n@CCCommand(SoundSwitchCommand.TonesNumberReport)\nexport class SoundSwitchCCTonesNumberReport extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCTonesNumberReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.toneCount = options.toneCount;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCTonesNumberReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst toneCount = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttoneCount,\n\t\t});\n\t}\n\n\tpublic toneCount: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.toneCount]);\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: { \"# of tones\": this.toneCount },\n\t\t};\n\t}\n}\n\n@CCCommand(SoundSwitchCommand.TonesNumberGet)\n@expectedCCResponse(SoundSwitchCCTonesNumberReport)\nexport class SoundSwitchCCTonesNumberGet extends SoundSwitchCC {}\n\n// @publicAPI\nexport interface SoundSwitchCCToneInfoReportOptions {\n\ttoneId: number;\n\tduration: number;\n\tname: string;\n}\n\n@CCCommand(SoundSwitchCommand.ToneInfoReport)\nexport class SoundSwitchCCToneInfoReport extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCToneInfoReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.toneId = options.toneId;\n\t\tthis.duration = options.duration;\n\t\tthis.name = options.name;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCToneInfoReport {\n\t\tvalidatePayload(raw.payload.length >= 4);\n\t\tconst toneId = raw.payload[0];\n\t\tconst duration = raw.payload.readUInt16BE(1);\n\t\tconst nameLength = raw.payload[3];\n\n\t\tvalidatePayload(raw.payload.length >= 4 + nameLength);\n\t\tconst name = raw.payload.subarray(4, 4 + nameLength).toString(\n\t\t\t\"utf8\",\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttoneId,\n\t\t\tduration,\n\t\t\tname,\n\t\t});\n\t}\n\n\tpublic readonly toneId: number;\n\tpublic readonly duration: number;\n\tpublic readonly name: string;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.toneId, 0, 0, this.name.length]),\n\t\t\tBytes.from(this.name, \"utf8\"),\n\t\t]);\n\t\tthis.payload.writeUInt16BE(this.duration, 1);\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\"tone id\": this.toneId,\n\t\t\t\tduration: `${this.duration} seconds`,\n\t\t\t\tname: this.name,\n\t\t\t},\n\t\t};\n\t}\n}\n\nconst testResponseForSoundSwitchToneInfoGet: CCResponsePredicate<\n\tSoundSwitchCCToneInfoGet,\n\tSoundSwitchCCToneInfoReport\n> = (sent, received) => {\n\treturn received.toneId === sent.toneId;\n};\n\n// @publicAPI\nexport interface SoundSwitchCCToneInfoGetOptions {\n\ttoneId: number;\n}\n\n@CCCommand(SoundSwitchCommand.ToneInfoGet)\n@expectedCCResponse(\n\tSoundSwitchCCToneInfoReport,\n\ttestResponseForSoundSwitchToneInfoGet,\n)\nexport class SoundSwitchCCToneInfoGet extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCToneInfoGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.toneId = options.toneId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCToneInfoGet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst toneId = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttoneId,\n\t\t});\n\t}\n\n\tpublic toneId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.toneId]);\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: { \"tone id\": this.toneId },\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface SoundSwitchCCConfigurationSetOptions {\n\tdefaultVolume: number;\n\tdefaultToneId: number;\n}\n\n@CCCommand(SoundSwitchCommand.ConfigurationSet)\n@useSupervision()\nexport class SoundSwitchCCConfigurationSet extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCConfigurationSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.defaultVolume = options.defaultVolume;\n\t\tthis.defaultToneId = options.defaultToneId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCConfigurationSet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst defaultVolume = raw.payload[0];\n\t\tconst defaultToneId = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tdefaultVolume,\n\t\t\tdefaultToneId,\n\t\t});\n\t}\n\n\tpublic defaultVolume: number;\n\tpublic defaultToneId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.defaultVolume, this.defaultToneId]);\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\"default volume\": `${this.defaultVolume} %`,\n\t\t\t\t\"default tone id\": this.defaultToneId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface SoundSwitchCCConfigurationReportOptions {\n\tdefaultVolume: number;\n\tdefaultToneId: number;\n}\n\n@CCCommand(SoundSwitchCommand.ConfigurationReport)\n@ccValueProperty(\"defaultVolume\", SoundSwitchCCValues.defaultVolume)\n@ccValueProperty(\"defaultToneId\", SoundSwitchCCValues.defaultToneId)\nexport class SoundSwitchCCConfigurationReport extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCConfigurationReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.defaultVolume = options.defaultVolume;\n\t\tthis.defaultToneId = options.defaultToneId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCConfigurationReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst defaultVolume = clamp(raw.payload[0], 0, 100);\n\t\tconst defaultToneId = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tdefaultVolume,\n\t\t\tdefaultToneId,\n\t\t});\n\t}\n\n\tpublic defaultVolume: number;\n\n\tpublic defaultToneId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.defaultVolume, this.defaultToneId]);\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\"default volume\": `${this.defaultVolume} %`,\n\t\t\t\t\"default tone id\": this.defaultToneId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(SoundSwitchCommand.ConfigurationGet)\n@expectedCCResponse(SoundSwitchCCConfigurationReport)\nexport class SoundSwitchCCConfigurationGet extends SoundSwitchCC {}\n\n// @publicAPI\nexport interface SoundSwitchCCTonePlaySetOptions {\n\ttoneId: ToneId | number;\n\t// V2+\n\tvolume?: number;\n}\n\n@CCCommand(SoundSwitchCommand.TonePlaySet)\n@useSupervision()\nexport class SoundSwitchCCTonePlaySet extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCTonePlaySetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.toneId = options.toneId;\n\t\tthis.volume = options.volume;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCTonePlaySet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst toneId = raw.payload[0];\n\t\tlet volume: number | undefined;\n\t\tif (toneId !== 0 && raw.payload.length >= 2) {\n\t\t\tvolume = raw.payload[1];\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttoneId,\n\t\t\tvolume,\n\t\t});\n\t}\n\n\tpublic toneId: ToneId | number;\n\tpublic volume?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.toneId, this.volume ?? 0]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"tone id\": this.toneId,\n\t\t};\n\t\tif (this.volume != undefined) {\n\t\t\tmessage.volume = this.volume === 0 ? \"default\" : `${this.volume} %`;\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 SoundSwitchCCTonePlayReportOptions {\n\ttoneId: ToneId | number;\n\t// V2+\n\tvolume?: number;\n}\n\n@CCCommand(SoundSwitchCommand.TonePlayReport)\n@ccValueProperty(\"toneId\", SoundSwitchCCValues.toneId)\n@ccValueProperty(\"volume\", SoundSwitchCCValues.volume)\nexport class SoundSwitchCCTonePlayReport extends SoundSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SoundSwitchCCTonePlayReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.toneId = options.toneId;\n\t\tthis.volume = options.volume;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SoundSwitchCCTonePlayReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst toneId = raw.payload[0];\n\n\t\tlet volume: number | undefined;\n\t\tif (toneId !== 0 && raw.payload.length >= 2) {\n\t\t\tvolume = raw.payload[1];\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttoneId,\n\t\t\tvolume,\n\t\t});\n\t}\n\n\tpublic readonly toneId: ToneId | number;\n\n\tpublic volume?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.toneId, this.volume ?? 0]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"tone id\": this.toneId,\n\t\t};\n\t\tif (this.volume != undefined) {\n\t\t\tmessage.volume = this.volume === 0 ? \"default\" : `${this.volume} %`;\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@CCCommand(SoundSwitchCommand.TonePlayGet)\n@expectedCCResponse(SoundSwitchCCTonePlayReport)\nexport class SoundSwitchCCTonePlayGet extends SoundSwitchCC {}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
- import { type CCEncodingContext, type CCParsingContext } from "@zwave-js/cc";
2
- import { CommandClasses, Duration, EncapsulationFlags, type EndpointId, type GetEndpoint, type GetNode, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, type NodeId, type SinglecastCC, type SupervisionResult, SupervisionStatus, type SupportsCC, type WithAddress } from "@zwave-js/core/safe";
3
- import { Bytes } from "@zwave-js/shared/safe";
1
+ import type { CCEncodingContext, CCParsingContext } from "@zwave-js/cc";
2
+ import { CommandClasses, Duration, EncapsulationFlags, type EndpointId, type GetEndpoint, type GetNode, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, type NodeId, type SinglecastCC, type SupervisionResult, SupervisionStatus, type SupportsCC, type WithAddress } from "@zwave-js/core";
3
+ import { Bytes } from "@zwave-js/shared";
4
4
  import { PhysicalCCAPI } from "../lib/API.js";
5
5
  import { type CCRaw, CommandClass } from "../lib/CommandClass.js";
6
6
  import { SupervisionCommand } from "../lib/_Types.js";
@@ -23,7 +23,7 @@ export declare const SupervisionCCValues: Readonly<{
23
23
  readonly writeable: true;
24
24
  }>;
25
25
  }) & {
26
- is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
26
+ is: (valueId: import("@zwave-js/core").ValueID) => boolean;
27
27
  options: {
28
28
  readonly internal: true;
29
29
  readonly minVersion: 1;
@@ -26,9 +26,8 @@ __export(SupervisionCC_exports, {
26
26
  SupervisionCCValues: () => import_CCValues_generated.SupervisionCCValues
27
27
  });
28
28
  module.exports = __toCommonJS(SupervisionCC_exports);
29
- var import_safe = require("@zwave-js/core/safe");
30
- var import_safe2 = require("@zwave-js/shared/safe");
31
- var import_safe3 = require("@zwave-js/shared/safe");
29
+ var import_core = require("@zwave-js/core");
30
+ var import_shared = require("@zwave-js/shared");
32
31
  var import_API = require("../lib/API.js");
33
32
  var import_CommandClass = require("../lib/CommandClass.js");
34
33
  var import_CommandClassDecorators = require("../lib/CommandClassDecorators.js");
@@ -76,7 +75,7 @@ var __runInitializers = function(thisArg, initializers, value) {
76
75
  return useValue ? value : void 0;
77
76
  };
78
77
  let SupervisionCCAPI = (() => {
79
- let _classDecorators = [(0, import_CommandClassDecorators.API)(import_safe.CommandClasses.Supervision)];
78
+ let _classDecorators = [(0, import_CommandClassDecorators.API)(import_core.CommandClasses.Supervision)];
80
79
  let _classDescriptor;
81
80
  let _classExtraInitializers = [];
82
81
  let _classThis;
@@ -104,7 +103,7 @@ let SupervisionCCAPI = (() => {
104
103
  return super.supportsCommand(cmd);
105
104
  }
106
105
  async sendReport(options) {
107
- const { encapsulationFlags = import_safe.EncapsulationFlags.None, lowPriority = false, ...cmdOptions } = options;
106
+ const { encapsulationFlags = import_core.EncapsulationFlags.None, lowPriority = false, ...cmdOptions } = options;
108
107
  const cc = new SupervisionCCReport({
109
108
  nodeId: this.endpoint.nodeId,
110
109
  endpointIndex: this.endpoint.index,
@@ -115,15 +114,15 @@ let SupervisionCCAPI = (() => {
115
114
  await this.host.sendCommand(cc, {
116
115
  ...this.commandOptions,
117
116
  // Supervision Reports must be prioritized over normal messages
118
- priority: lowPriority ? import_safe.MessagePriority.ImmediateLow : import_safe.MessagePriority.Immediate,
117
+ priority: lowPriority ? import_core.MessagePriority.ImmediateLow : import_core.MessagePriority.Immediate,
119
118
  // But we don't want to wait for an ACK because this can lock up the network for seconds
120
119
  // if the target node is asleep or unreachable
121
- transmitOptions: import_safe.TransmitOptions.DEFAULT_NOACK,
120
+ transmitOptions: import_core.TransmitOptions.DEFAULT_NOACK,
122
121
  // Only try sending the report once. If it fails, the node will ask again
123
122
  maxSendAttempts: 1
124
123
  });
125
124
  } catch (e) {
126
- if ((0, import_safe.isTransmissionError)(e)) {
125
+ if ((0, import_core.isTransmissionError)(e)) {
127
126
  return;
128
127
  } else {
129
128
  throw e;
@@ -134,7 +133,7 @@ let SupervisionCCAPI = (() => {
134
133
  return SupervisionCCAPI2 = _classThis;
135
134
  })();
136
135
  let SupervisionCC = (() => {
137
- let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_safe.CommandClasses.Supervision), (0, import_CommandClassDecorators.implementedVersion)(2)];
136
+ let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_core.CommandClasses.Supervision), (0, import_CommandClassDecorators.implementedVersion)(2)];
138
137
  let _classDescriptor;
139
138
  let _classExtraInitializers = [];
140
139
  let _classThis;
@@ -155,12 +154,12 @@ let SupervisionCC = (() => {
155
154
  }
156
155
  /** Tests if a command should be supervised and thus requires encapsulation */
157
156
  static requiresEncapsulation(cc) {
158
- return !!(cc.encapsulationFlags & import_safe.EncapsulationFlags.Supervision) && !(cc instanceof SupervisionCCGet) && !(cc instanceof SupervisionCCReport);
157
+ return !!(cc.encapsulationFlags & import_core.EncapsulationFlags.Supervision) && !(cc instanceof SupervisionCCGet) && !(cc instanceof SupervisionCCReport);
159
158
  }
160
159
  /** Encapsulates a command that targets a specific endpoint */
161
160
  static encapsulate(cc, sessionId, requestStatusUpdates = true) {
162
161
  if (!cc.isSinglecast()) {
163
- throw new import_safe.ZWaveError(`Supervision is only possible for singlecast commands!`, import_safe.ZWaveErrorCodes.Argument_Invalid);
162
+ throw new import_core.ZWaveError(`Supervision is only possible for singlecast commands!`, import_core.ZWaveErrorCodes.Argument_Invalid);
164
163
  }
165
164
  const ret = new SupervisionCCGet({
166
165
  nodeId: cc.nodeId,
@@ -170,7 +169,7 @@ let SupervisionCC = (() => {
170
169
  sessionId,
171
170
  requestStatusUpdates
172
171
  });
173
- ret.encapsulationFlags = cc.encapsulationFlags & ~import_safe.EncapsulationFlags.Supervision;
172
+ ret.encapsulationFlags = cc.encapsulationFlags & ~import_core.EncapsulationFlags.Supervision;
174
173
  return ret;
175
174
  }
176
175
  /**
@@ -178,8 +177,8 @@ let SupervisionCC = (() => {
178
177
  * Returns `undefined` when there is no session ID or the command was sent as multicast.
179
178
  */
180
179
  static getSessionId(command) {
181
- if (command.isEncapsulatedWith(import_safe.CommandClasses.Supervision, import_Types.SupervisionCommand.Get)) {
182
- const supervisionEncapsulation = command.getEncapsulatingCC(import_safe.CommandClasses.Supervision, import_Types.SupervisionCommand.Get);
180
+ if (command.isEncapsulatedWith(import_core.CommandClasses.Supervision, import_Types.SupervisionCommand.Get)) {
181
+ const supervisionEncapsulation = command.getEncapsulatingCC(import_core.CommandClasses.Supervision, import_Types.SupervisionCommand.Get);
183
182
  if (supervisionEncapsulation.frameType !== "broadcast" && supervisionEncapsulation.frameType !== "multicast") {
184
183
  return supervisionEncapsulation.sessionId;
185
184
  }
@@ -211,7 +210,7 @@ let SupervisionCC = (() => {
211
210
  return false;
212
211
  return (
213
212
  // ... the node supports it
214
- node.supportsCC(import_safe.CommandClasses.Supervision) && (0, import_CommandClassDecorators.shouldUseSupervision)(command) && SupervisionCC2.getCCSupportedWithSupervision(ctx, endpoint, command.ccId)
213
+ node.supportsCC(import_core.CommandClasses.Supervision) && (0, import_CommandClassDecorators.shouldUseSupervision)(command) && SupervisionCC2.getCCSupportedWithSupervision(ctx, endpoint, command.ccId)
215
214
  );
216
215
  }
217
216
  };
@@ -243,20 +242,20 @@ let SupervisionCCReport = (() => {
243
242
  this.requestWakeUpOnDemand = !!options.requestWakeUpOnDemand;
244
243
  this.sessionId = options.sessionId;
245
244
  this.status = options.status;
246
- if (options.status === import_safe.SupervisionStatus.Working) {
245
+ if (options.status === import_core.SupervisionStatus.Working) {
247
246
  this.duration = options.duration;
248
247
  } else {
249
- this.duration = new import_safe.Duration(0, "seconds");
248
+ this.duration = new import_core.Duration(0, "seconds");
250
249
  }
251
250
  }
252
251
  static from(raw, ctx) {
253
- (0, import_safe.validatePayload)(raw.payload.length >= 3);
252
+ (0, import_core.validatePayload)(raw.payload.length >= 3);
254
253
  const moreUpdatesFollow = !!(raw.payload[0] & 128);
255
254
  const requestWakeUpOnDemand = !!(raw.payload[0] & 64);
256
255
  const sessionId = raw.payload[0] & 63;
257
256
  const status = raw.payload[1];
258
- if (status === import_safe.SupervisionStatus.Working) {
259
- const duration = import_safe.Duration.parseReport(raw.payload[2]) ?? new import_safe.Duration(0, "seconds");
257
+ if (status === import_core.SupervisionStatus.Working) {
258
+ const duration = import_core.Duration.parseReport(raw.payload[2]) ?? new import_core.Duration(0, "seconds");
260
259
  return new this({
261
260
  nodeId: ctx.sourceNodeId,
262
261
  moreUpdatesFollow,
@@ -281,16 +280,16 @@ let SupervisionCCReport = (() => {
281
280
  status;
282
281
  duration;
283
282
  serialize(ctx) {
284
- this.payload = import_safe2.Bytes.concat([
285
- import_safe2.Bytes.from([
283
+ this.payload = import_shared.Bytes.concat([
284
+ import_shared.Bytes.from([
286
285
  (this.moreUpdatesFollow ? 128 : 0) | (this.requestWakeUpOnDemand ? 64 : 0) | this.sessionId & 63,
287
286
  this.status
288
287
  ])
289
288
  ]);
290
289
  if (this.duration) {
291
- this.payload = import_safe2.Bytes.concat([
290
+ this.payload = import_shared.Bytes.concat([
292
291
  this.payload,
293
- import_safe2.Bytes.from([this.duration.serializeReport()])
292
+ import_shared.Bytes.from([this.duration.serializeReport()])
294
293
  ]);
295
294
  }
296
295
  return super.serialize(ctx);
@@ -299,7 +298,7 @@ let SupervisionCCReport = (() => {
299
298
  const message = {
300
299
  "session id": this.sessionId,
301
300
  "more updates follow": this.moreUpdatesFollow,
302
- status: (0, import_safe3.getEnumMemberName)(import_safe.SupervisionStatus, this.status)
301
+ status: (0, import_shared.getEnumMemberName)(import_core.SupervisionStatus, this.status)
303
302
  };
304
303
  if (this.duration) {
305
304
  message.duration = this.duration.toString();
@@ -310,7 +309,7 @@ let SupervisionCCReport = (() => {
310
309
  };
311
310
  }
312
311
  toSupervisionResult() {
313
- if (this.status === import_safe.SupervisionStatus.Working) {
312
+ if (this.status === import_core.SupervisionStatus.Working) {
314
313
  return {
315
314
  status: this.status,
316
315
  remainingDuration: this.duration
@@ -357,7 +356,7 @@ let SupervisionCCGet = (() => {
357
356
  this.encapsulated.encapsulatingCC = this;
358
357
  }
359
358
  static async from(raw, ctx) {
360
- (0, import_safe.validatePayload)(raw.payload.length >= 3);
359
+ (0, import_core.validatePayload)(raw.payload.length >= 3);
361
360
  const requestStatusUpdates = !!(raw.payload[0] & 128);
362
361
  const sessionId = raw.payload[0] & 63;
363
362
  const encapsulated = await import_CommandClass.CommandClass.parse(raw.payload.subarray(2), ctx);
@@ -373,8 +372,8 @@ let SupervisionCCGet = (() => {
373
372
  encapsulated;
374
373
  async serialize(ctx) {
375
374
  const encapCC = await this.encapsulated.serialize(ctx);
376
- this.payload = import_safe2.Bytes.concat([
377
- import_safe2.Bytes.from([
375
+ this.payload = import_shared.Bytes.concat([
376
+ import_shared.Bytes.from([
378
377
  (this.requestStatusUpdates ? 128 : 0) | this.sessionId & 63,
379
378
  encapCC.length
380
379
  ]),