@zwave-js/cc 15.25.1 → 15.25.3

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 (314) hide show
  1. package/build/cjs/cc/AlarmSensorCC.js +15 -17
  2. package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
  3. package/build/cjs/cc/AssociationCC.d.ts +1 -1
  4. package/build/cjs/cc/AssociationCC.js +5 -2
  5. package/build/cjs/cc/AssociationCC.js.map +2 -2
  6. package/build/cjs/cc/AssociationGroupInfoCC.js +23 -18
  7. package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
  8. package/build/cjs/cc/BarrierOperatorCC.js +9 -7
  9. package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
  10. package/build/cjs/cc/BasicCC.js +3 -2
  11. package/build/cjs/cc/BasicCC.js.map +2 -2
  12. package/build/cjs/cc/BatteryCC.js +3 -2
  13. package/build/cjs/cc/BatteryCC.js.map +2 -2
  14. package/build/cjs/cc/BinarySensorCC.js +8 -6
  15. package/build/cjs/cc/BinarySensorCC.js.map +2 -2
  16. package/build/cjs/cc/BinarySwitchCC.js +3 -2
  17. package/build/cjs/cc/BinarySwitchCC.js.map +2 -2
  18. package/build/cjs/cc/CentralSceneCC.js +9 -7
  19. package/build/cjs/cc/CentralSceneCC.js.map +2 -2
  20. package/build/cjs/cc/ClockCC.js +3 -2
  21. package/build/cjs/cc/ClockCC.js.map +2 -2
  22. package/build/cjs/cc/ColorSwitchCC.js +9 -6
  23. package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
  24. package/build/cjs/cc/ConfigurationCC.js +27 -27
  25. package/build/cjs/cc/ConfigurationCC.js.map +2 -2
  26. package/build/cjs/cc/DoorLockCC.js +49 -63
  27. package/build/cjs/cc/DoorLockCC.js.map +2 -2
  28. package/build/cjs/cc/DoorLockLoggingCC.js +3 -2
  29. package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
  30. package/build/cjs/cc/EnergyProductionCC.js +3 -2
  31. package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
  32. package/build/cjs/cc/EntryControlCC.js +5 -3
  33. package/build/cjs/cc/EntryControlCC.js.map +2 -2
  34. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +2 -1
  35. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +2 -2
  36. package/build/cjs/cc/HumidityControlModeCC.js +9 -8
  37. package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
  38. package/build/cjs/cc/HumidityControlOperatingStateCC.js +3 -2
  39. package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +2 -2
  40. package/build/cjs/cc/HumidityControlSetpointCC.js +19 -17
  41. package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
  42. package/build/cjs/cc/IndicatorCC.js +5 -2
  43. package/build/cjs/cc/IndicatorCC.js.map +2 -2
  44. package/build/cjs/cc/IrrigationCC.js +26 -27
  45. package/build/cjs/cc/IrrigationCC.js.map +2 -2
  46. package/build/cjs/cc/LanguageCC.js +3 -2
  47. package/build/cjs/cc/LanguageCC.js.map +2 -2
  48. package/build/cjs/cc/LockCC.js +3 -2
  49. package/build/cjs/cc/LockCC.js.map +2 -2
  50. package/build/cjs/cc/ManufacturerSpecificCC.js +4 -1
  51. package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
  52. package/build/cjs/cc/MeterCC.js +14 -13
  53. package/build/cjs/cc/MeterCC.js.map +2 -2
  54. package/build/cjs/cc/MultiChannelAssociationCC.js +5 -2
  55. package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
  56. package/build/cjs/cc/MultiChannelCC.d.ts +1 -1
  57. package/build/cjs/cc/MultiChannelCC.js +19 -22
  58. package/build/cjs/cc/MultiChannelCC.js.map +2 -2
  59. package/build/cjs/cc/MultilevelSensorCC.js +13 -8
  60. package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
  61. package/build/cjs/cc/MultilevelSwitchCC.js +5 -3
  62. package/build/cjs/cc/MultilevelSwitchCC.js.map +2 -2
  63. package/build/cjs/cc/NodeNamingCC.js +3 -2
  64. package/build/cjs/cc/NodeNamingCC.js.map +2 -2
  65. package/build/cjs/cc/NotificationCC.js +11 -11
  66. package/build/cjs/cc/NotificationCC.js.map +2 -2
  67. package/build/cjs/cc/ProtectionCC.js +16 -15
  68. package/build/cjs/cc/ProtectionCC.js.map +2 -2
  69. package/build/cjs/cc/SceneControllerConfigurationCC.js +2 -1
  70. package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
  71. package/build/cjs/cc/ScheduleEntryLockCC.js +2 -1
  72. package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
  73. package/build/cjs/cc/Security2CC.js +15 -24
  74. package/build/cjs/cc/Security2CC.js.map +2 -2
  75. package/build/cjs/cc/SecurityCC.js +10 -17
  76. package/build/cjs/cc/SecurityCC.js.map +2 -2
  77. package/build/cjs/cc/SoundSwitchCC.js +2 -1
  78. package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
  79. package/build/cjs/cc/ThermostatFanModeCC.js +9 -7
  80. package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
  81. package/build/cjs/cc/ThermostatFanStateCC.js +3 -2
  82. package/build/cjs/cc/ThermostatFanStateCC.js.map +2 -2
  83. package/build/cjs/cc/ThermostatModeCC.js +9 -7
  84. package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
  85. package/build/cjs/cc/ThermostatOperatingStateCC.js +4 -4
  86. package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
  87. package/build/cjs/cc/ThermostatSetbackCC.js +3 -2
  88. package/build/cjs/cc/ThermostatSetbackCC.js.map +2 -2
  89. package/build/cjs/cc/ThermostatSetpointCC.js +9 -5
  90. package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
  91. package/build/cjs/cc/TimeCC.js +2 -1
  92. package/build/cjs/cc/TimeCC.js.map +2 -2
  93. package/build/cjs/cc/TimeParametersCC.js +2 -1
  94. package/build/cjs/cc/TimeParametersCC.js.map +2 -2
  95. package/build/cjs/cc/UserCodeCC.js +6 -6
  96. package/build/cjs/cc/UserCodeCC.js.map +2 -2
  97. package/build/cjs/cc/UserCredentialCC.js +5 -2
  98. package/build/cjs/cc/UserCredentialCC.js.map +2 -2
  99. package/build/cjs/cc/VersionCC.js +2 -1
  100. package/build/cjs/cc/VersionCC.js.map +2 -2
  101. package/build/cjs/cc/WakeUpCC.js +2 -1
  102. package/build/cjs/cc/WakeUpCC.js.map +2 -2
  103. package/build/cjs/cc/WindowCoveringCC.js +10 -7
  104. package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
  105. package/build/cjs/cc/ZWavePlusCC.js +2 -1
  106. package/build/cjs/cc/ZWavePlusCC.js.map +2 -2
  107. package/build/cjs/cc/_CCValues.generated.d.ts +4 -4
  108. package/build/cjs/cc/_CCValues.generated.js +2 -2
  109. package/build/cjs/cc/_CCValues.generated.js.map +1 -1
  110. package/build/cjs/cc/index.d.ts +3 -3
  111. package/build/cjs/cc/index.js.map +2 -2
  112. package/build/cjs/cc/manufacturerProprietary/Decorators.d.ts +1 -1
  113. package/build/cjs/cc/manufacturerProprietary/Decorators.js.map +2 -2
  114. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js +3 -2
  115. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +2 -2
  116. package/build/cjs/lib/API.js.map +2 -2
  117. package/build/cjs/lib/CommandClass.d.ts +5 -1
  118. package/build/cjs/lib/CommandClass.js +25 -3
  119. package/build/cjs/lib/CommandClass.js.map +2 -2
  120. package/build/cjs/lib/CommandClassDecorators.d.ts +4 -4
  121. package/build/cjs/lib/CommandClassDecorators.js.map +2 -2
  122. package/build/cjs/lib/Security2/Extension.d.ts +6 -4
  123. package/build/cjs/lib/Security2/Extension.js +22 -20
  124. package/build/cjs/lib/Security2/Extension.js.map +2 -2
  125. package/build/cjs/lib/_Types.js.map +1 -1
  126. package/build/cjs/lib/utils.js +14 -8
  127. package/build/cjs/lib/utils.js.map +2 -2
  128. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  129. package/build/esm/cc/AlarmSensorCC.js +14 -18
  130. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  131. package/build/esm/cc/AssociationCC.d.ts +1 -1
  132. package/build/esm/cc/AssociationCC.d.ts.map +1 -1
  133. package/build/esm/cc/AssociationCC.js +3 -0
  134. package/build/esm/cc/AssociationCC.js.map +1 -1
  135. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  136. package/build/esm/cc/AssociationGroupInfoCC.js +24 -22
  137. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  138. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  139. package/build/esm/cc/BarrierOperatorCC.js +8 -8
  140. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  141. package/build/esm/cc/BasicCC.d.ts.map +1 -1
  142. package/build/esm/cc/BasicCC.js +2 -1
  143. package/build/esm/cc/BasicCC.js.map +1 -1
  144. package/build/esm/cc/BatteryCC.d.ts.map +1 -1
  145. package/build/esm/cc/BatteryCC.js +2 -1
  146. package/build/esm/cc/BatteryCC.js.map +1 -1
  147. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  148. package/build/esm/cc/BinarySensorCC.js +7 -7
  149. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  150. package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
  151. package/build/esm/cc/BinarySwitchCC.js +2 -1
  152. package/build/esm/cc/BinarySwitchCC.js.map +1 -1
  153. package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
  154. package/build/esm/cc/CentralSceneCC.js +9 -8
  155. package/build/esm/cc/CentralSceneCC.js.map +1 -1
  156. package/build/esm/cc/ClockCC.d.ts.map +1 -1
  157. package/build/esm/cc/ClockCC.js +2 -1
  158. package/build/esm/cc/ClockCC.js.map +1 -1
  159. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  160. package/build/esm/cc/ColorSwitchCC.js +8 -7
  161. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  162. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  163. package/build/esm/cc/ConfigurationCC.js +32 -29
  164. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  165. package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
  166. package/build/esm/cc/DoorLockCC.js +73 -74
  167. package/build/esm/cc/DoorLockCC.js.map +1 -1
  168. package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
  169. package/build/esm/cc/DoorLockLoggingCC.js +2 -1
  170. package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
  171. package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
  172. package/build/esm/cc/EnergyProductionCC.js +2 -1
  173. package/build/esm/cc/EnergyProductionCC.js.map +1 -1
  174. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  175. package/build/esm/cc/EntryControlCC.js +3 -1
  176. package/build/esm/cc/EntryControlCC.js.map +1 -1
  177. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
  178. package/build/esm/cc/FirmwareUpdateMetaDataCC.js +1 -0
  179. package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
  180. package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
  181. package/build/esm/cc/HumidityControlModeCC.js +8 -9
  182. package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
  183. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
  184. package/build/esm/cc/HumidityControlOperatingStateCC.js +2 -1
  185. package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
  186. package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
  187. package/build/esm/cc/HumidityControlSetpointCC.js +18 -23
  188. package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
  189. package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
  190. package/build/esm/cc/IndicatorCC.js +3 -0
  191. package/build/esm/cc/IndicatorCC.js.map +1 -1
  192. package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
  193. package/build/esm/cc/IrrigationCC.js +29 -24
  194. package/build/esm/cc/IrrigationCC.js.map +1 -1
  195. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  196. package/build/esm/cc/LanguageCC.js +2 -1
  197. package/build/esm/cc/LanguageCC.js.map +1 -1
  198. package/build/esm/cc/LockCC.d.ts.map +1 -1
  199. package/build/esm/cc/LockCC.js +2 -1
  200. package/build/esm/cc/LockCC.js.map +1 -1
  201. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  202. package/build/esm/cc/ManufacturerSpecificCC.js +4 -1
  203. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  204. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  205. package/build/esm/cc/MeterCC.js +15 -19
  206. package/build/esm/cc/MeterCC.js.map +1 -1
  207. package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
  208. package/build/esm/cc/MultiChannelAssociationCC.js +3 -0
  209. package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
  210. package/build/esm/cc/MultiChannelCC.d.ts +1 -1
  211. package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
  212. package/build/esm/cc/MultiChannelCC.js +19 -23
  213. package/build/esm/cc/MultiChannelCC.js.map +1 -1
  214. package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
  215. package/build/esm/cc/MultilevelSensorCC.js +14 -19
  216. package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
  217. package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
  218. package/build/esm/cc/MultilevelSwitchCC.js +3 -1
  219. package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
  220. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  221. package/build/esm/cc/NodeNamingCC.js +2 -1
  222. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  223. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  224. package/build/esm/cc/NotificationCC.js +11 -14
  225. package/build/esm/cc/NotificationCC.js.map +1 -1
  226. package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
  227. package/build/esm/cc/ProtectionCC.js +15 -22
  228. package/build/esm/cc/ProtectionCC.js.map +1 -1
  229. package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
  230. package/build/esm/cc/SceneControllerConfigurationCC.js +1 -0
  231. package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
  232. package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
  233. package/build/esm/cc/ScheduleEntryLockCC.js +1 -0
  234. package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
  235. package/build/esm/cc/Security2CC.d.ts.map +1 -1
  236. package/build/esm/cc/Security2CC.js +15 -32
  237. package/build/esm/cc/Security2CC.js.map +1 -1
  238. package/build/esm/cc/SecurityCC.d.ts.map +1 -1
  239. package/build/esm/cc/SecurityCC.js +10 -21
  240. package/build/esm/cc/SecurityCC.js.map +1 -1
  241. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  242. package/build/esm/cc/SoundSwitchCC.js +1 -0
  243. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  244. package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
  245. package/build/esm/cc/ThermostatFanModeCC.js +8 -8
  246. package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
  247. package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
  248. package/build/esm/cc/ThermostatFanStateCC.js +2 -1
  249. package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
  250. package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
  251. package/build/esm/cc/ThermostatModeCC.js +8 -8
  252. package/build/esm/cc/ThermostatModeCC.js.map +1 -1
  253. package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
  254. package/build/esm/cc/ThermostatOperatingStateCC.js +4 -5
  255. package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
  256. package/build/esm/cc/ThermostatSetbackCC.d.ts.map +1 -1
  257. package/build/esm/cc/ThermostatSetbackCC.js +2 -1
  258. package/build/esm/cc/ThermostatSetbackCC.js.map +1 -1
  259. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  260. package/build/esm/cc/ThermostatSetpointCC.js +8 -9
  261. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  262. package/build/esm/cc/TimeCC.d.ts.map +1 -1
  263. package/build/esm/cc/TimeCC.js +1 -0
  264. package/build/esm/cc/TimeCC.js.map +1 -1
  265. package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
  266. package/build/esm/cc/TimeParametersCC.js +1 -0
  267. package/build/esm/cc/TimeParametersCC.js.map +1 -1
  268. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  269. package/build/esm/cc/UserCodeCC.js +5 -7
  270. package/build/esm/cc/UserCodeCC.js.map +1 -1
  271. package/build/esm/cc/UserCredentialCC.d.ts.map +1 -1
  272. package/build/esm/cc/UserCredentialCC.js +4 -1
  273. package/build/esm/cc/UserCredentialCC.js.map +1 -1
  274. package/build/esm/cc/VersionCC.d.ts.map +1 -1
  275. package/build/esm/cc/VersionCC.js +1 -0
  276. package/build/esm/cc/VersionCC.js.map +1 -1
  277. package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
  278. package/build/esm/cc/WakeUpCC.js +1 -0
  279. package/build/esm/cc/WakeUpCC.js.map +1 -1
  280. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  281. package/build/esm/cc/WindowCoveringCC.js +9 -9
  282. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  283. package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
  284. package/build/esm/cc/ZWavePlusCC.js +1 -0
  285. package/build/esm/cc/ZWavePlusCC.js.map +1 -1
  286. package/build/esm/cc/_CCValues.generated.d.ts +4 -4
  287. package/build/esm/cc/_CCValues.generated.js +2 -2
  288. package/build/esm/cc/_CCValues.generated.js.map +1 -1
  289. package/build/esm/cc/index.d.ts +3 -3
  290. package/build/esm/cc/index.d.ts.map +1 -1
  291. package/build/esm/cc/index.js.map +1 -1
  292. package/build/esm/cc/manufacturerProprietary/Decorators.d.ts +1 -1
  293. package/build/esm/cc/manufacturerProprietary/Decorators.d.ts.map +1 -1
  294. package/build/esm/cc/manufacturerProprietary/Decorators.js.map +1 -1
  295. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -1
  296. package/build/esm/cc/manufacturerProprietary/FibaroCC.js +2 -1
  297. package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
  298. package/build/esm/lib/API.js.map +1 -1
  299. package/build/esm/lib/CommandClass.d.ts +5 -1
  300. package/build/esm/lib/CommandClass.d.ts.map +1 -1
  301. package/build/esm/lib/CommandClass.js +30 -4
  302. package/build/esm/lib/CommandClass.js.map +1 -1
  303. package/build/esm/lib/CommandClassDecorators.d.ts +4 -4
  304. package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
  305. package/build/esm/lib/CommandClassDecorators.js.map +1 -1
  306. package/build/esm/lib/Security2/Extension.d.ts +6 -4
  307. package/build/esm/lib/Security2/Extension.d.ts.map +1 -1
  308. package/build/esm/lib/Security2/Extension.js +23 -21
  309. package/build/esm/lib/Security2/Extension.js.map +1 -1
  310. package/build/esm/lib/_Types.js +1 -1
  311. package/build/esm/lib/utils.d.ts.map +1 -1
  312. package/build/esm/lib/utils.js +15 -9
  313. package/build/esm/lib/utils.js.map +1 -1
  314. package/package.json +7 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/FirmwareUpdateMetaDataCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./FirmwareUpdateMetaDataCC._validateArgs.js\";\nconst { validateArgs_FirmwareUpdateMetaDataCCAPI_reportMetaData, validateArgs_FirmwareUpdateMetaDataCCAPI_requestUpdate, validateArgs_FirmwareUpdateMetaDataCCAPI_respondToUpdateRequest, validateArgs_FirmwareUpdateMetaDataCCAPI_respondToDownloadRequest, validateArgs_FirmwareUpdateMetaDataCCAPI_sendFirmwareFragment, validateArgs_FirmwareUpdateMetaDataCCAPI_activateFirmware } = __validateArgs;\nimport { CRC16_CCITT, CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type WithAddress, ZWaveError, ZWaveErrorCodes, validatePayload, } from \"@zwave-js/core\";\nimport { type AllOrNone, Bytes, type BytesView, getEnumMemberName, num2hex, pick, } from \"@zwave-js/shared\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, getEffectiveCCVersion, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { FirmwareDownloadStatus, FirmwareUpdateActivationStatus, type FirmwareUpdateMetaData, FirmwareUpdateMetaDataCommand, FirmwareUpdateRequestStatus, FirmwareUpdateStatus, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { FirmwareUpdateMetaDataCCValues } from \"./_CCValues.generated.js\";\nexport { FirmwareUpdateMetaDataCCValues };\n@API(CommandClasses[\"Firmware Update Meta Data\"])\nexport class FirmwareUpdateMetaDataCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: FirmwareUpdateMetaDataCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case FirmwareUpdateMetaDataCommand.MetaDataGet:\n case FirmwareUpdateMetaDataCommand.MetaDataReport:\n case FirmwareUpdateMetaDataCommand.RequestGet:\n case FirmwareUpdateMetaDataCommand.RequestReport:\n case FirmwareUpdateMetaDataCommand.Report:\n case FirmwareUpdateMetaDataCommand.StatusReport:\n return true;\n case FirmwareUpdateMetaDataCommand.ActivationSet:\n return (this.version >= 4\n && (this.version < 7\n || this.tryGetValueDB()?.getValue(FirmwareUpdateMetaDataCCValues\n .supportsActivation.endpoint(this.endpoint.index)) === true));\n case FirmwareUpdateMetaDataCommand.PrepareGet:\n case FirmwareUpdateMetaDataCommand.PrepareReport:\n return this.version >= 5;\n }\n return super.supportsCommand(cmd);\n }\n /**\n * Requests information about the current firmware on the device\n */\n public async getMetaData(): Promise<MaybeNotKnown<FirmwareUpdateMetaData>> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.MetaDataGet);\n const cc = new FirmwareUpdateMetaDataCCMetaDataGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<FirmwareUpdateMetaDataCCMetaDataReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"manufacturerId\",\n \"firmwareId\",\n \"checksum\",\n \"firmwareUpgradable\",\n \"maxFragmentSize\",\n \"additionalFirmwareIDs\",\n \"hardwareVersion\",\n \"continuesToFunction\",\n \"supportsActivation\",\n \"supportsResuming\",\n \"supportsNonSecureTransfer\",\n ]);\n }\n }\n @validateArgs_FirmwareUpdateMetaDataCCAPI_reportMetaData()\n public async reportMetaData(options: FirmwareUpdateMetaDataCCMetaDataReportOptions): Promise<void> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.Report);\n const cc = new FirmwareUpdateMetaDataCCMetaDataReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n /**\n * Requests the device to start the firmware update process and waits for a response.\n * This response may time out on some devices, in which case the caller of this method\n * should wait manually.\n */\n @validateArgs_FirmwareUpdateMetaDataCCAPI_requestUpdate()\n public requestUpdate(options: FirmwareUpdateMetaDataCCRequestGetOptions): Promise<FirmwareUpdateMetaDataCCRequestReport | undefined> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.RequestGet);\n const cc = new FirmwareUpdateMetaDataCCRequestGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n /**\n * Responds to a firmware update request\n */\n @validateArgs_FirmwareUpdateMetaDataCCAPI_respondToUpdateRequest()\n public async respondToUpdateRequest(options: FirmwareUpdateMetaDataCCRequestReportOptions): Promise<void> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.RequestReport);\n const cc = new FirmwareUpdateMetaDataCCRequestReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, {\n ...this.commandOptions,\n // Do not wait for Nonce Reports\n s2VerifyDelivery: false,\n });\n }\n /**\n * Responds to a firmware download request\n */\n @validateArgs_FirmwareUpdateMetaDataCCAPI_respondToDownloadRequest()\n public async respondToDownloadRequest(options: FirmwareUpdateMetaDataCCPrepareReportOptions): Promise<void> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.PrepareReport);\n const cc = new FirmwareUpdateMetaDataCCPrepareReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, {\n ...this.commandOptions,\n // Do not wait for Nonce Reports\n s2VerifyDelivery: false,\n });\n }\n /**\n * Sends a fragment of the new firmware to the device\n */\n @validateArgs_FirmwareUpdateMetaDataCCAPI_sendFirmwareFragment()\n public async sendFirmwareFragment(fragmentNumber: number, isLastFragment: boolean, data: BytesView): Promise<void> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.Report);\n const cc = new FirmwareUpdateMetaDataCCReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n reportNumber: fragmentNumber,\n isLast: isLastFragment,\n firmwareData: data,\n });\n await this.host.sendCommand(cc, {\n ...this.commandOptions,\n // Do not wait for Nonce Reports\n s2VerifyDelivery: false,\n });\n }\n /** Activates a previously transferred firmware image */\n @validateArgs_FirmwareUpdateMetaDataCCAPI_activateFirmware()\n public async activateFirmware(options: FirmwareUpdateMetaDataCCActivationSetOptions): Promise<MaybeNotKnown<FirmwareUpdateActivationStatus>> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.ActivationSet);\n const cc = new FirmwareUpdateMetaDataCCActivationSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n const response = await this.host.sendCommand<FirmwareUpdateMetaDataCCActivationReport>(cc, this.commandOptions);\n return response?.activationStatus;\n }\n}\n@commandClass(CommandClasses[\"Firmware Update Meta Data\"])\n@implementedVersion(8)\n@ccValues(FirmwareUpdateMetaDataCCValues)\nexport class FirmwareUpdateMetaDataCC extends CommandClass {\n declare ccCommand: FirmwareUpdateMetaDataCommand;\n public skipEndpointInterview(): boolean {\n return true;\n }\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Firmware Update Meta Data\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Querying firmware update capabilities...\",\n direction: \"outbound\",\n });\n const caps = await api.getMetaData();\n if (caps) {\n let logMessage = `Received firmware update capabilities:`;\n if (caps.firmwareUpgradable) {\n logMessage += `\n firmware targets: ${[0, ...caps.additionalFirmwareIDs].join(\", \")}\n continues to function: ${caps.continuesToFunction}\n supports activation: ${caps.supportsActivation}`;\n if (caps.supportsResuming != undefined) {\n logMessage += `\n supports resuming: ${caps.supportsResuming}`;\n }\n if (caps.supportsNonSecureTransfer != undefined) {\n logMessage += `\n supports non-secure transfer: ${caps.supportsNonSecureTransfer}`;\n }\n }\n else {\n logMessage += `\\nfirmware upgradeable: false`;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Firmware update capability query timed out\",\n direction: \"inbound\",\n });\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCMetaDataReportOptions {\n manufacturerId: number;\n firmwareId?: number;\n checksum?: number;\n firmwareUpgradable: boolean;\n maxFragmentSize?: number;\n additionalFirmwareIDs?: readonly number[];\n hardwareVersion?: number;\n continuesToFunction?: MaybeNotKnown<boolean>;\n supportsActivation?: MaybeNotKnown<boolean>;\n supportsResuming?: MaybeNotKnown<boolean>;\n supportsNonSecureTransfer?: MaybeNotKnown<boolean>;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.MetaDataReport)\n@ccValueProperty(\"firmwareUpgradable\", FirmwareUpdateMetaDataCCValues.firmwareUpgradable)\n@ccValueProperty(\"additionalFirmwareIDs\", FirmwareUpdateMetaDataCCValues.additionalFirmwareIDs)\n@ccValueProperty(\"continuesToFunction\", FirmwareUpdateMetaDataCCValues.continuesToFunction)\n@ccValueProperty(\"supportsActivation\", FirmwareUpdateMetaDataCCValues.supportsActivation)\n@ccValueProperty(\"supportsResuming\", FirmwareUpdateMetaDataCCValues.supportsResuming)\n@ccValueProperty(\"supportsNonSecureTransfer\", FirmwareUpdateMetaDataCCValues.supportsNonSecureTransfer)\nexport class FirmwareUpdateMetaDataCCMetaDataReport extends FirmwareUpdateMetaDataCC implements FirmwareUpdateMetaData {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCMetaDataReportOptions>) {\n super(options);\n this.manufacturerId = options.manufacturerId;\n this.firmwareId = options.firmwareId ?? 0;\n this.checksum = options.checksum ?? 0;\n this.firmwareUpgradable = options.firmwareUpgradable;\n this.maxFragmentSize = options.maxFragmentSize;\n this.additionalFirmwareIDs = options.additionalFirmwareIDs ?? [];\n this.hardwareVersion = options.hardwareVersion;\n this.continuesToFunction = options.continuesToFunction;\n this.supportsActivation = options.supportsActivation;\n this.supportsResuming = options.supportsResuming;\n this.supportsNonSecureTransfer = options.supportsNonSecureTransfer;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCMetaDataReport {\n validatePayload(raw.payload.length >= 6);\n const manufacturerId = raw.payload.readUInt16BE(0);\n const firmwareId = raw.payload.readUInt16BE(2);\n const checksum = raw.payload.readUInt16BE(4);\n // V1/V2 only have a single firmware which must be upgradable\n const firmwareUpgradable = raw.payload[6] === 0xff\n || raw.payload[6] == undefined;\n let maxFragmentSize: number | undefined;\n let additionalFirmwareIDs: number[] | undefined;\n let hardwareVersion: number | undefined;\n let continuesToFunction: MaybeNotKnown<boolean>;\n let supportsActivation: MaybeNotKnown<boolean>;\n let supportsResuming: MaybeNotKnown<boolean>;\n let supportsNonSecureTransfer: MaybeNotKnown<boolean>;\n if (raw.payload.length >= 10) {\n // V3+\n maxFragmentSize = raw.payload.readUInt16BE(8);\n // Read variable length list of additional firmwares\n const numAdditionalFirmwares = raw.payload[7];\n additionalFirmwareIDs = [];\n validatePayload(raw.payload.length >= 10 + 2 * numAdditionalFirmwares);\n for (let i = 0; i < numAdditionalFirmwares; i++) {\n additionalFirmwareIDs.push(raw.payload.readUInt16BE(10 + 2 * i));\n }\n // Read hardware version (if it exists)\n let offset = 10 + 2 * numAdditionalFirmwares;\n if (raw.payload.length >= offset + 1) {\n // V5+\n hardwareVersion = raw.payload[offset];\n offset++;\n if (raw.payload.length >= offset + 1) {\n // V6+\n const capabilities = raw.payload[offset];\n offset++;\n continuesToFunction = !!(capabilities & 0b1);\n // V7+\n supportsActivation = !!(capabilities & 0b10);\n // V8+\n supportsResuming = !!(capabilities & 0b1000);\n supportsNonSecureTransfer = !!(capabilities & 0b100);\n }\n }\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n firmwareId,\n checksum,\n firmwareUpgradable,\n maxFragmentSize,\n additionalFirmwareIDs,\n hardwareVersion,\n continuesToFunction,\n supportsActivation,\n supportsResuming,\n supportsNonSecureTransfer,\n });\n }\n public readonly manufacturerId: number;\n public readonly firmwareId: number;\n public readonly checksum: number;\n public readonly firmwareUpgradable: boolean;\n public readonly maxFragmentSize?: number;\n public readonly additionalFirmwareIDs: readonly number[] = [];\n public readonly hardwareVersion?: number;\n public readonly continuesToFunction: MaybeNotKnown<boolean>;\n public readonly supportsActivation: MaybeNotKnown<boolean>;\n public readonly supportsResuming?: MaybeNotKnown<boolean>;\n public readonly supportsNonSecureTransfer?: MaybeNotKnown<boolean>;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.alloc(12 + 2 * this.additionalFirmwareIDs.length);\n this.payload.writeUInt16BE(this.manufacturerId, 0);\n this.payload.writeUInt16BE(this.firmwareId, 2);\n this.payload.writeUInt16BE(this.checksum, 4);\n this.payload[6] = this.firmwareUpgradable ? 0xff : 0;\n this.payload[7] = this.additionalFirmwareIDs.length;\n this.payload.writeUInt16BE(this.maxFragmentSize ?? 0xff, 8);\n let offset = 10;\n for (const id of this.additionalFirmwareIDs) {\n this.payload.writeUInt16BE(id, offset);\n offset += 2;\n }\n this.payload[offset++] = this.hardwareVersion ?? 0xff;\n this.payload[offset++] = (this.continuesToFunction ? 0b1 : 0)\n | (this.supportsActivation ? 0b10 : 0)\n | (this.supportsNonSecureTransfer ? 0b100 : 0)\n | (this.supportsResuming ? 0b1000 : 0);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"manufacturer id\": this.manufacturerId,\n \"firmware id\": this.firmwareId,\n checksum: this.checksum,\n \"firmware upgradable\": this.firmwareUpgradable,\n };\n if (this.maxFragmentSize != undefined) {\n message[\"max fragment size\"] = this.maxFragmentSize;\n }\n if (this.additionalFirmwareIDs.length) {\n message[\"additional firmware IDs\"] = JSON.stringify(this.additionalFirmwareIDs);\n }\n if (this.hardwareVersion != undefined) {\n message[\"hardware version\"] = this.hardwareVersion;\n }\n if (this.continuesToFunction != undefined) {\n message[\"continues to function\"] = this.continuesToFunction;\n }\n if (this.supportsActivation != undefined) {\n message[\"supports activation\"] = this.supportsActivation;\n }\n if (this.supportsResuming != undefined) {\n message[\"supports resuming\"] = this.supportsResuming;\n }\n if (this.supportsNonSecureTransfer != undefined) {\n message[\"supports non-secure transfer\"] =\n this.supportsNonSecureTransfer;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.MetaDataGet)\n@expectedCCResponse(FirmwareUpdateMetaDataCCMetaDataReport)\nexport class FirmwareUpdateMetaDataCCMetaDataGet extends FirmwareUpdateMetaDataCC {\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCRequestReportOptions {\n status: FirmwareUpdateRequestStatus;\n resume?: boolean;\n nonSecureTransfer?: boolean;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.RequestReport)\nexport class FirmwareUpdateMetaDataCCRequestReport extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCRequestReportOptions>) {\n super(options);\n this.status = options.status;\n this.resume = options.resume;\n this.nonSecureTransfer = options.nonSecureTransfer;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCRequestReport {\n validatePayload(raw.payload.length >= 1);\n const status: FirmwareUpdateRequestStatus = raw.payload[0];\n let resume: boolean | undefined;\n let nonSecureTransfer: boolean | undefined;\n if (raw.payload.length >= 2) {\n resume = !!(raw.payload[1] & 0b100);\n nonSecureTransfer = !!(raw.payload[1] & 0b10);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n status,\n resume,\n nonSecureTransfer,\n });\n }\n public readonly status: FirmwareUpdateRequestStatus;\n public resume?: boolean;\n public nonSecureTransfer?: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.status,\n (this.resume ? 0b100 : 0) | (this.nonSecureTransfer ? 0b10 : 0),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n status: getEnumMemberName(FirmwareUpdateRequestStatus, this.status),\n };\n if (this.resume != undefined) {\n message.resume = this.resume;\n }\n if (this.nonSecureTransfer != undefined) {\n message[\"non-secure transfer\"] = this.nonSecureTransfer;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport type FirmwareUpdateMetaDataCCRequestGetOptions = {\n manufacturerId: number;\n firmwareId: number;\n checksum: number;\n} & AllOrNone<{\n // V3+\n firmwareTarget: number;\n fragmentSize: number;\n // V4+\n activation?: boolean;\n // V5+\n hardwareVersion?: number;\n // V8+\n resume?: boolean;\n nonSecureTransfer?: boolean;\n}>;\n@CCCommand(FirmwareUpdateMetaDataCommand.RequestGet)\n// The response may take a while to be received on some devices, so manual waiting might be required\n@expectedCCResponse(FirmwareUpdateMetaDataCCRequestReport)\nexport class FirmwareUpdateMetaDataCCRequestGet extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCRequestGetOptions>) {\n super(options);\n this.manufacturerId = options.manufacturerId;\n this.firmwareId = options.firmwareId;\n this.checksum = options.checksum;\n if (\"firmwareTarget\" in options) {\n this.firmwareTarget = options.firmwareTarget;\n this.fragmentSize = options.fragmentSize;\n this.activation = options.activation ?? false;\n this.hardwareVersion = options.hardwareVersion;\n this.resume = options.resume;\n this.nonSecureTransfer = options.nonSecureTransfer;\n }\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCRequestGet {\n validatePayload(raw.payload.length >= 6);\n const manufacturerId = raw.payload.readUInt16BE(0);\n const firmwareId = raw.payload.readUInt16BE(2);\n const checksum = raw.payload.readUInt16BE(4);\n if (raw.payload.length < 9) {\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n firmwareId,\n checksum,\n });\n }\n // V3+\n const firmwareTarget = raw.payload[6];\n const fragmentSize = raw.payload.readUInt16BE(7);\n let resume: boolean | undefined;\n let nonSecureTransfer: boolean | undefined;\n let activation: boolean | undefined;\n if (raw.payload.length >= 10) {\n // V4+\n activation = !!(raw.payload[9] & 0b1);\n nonSecureTransfer = !!(raw.payload[9] & 0b10);\n resume = !!(raw.payload[9] & 0b100);\n }\n let hardwareVersion: number | undefined;\n if (raw.payload.length >= 11) {\n // V5+\n hardwareVersion = raw.payload[10];\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n firmwareId,\n checksum,\n firmwareTarget,\n fragmentSize,\n activation,\n hardwareVersion,\n resume,\n nonSecureTransfer,\n });\n }\n public manufacturerId: number;\n public firmwareId: number;\n public checksum: number;\n public firmwareTarget?: number;\n public fragmentSize?: number;\n public activation?: boolean;\n public hardwareVersion?: number;\n public resume?: boolean;\n public nonSecureTransfer?: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.alloc(10, 0);\n this.payload.writeUInt16BE(this.manufacturerId, 0);\n this.payload.writeUInt16BE(this.firmwareId, 2);\n this.payload.writeUInt16BE(this.checksum, 4);\n this.payload[6] = this.firmwareTarget ?? 0;\n // 32 seems like a reasonable default fragment size,\n // but it should be specified anyways\n this.payload.writeUInt16BE(this.fragmentSize ?? 32, 7);\n this.payload[9] = (this.activation ? 0b1 : 0)\n | (this.nonSecureTransfer ? 0b10 : 0)\n | (this.resume ? 0b100 : 0);\n // Hardware version is not always set, but devices check it\n if (this.hardwareVersion != undefined) {\n this.payload = Bytes.concat([\n this.payload,\n [this.hardwareVersion],\n ]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"manufacturer id\": num2hex(this.manufacturerId),\n \"firmware id\": num2hex(this.firmwareId),\n checksum: num2hex(this.checksum),\n };\n if (this.firmwareTarget != undefined) {\n message[\"firmware target\"] = this.firmwareTarget;\n }\n if (this.fragmentSize != undefined) {\n message[\"fragment size\"] = this.fragmentSize;\n }\n if (this.activation != undefined) {\n message.activation = this.activation;\n }\n if (this.resume != undefined) {\n message.resume = this.resume;\n }\n if (this.nonSecureTransfer != undefined) {\n message[\"non-secure transfer\"] = this.nonSecureTransfer;\n }\n if (this.hardwareVersion != undefined) {\n message[\"hardware version\"] = this.hardwareVersion;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCGetOptions {\n numReports: number;\n reportNumber: number;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.Get)\n// This is sent to us from the node, so we expect no response\nexport class FirmwareUpdateMetaDataCCGet extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCGetOptions>) {\n super(options);\n this.numReports = options.numReports;\n this.reportNumber = options.reportNumber;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCGet {\n validatePayload(raw.payload.length >= 3);\n const numReports = raw.payload[0];\n const reportNumber = raw.payload.readUInt16BE(1) & 0x7fff;\n return new this({\n nodeId: ctx.sourceNodeId,\n numReports,\n reportNumber,\n });\n }\n public readonly numReports: number;\n public readonly reportNumber: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(3);\n this.payload[0] = this.numReports;\n this.payload.writeUInt16BE(this.reportNumber & 0x7fff, 1);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"total # of reports\": this.numReports,\n \"report number\": this.reportNumber,\n },\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCReportOptions {\n isLast: boolean;\n reportNumber: number;\n firmwareData: BytesView;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.Report)\n// We send this in reply to the Get command and expect no response\nexport class FirmwareUpdateMetaDataCCReport extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCReportOptions>) {\n super(options);\n this.reportNumber = options.reportNumber;\n this.firmwareData = options.firmwareData;\n this.isLast = options.isLast;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): FirmwareUpdateMetaDataCCReport {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new FirmwareUpdateMetaDataCCReport({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public isLast: boolean;\n public reportNumber: number;\n public firmwareData: BytesView;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const commandBuffer = Bytes.concat([\n new Bytes(2), // placeholder for report number\n this.firmwareData,\n ]);\n commandBuffer.writeUInt16BE((this.reportNumber & 0x7fff) | (this.isLast ? 0x8000 : 0), 0);\n // V1 devices would consider the checksum to be part of the firmware data\n // so it must not be included for those\n const ccVersion = getEffectiveCCVersion(ctx, this);\n if (ccVersion >= 2) {\n // Compute and save the CRC16 in the payload\n // The CC header is included in the CRC computation\n let crc = CRC16_CCITT(Bytes.from([this.ccId, this.ccCommand]));\n crc = CRC16_CCITT(commandBuffer, crc);\n this.payload = Bytes.concat([\n commandBuffer,\n new Bytes(2),\n ]);\n this.payload.writeUInt16BE(crc, this.payload.length - 2);\n }\n else {\n this.payload = commandBuffer;\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"report #\": this.reportNumber,\n \"is last\": this.isLast,\n },\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCStatusReportOptions {\n status: FirmwareUpdateStatus;\n waitTime?: number;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.StatusReport)\nexport class FirmwareUpdateMetaDataCCStatusReport extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCStatusReportOptions>) {\n super(options);\n this.status = options.status;\n this.waitTime = options.waitTime;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCStatusReport {\n validatePayload(raw.payload.length >= 1);\n const status: FirmwareUpdateStatus = raw.payload[0];\n let waitTime: number | undefined;\n if (raw.payload.length >= 3) {\n waitTime = raw.payload.readUInt16BE(1);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n status,\n waitTime,\n });\n }\n public readonly status: FirmwareUpdateStatus;\n /** The wait time in seconds before the node becomes available for communication after the update */\n public readonly waitTime?: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(3);\n this.payload[0] = this.status;\n this.payload.writeUInt16BE(this.waitTime ?? 0, 1);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n status: getEnumMemberName(FirmwareUpdateStatus, this.status),\n };\n if (this.waitTime != undefined) {\n message[\"wait time\"] = `${this.waitTime} seconds`;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCActivationReportOptions {\n manufacturerId: number;\n firmwareId: number;\n checksum: number;\n firmwareTarget: number;\n activationStatus: FirmwareUpdateActivationStatus;\n hardwareVersion?: number;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.ActivationReport)\nexport class FirmwareUpdateMetaDataCCActivationReport extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCActivationReportOptions>) {\n super(options);\n this.manufacturerId = options.manufacturerId;\n this.firmwareId = options.firmwareId;\n this.checksum = options.checksum;\n this.firmwareTarget = options.firmwareTarget;\n this.activationStatus = options.activationStatus;\n this.hardwareVersion = options.hardwareVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCActivationReport {\n validatePayload(raw.payload.length >= 8);\n const manufacturerId = raw.payload.readUInt16BE(0);\n const firmwareId = raw.payload.readUInt16BE(2);\n const checksum = raw.payload.readUInt16BE(4);\n const firmwareTarget = raw.payload[6];\n const activationStatus: FirmwareUpdateActivationStatus = raw.payload[7];\n let hardwareVersion: number | undefined;\n if (raw.payload.length >= 9) {\n // V5+\n hardwareVersion = raw.payload[8];\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n firmwareId,\n checksum,\n firmwareTarget,\n activationStatus,\n hardwareVersion,\n });\n }\n public readonly manufacturerId: number;\n public readonly firmwareId: number;\n public readonly checksum: number;\n public readonly firmwareTarget: number;\n public readonly activationStatus: FirmwareUpdateActivationStatus;\n public readonly hardwareVersion?: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(8);\n this.payload.writeUInt16BE(this.manufacturerId, 0);\n this.payload.writeUInt16BE(this.firmwareId, 2);\n this.payload.writeUInt16BE(this.checksum, 4);\n this.payload[6] = this.firmwareTarget;\n this.payload[7] = this.activationStatus;\n if (this.hardwareVersion != undefined) {\n this.payload = Bytes.concat([\n this.payload,\n [this.hardwareVersion],\n ]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"manufacturer id\": num2hex(this.manufacturerId),\n \"firmware id\": num2hex(this.firmwareId),\n checksum: num2hex(this.checksum),\n \"firmware target\": this.firmwareTarget,\n \"activation status\": getEnumMemberName(FirmwareUpdateActivationStatus, this.activationStatus),\n };\n if (this.hardwareVersion != undefined) {\n message.hardwareVersion = this.hardwareVersion;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCActivationSetOptions {\n manufacturerId: number;\n firmwareId: number;\n checksum: number;\n firmwareTarget: number;\n // V5+\n hardwareVersion?: number;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.ActivationSet)\n@expectedCCResponse(FirmwareUpdateMetaDataCCActivationReport)\nexport class FirmwareUpdateMetaDataCCActivationSet extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCActivationSetOptions>) {\n super(options);\n this.manufacturerId = options.manufacturerId;\n this.firmwareId = options.firmwareId;\n this.checksum = options.checksum;\n this.firmwareTarget = options.firmwareTarget;\n this.hardwareVersion = options.hardwareVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCActivationSet {\n validatePayload(raw.payload.length >= 7);\n const manufacturerId = raw.payload.readUInt16BE(0);\n const firmwareId = raw.payload.readUInt16BE(2);\n const checksum = raw.payload.readUInt16BE(4);\n const firmwareTarget = raw.payload[6];\n let hardwareVersion: number | undefined;\n if (raw.payload.length >= 8) {\n // V5+\n hardwareVersion = raw.payload[7];\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n firmwareId,\n checksum,\n firmwareTarget,\n hardwareVersion,\n });\n }\n public manufacturerId: number;\n public firmwareId: number;\n public checksum: number;\n public firmwareTarget: number;\n public hardwareVersion?: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(7);\n this.payload.writeUInt16BE(this.manufacturerId, 0);\n this.payload.writeUInt16BE(this.firmwareId, 2);\n this.payload.writeUInt16BE(this.checksum, 4);\n this.payload[6] = this.firmwareTarget;\n if (this.hardwareVersion != undefined) {\n this.payload = Bytes.concat([\n this.payload,\n [this.hardwareVersion],\n ]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"manufacturer id\": num2hex(this.manufacturerId),\n \"firmware id\": num2hex(this.firmwareId),\n checksum: num2hex(this.checksum),\n \"firmware target\": this.firmwareTarget,\n };\n if (this.hardwareVersion != undefined) {\n message[\"hardware version\"] = this.hardwareVersion;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCPrepareReportOptions {\n status: FirmwareDownloadStatus;\n checksum: number;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.PrepareReport)\nexport class FirmwareUpdateMetaDataCCPrepareReport extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCPrepareReportOptions>) {\n super(options);\n this.status = options.status;\n this.checksum = options.checksum;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCPrepareReport {\n validatePayload(raw.payload.length >= 3);\n const status: FirmwareDownloadStatus = raw.payload[0];\n const checksum = raw.payload.readUInt16BE(1);\n return new this({\n nodeId: ctx.sourceNodeId,\n status,\n checksum,\n });\n }\n public readonly status: FirmwareDownloadStatus;\n public readonly checksum: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(3);\n this.payload[0] = this.status;\n this.payload.writeUInt16BE(this.checksum, 1);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n status: getEnumMemberName(FirmwareDownloadStatus, this.status),\n checksum: num2hex(this.checksum),\n },\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCPrepareGetOptions {\n manufacturerId: number;\n firmwareId: number;\n firmwareTarget: number;\n fragmentSize: number;\n hardwareVersion: number;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.PrepareGet)\n@expectedCCResponse(FirmwareUpdateMetaDataCCPrepareReport)\nexport class FirmwareUpdateMetaDataCCPrepareGet extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCPrepareGetOptions>) {\n super(options);\n this.manufacturerId = options.manufacturerId;\n this.firmwareId = options.firmwareId;\n this.firmwareTarget = options.firmwareTarget;\n this.fragmentSize = options.fragmentSize;\n this.hardwareVersion = options.hardwareVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCPrepareGet {\n validatePayload(raw.payload.length >= 8);\n const manufacturerId = raw.payload.readUInt16BE(0);\n const firmwareId = raw.payload.readUInt16BE(2);\n const firmwareTarget = raw.payload[4];\n const fragmentSize = raw.payload.readUInt16BE(5);\n const hardwareVersion = raw.payload[7];\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n firmwareId,\n firmwareTarget,\n fragmentSize,\n hardwareVersion,\n });\n }\n public manufacturerId: number;\n public firmwareId: number;\n public firmwareTarget: number;\n public fragmentSize: number;\n public hardwareVersion: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(8);\n this.payload.writeUInt16BE(this.manufacturerId, 0);\n this.payload.writeUInt16BE(this.firmwareId, 2);\n this.payload[4] = this.firmwareTarget;\n this.payload.writeUInt16BE(this.fragmentSize, 5);\n this.payload[7] = this.hardwareVersion;\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"manufacturer id\": num2hex(this.manufacturerId),\n \"firmware id\": num2hex(this.firmwareId),\n \"firmware target\": this.firmwareTarget,\n \"fragment size\": this.fragmentSize,\n \"hardware version\": this.hardwareVersion,\n },\n };\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as __validateArgs from \"./FirmwareUpdateMetaDataCC._validateArgs.js\";\nconst { validateArgs_FirmwareUpdateMetaDataCCAPI_reportMetaData, validateArgs_FirmwareUpdateMetaDataCCAPI_requestUpdate, validateArgs_FirmwareUpdateMetaDataCCAPI_respondToUpdateRequest, validateArgs_FirmwareUpdateMetaDataCCAPI_respondToDownloadRequest, validateArgs_FirmwareUpdateMetaDataCCAPI_sendFirmwareFragment, validateArgs_FirmwareUpdateMetaDataCCAPI_activateFirmware } = __validateArgs;\nimport { CRC16_CCITT, CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type WithAddress, ZWaveError, ZWaveErrorCodes, validatePayload, } from \"@zwave-js/core\";\nimport { type AllOrNone, Bytes, type BytesView, getEnumMemberName, num2hex, pick, } from \"@zwave-js/shared\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, getEffectiveCCVersion, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { FirmwareDownloadStatus, FirmwareUpdateActivationStatus, type FirmwareUpdateMetaData, FirmwareUpdateMetaDataCommand, FirmwareUpdateRequestStatus, FirmwareUpdateStatus, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { FirmwareUpdateMetaDataCCValues } from \"./_CCValues.generated.js\";\nexport { FirmwareUpdateMetaDataCCValues };\n@API(CommandClasses[\"Firmware Update Meta Data\"])\nexport class FirmwareUpdateMetaDataCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: FirmwareUpdateMetaDataCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case FirmwareUpdateMetaDataCommand.MetaDataGet:\n case FirmwareUpdateMetaDataCommand.MetaDataReport:\n case FirmwareUpdateMetaDataCommand.RequestGet:\n case FirmwareUpdateMetaDataCommand.RequestReport:\n case FirmwareUpdateMetaDataCommand.Report:\n case FirmwareUpdateMetaDataCommand.StatusReport:\n return true;\n case FirmwareUpdateMetaDataCommand.ActivationSet:\n return (this.version >= 4\n && (this.version < 7\n || this.tryGetValueDB()?.getValue(FirmwareUpdateMetaDataCCValues\n .supportsActivation.endpoint(this.endpoint.index)) === true));\n case FirmwareUpdateMetaDataCommand.PrepareGet:\n case FirmwareUpdateMetaDataCommand.PrepareReport:\n return this.version >= 5;\n }\n return super.supportsCommand(cmd);\n }\n /**\n * Requests information about the current firmware on the device\n */\n public async getMetaData(): Promise<MaybeNotKnown<FirmwareUpdateMetaData>> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.MetaDataGet);\n const cc = new FirmwareUpdateMetaDataCCMetaDataGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<FirmwareUpdateMetaDataCCMetaDataReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"manufacturerId\",\n \"firmwareId\",\n \"checksum\",\n \"firmwareUpgradable\",\n \"maxFragmentSize\",\n \"additionalFirmwareIDs\",\n \"hardwareVersion\",\n \"continuesToFunction\",\n \"supportsActivation\",\n \"supportsResuming\",\n \"supportsNonSecureTransfer\",\n ]);\n }\n }\n @validateArgs_FirmwareUpdateMetaDataCCAPI_reportMetaData()\n public async reportMetaData(options: FirmwareUpdateMetaDataCCMetaDataReportOptions): Promise<void> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.Report);\n const cc = new FirmwareUpdateMetaDataCCMetaDataReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n /**\n * Requests the device to start the firmware update process and waits for a response.\n * This response may time out on some devices, in which case the caller of this method\n * should wait manually.\n */\n @validateArgs_FirmwareUpdateMetaDataCCAPI_requestUpdate()\n public requestUpdate(options: FirmwareUpdateMetaDataCCRequestGetOptions): Promise<FirmwareUpdateMetaDataCCRequestReport | undefined> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.RequestGet);\n const cc = new FirmwareUpdateMetaDataCCRequestGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n /**\n * Responds to a firmware update request\n */\n @validateArgs_FirmwareUpdateMetaDataCCAPI_respondToUpdateRequest()\n public async respondToUpdateRequest(options: FirmwareUpdateMetaDataCCRequestReportOptions): Promise<void> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.RequestReport);\n const cc = new FirmwareUpdateMetaDataCCRequestReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, {\n ...this.commandOptions,\n // Do not wait for Nonce Reports\n s2VerifyDelivery: false,\n });\n }\n /**\n * Responds to a firmware download request\n */\n @validateArgs_FirmwareUpdateMetaDataCCAPI_respondToDownloadRequest()\n public async respondToDownloadRequest(options: FirmwareUpdateMetaDataCCPrepareReportOptions): Promise<void> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.PrepareReport);\n const cc = new FirmwareUpdateMetaDataCCPrepareReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, {\n ...this.commandOptions,\n // Do not wait for Nonce Reports\n s2VerifyDelivery: false,\n });\n }\n /**\n * Sends a fragment of the new firmware to the device\n */\n @validateArgs_FirmwareUpdateMetaDataCCAPI_sendFirmwareFragment()\n public async sendFirmwareFragment(fragmentNumber: number, isLastFragment: boolean, data: BytesView): Promise<void> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.Report);\n const cc = new FirmwareUpdateMetaDataCCReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n reportNumber: fragmentNumber,\n isLast: isLastFragment,\n firmwareData: data,\n });\n await this.host.sendCommand(cc, {\n ...this.commandOptions,\n // Do not wait for Nonce Reports\n s2VerifyDelivery: false,\n });\n }\n /** Activates a previously transferred firmware image */\n @validateArgs_FirmwareUpdateMetaDataCCAPI_activateFirmware()\n public async activateFirmware(options: FirmwareUpdateMetaDataCCActivationSetOptions): Promise<MaybeNotKnown<FirmwareUpdateActivationStatus>> {\n this.assertSupportsCommand(FirmwareUpdateMetaDataCommand, FirmwareUpdateMetaDataCommand.ActivationSet);\n const cc = new FirmwareUpdateMetaDataCCActivationSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n const response = await this.host.sendCommand<FirmwareUpdateMetaDataCCActivationReport>(cc, this.commandOptions);\n return response?.activationStatus;\n }\n}\n@commandClass(CommandClasses[\"Firmware Update Meta Data\"])\n@implementedVersion(8)\n@ccValues(FirmwareUpdateMetaDataCCValues)\nexport class FirmwareUpdateMetaDataCC extends CommandClass {\n declare ccCommand: FirmwareUpdateMetaDataCommand;\n public skipEndpointInterview(): boolean {\n return true;\n }\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Firmware Update Meta Data\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Querying firmware update capabilities...\",\n direction: \"outbound\",\n });\n const caps = await api.getMetaData();\n if (caps) {\n let logMessage = `Received firmware update capabilities:`;\n if (caps.firmwareUpgradable) {\n logMessage += `\n firmware targets: ${[0, ...caps.additionalFirmwareIDs].join(\", \")}\n continues to function: ${caps.continuesToFunction}\n supports activation: ${caps.supportsActivation}`;\n if (caps.supportsResuming != undefined) {\n logMessage += `\n supports resuming: ${caps.supportsResuming}`;\n }\n if (caps.supportsNonSecureTransfer != undefined) {\n logMessage += `\n supports non-secure transfer: ${caps.supportsNonSecureTransfer}`;\n }\n }\n else {\n logMessage += `\\nfirmware upgradeable: false`;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Firmware update capability query timed out\",\n direction: \"inbound\",\n });\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCMetaDataReportOptions {\n manufacturerId: number;\n firmwareId?: number;\n checksum?: number;\n firmwareUpgradable: boolean;\n maxFragmentSize?: number;\n additionalFirmwareIDs?: readonly number[];\n hardwareVersion?: number;\n continuesToFunction?: MaybeNotKnown<boolean>;\n supportsActivation?: MaybeNotKnown<boolean>;\n supportsResuming?: MaybeNotKnown<boolean>;\n supportsNonSecureTransfer?: MaybeNotKnown<boolean>;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.MetaDataReport)\n@ccValueProperty(\"firmwareUpgradable\", FirmwareUpdateMetaDataCCValues.firmwareUpgradable)\n@ccValueProperty(\"additionalFirmwareIDs\", FirmwareUpdateMetaDataCCValues.additionalFirmwareIDs)\n@ccValueProperty(\"continuesToFunction\", FirmwareUpdateMetaDataCCValues.continuesToFunction)\n@ccValueProperty(\"supportsActivation\", FirmwareUpdateMetaDataCCValues.supportsActivation)\n@ccValueProperty(\"supportsResuming\", FirmwareUpdateMetaDataCCValues.supportsResuming)\n@ccValueProperty(\"supportsNonSecureTransfer\", FirmwareUpdateMetaDataCCValues.supportsNonSecureTransfer)\nexport class FirmwareUpdateMetaDataCCMetaDataReport extends FirmwareUpdateMetaDataCC implements FirmwareUpdateMetaData {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCMetaDataReportOptions>) {\n super(options);\n this.manufacturerId = options.manufacturerId;\n this.firmwareId = options.firmwareId ?? 0;\n this.checksum = options.checksum ?? 0;\n this.firmwareUpgradable = options.firmwareUpgradable;\n this.maxFragmentSize = options.maxFragmentSize;\n this.additionalFirmwareIDs = options.additionalFirmwareIDs ?? [];\n this.hardwareVersion = options.hardwareVersion;\n this.continuesToFunction = options.continuesToFunction;\n this.supportsActivation = options.supportsActivation;\n this.supportsResuming = options.supportsResuming;\n this.supportsNonSecureTransfer = options.supportsNonSecureTransfer;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCMetaDataReport {\n validatePayload(raw.payload.length >= 6);\n const manufacturerId = raw.payload.readUInt16BE(0);\n const firmwareId = raw.payload.readUInt16BE(2);\n const checksum = raw.payload.readUInt16BE(4);\n // V1/V2 only have a single firmware which must be upgradable\n const firmwareUpgradable = raw.payload[6] === 0xff\n || raw.payload[6] == undefined;\n let maxFragmentSize: number | undefined;\n let additionalFirmwareIDs: number[] | undefined;\n let hardwareVersion: number | undefined;\n let continuesToFunction: MaybeNotKnown<boolean>;\n let supportsActivation: MaybeNotKnown<boolean>;\n let supportsResuming: MaybeNotKnown<boolean>;\n let supportsNonSecureTransfer: MaybeNotKnown<boolean>;\n if (raw.payload.length >= 10) {\n // V3+\n maxFragmentSize = raw.payload.readUInt16BE(8);\n // Read variable length list of additional firmwares\n const numAdditionalFirmwares = raw.payload[7];\n additionalFirmwareIDs = [];\n validatePayload(raw.payload.length >= 10 + 2 * numAdditionalFirmwares);\n for (let i = 0; i < numAdditionalFirmwares; i++) {\n additionalFirmwareIDs.push(raw.payload.readUInt16BE(10 + 2 * i));\n }\n // Read hardware version (if it exists)\n let offset = 10 + 2 * numAdditionalFirmwares;\n if (raw.payload.length >= offset + 1) {\n // V5+\n hardwareVersion = raw.payload[offset];\n offset++;\n if (raw.payload.length >= offset + 1) {\n // V6+\n const capabilities = raw.payload[offset];\n offset++;\n continuesToFunction = !!(capabilities & 0b1);\n // V7+\n supportsActivation = !!(capabilities & 0b10);\n // V8+\n supportsResuming = !!(capabilities & 0b1000);\n supportsNonSecureTransfer = !!(capabilities & 0b100);\n }\n }\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n firmwareId,\n checksum,\n firmwareUpgradable,\n maxFragmentSize,\n additionalFirmwareIDs,\n hardwareVersion,\n continuesToFunction,\n supportsActivation,\n supportsResuming,\n supportsNonSecureTransfer,\n });\n }\n public readonly manufacturerId: number;\n public readonly firmwareId: number;\n public readonly checksum: number;\n public readonly firmwareUpgradable: boolean;\n public readonly maxFragmentSize?: number;\n public readonly additionalFirmwareIDs: readonly number[] = [];\n public readonly hardwareVersion?: number;\n public readonly continuesToFunction: MaybeNotKnown<boolean>;\n public readonly supportsActivation: MaybeNotKnown<boolean>;\n public readonly supportsResuming?: MaybeNotKnown<boolean>;\n public readonly supportsNonSecureTransfer?: MaybeNotKnown<boolean>;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.alloc(12 + 2 * this.additionalFirmwareIDs.length);\n this.payload.writeUInt16BE(this.manufacturerId, 0);\n this.payload.writeUInt16BE(this.firmwareId, 2);\n this.payload.writeUInt16BE(this.checksum, 4);\n this.payload[6] = this.firmwareUpgradable ? 0xff : 0;\n this.payload[7] = this.additionalFirmwareIDs.length;\n this.payload.writeUInt16BE(this.maxFragmentSize ?? 0xff, 8);\n let offset = 10;\n for (const id of this.additionalFirmwareIDs) {\n this.payload.writeUInt16BE(id, offset);\n offset += 2;\n }\n this.payload[offset++] = this.hardwareVersion ?? 0xff;\n this.payload[offset++] = (this.continuesToFunction ? 0b1 : 0)\n | (this.supportsActivation ? 0b10 : 0)\n | (this.supportsNonSecureTransfer ? 0b100 : 0)\n | (this.supportsResuming ? 0b1000 : 0);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"manufacturer id\": this.manufacturerId,\n \"firmware id\": this.firmwareId,\n checksum: this.checksum,\n \"firmware upgradable\": this.firmwareUpgradable,\n };\n if (this.maxFragmentSize != undefined) {\n message[\"max fragment size\"] = this.maxFragmentSize;\n }\n if (this.additionalFirmwareIDs.length) {\n message[\"additional firmware IDs\"] = JSON.stringify(this.additionalFirmwareIDs);\n }\n if (this.hardwareVersion != undefined) {\n message[\"hardware version\"] = this.hardwareVersion;\n }\n if (this.continuesToFunction != undefined) {\n message[\"continues to function\"] = this.continuesToFunction;\n }\n if (this.supportsActivation != undefined) {\n message[\"supports activation\"] = this.supportsActivation;\n }\n if (this.supportsResuming != undefined) {\n message[\"supports resuming\"] = this.supportsResuming;\n }\n if (this.supportsNonSecureTransfer != undefined) {\n message[\"supports non-secure transfer\"] =\n this.supportsNonSecureTransfer;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.MetaDataGet)\n@expectedCCResponse(FirmwareUpdateMetaDataCCMetaDataReport)\nexport class FirmwareUpdateMetaDataCCMetaDataGet extends FirmwareUpdateMetaDataCC {\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCRequestReportOptions {\n status: FirmwareUpdateRequestStatus;\n resume?: boolean;\n nonSecureTransfer?: boolean;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.RequestReport)\nexport class FirmwareUpdateMetaDataCCRequestReport extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCRequestReportOptions>) {\n super(options);\n this.status = options.status;\n this.resume = options.resume;\n this.nonSecureTransfer = options.nonSecureTransfer;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCRequestReport {\n validatePayload(raw.payload.length >= 1);\n const status: FirmwareUpdateRequestStatus = raw.payload[0];\n let resume: boolean | undefined;\n let nonSecureTransfer: boolean | undefined;\n if (raw.payload.length >= 2) {\n resume = !!(raw.payload[1] & 0b100);\n nonSecureTransfer = !!(raw.payload[1] & 0b10);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n status,\n resume,\n nonSecureTransfer,\n });\n }\n public readonly status: FirmwareUpdateRequestStatus;\n public resume?: boolean;\n public nonSecureTransfer?: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.status,\n (this.resume ? 0b100 : 0) | (this.nonSecureTransfer ? 0b10 : 0),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n status: getEnumMemberName(FirmwareUpdateRequestStatus, this.status),\n };\n if (this.resume != undefined) {\n message.resume = this.resume;\n }\n if (this.nonSecureTransfer != undefined) {\n message[\"non-secure transfer\"] = this.nonSecureTransfer;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport type FirmwareUpdateMetaDataCCRequestGetOptions = {\n manufacturerId: number;\n firmwareId: number;\n checksum: number;\n} & AllOrNone<{\n // V3+\n firmwareTarget: number;\n fragmentSize: number;\n // V4+\n activation?: boolean;\n // V5+\n hardwareVersion?: number;\n // V8+\n resume?: boolean;\n nonSecureTransfer?: boolean;\n}>;\n@CCCommand(FirmwareUpdateMetaDataCommand.RequestGet)\n// The response may take a while to be received on some devices, so manual waiting might be required\n@expectedCCResponse(FirmwareUpdateMetaDataCCRequestReport)\nexport class FirmwareUpdateMetaDataCCRequestGet extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCRequestGetOptions>) {\n super(options);\n this.manufacturerId = options.manufacturerId;\n this.firmwareId = options.firmwareId;\n this.checksum = options.checksum;\n if (\"firmwareTarget\" in options) {\n this.firmwareTarget = options.firmwareTarget;\n this.fragmentSize = options.fragmentSize;\n this.activation = options.activation ?? false;\n this.hardwareVersion = options.hardwareVersion;\n this.resume = options.resume;\n this.nonSecureTransfer = options.nonSecureTransfer;\n }\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCRequestGet {\n validatePayload(raw.payload.length >= 6);\n const manufacturerId = raw.payload.readUInt16BE(0);\n const firmwareId = raw.payload.readUInt16BE(2);\n const checksum = raw.payload.readUInt16BE(4);\n if (raw.payload.length < 9) {\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n firmwareId,\n checksum,\n });\n }\n // V3+\n const firmwareTarget = raw.payload[6];\n const fragmentSize = raw.payload.readUInt16BE(7);\n let resume: boolean | undefined;\n let nonSecureTransfer: boolean | undefined;\n let activation: boolean | undefined;\n if (raw.payload.length >= 10) {\n // V4+\n activation = !!(raw.payload[9] & 0b1);\n nonSecureTransfer = !!(raw.payload[9] & 0b10);\n resume = !!(raw.payload[9] & 0b100);\n }\n let hardwareVersion: number | undefined;\n if (raw.payload.length >= 11) {\n // V5+\n hardwareVersion = raw.payload[10];\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n firmwareId,\n checksum,\n firmwareTarget,\n fragmentSize,\n activation,\n hardwareVersion,\n resume,\n nonSecureTransfer,\n });\n }\n public manufacturerId: number;\n public firmwareId: number;\n public checksum: number;\n public firmwareTarget?: number;\n public fragmentSize?: number;\n public activation?: boolean;\n public hardwareVersion?: number;\n public resume?: boolean;\n public nonSecureTransfer?: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.alloc(10, 0);\n this.payload.writeUInt16BE(this.manufacturerId, 0);\n this.payload.writeUInt16BE(this.firmwareId, 2);\n this.payload.writeUInt16BE(this.checksum, 4);\n this.payload[6] = this.firmwareTarget ?? 0;\n // 32 seems like a reasonable default fragment size,\n // but it should be specified anyways\n this.payload.writeUInt16BE(this.fragmentSize ?? 32, 7);\n this.payload[9] = (this.activation ? 0b1 : 0)\n | (this.nonSecureTransfer ? 0b10 : 0)\n | (this.resume ? 0b100 : 0);\n // Hardware version is not always set, but devices check it\n if (this.hardwareVersion != undefined) {\n this.payload = Bytes.concat([\n this.payload,\n [this.hardwareVersion],\n ]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"manufacturer id\": num2hex(this.manufacturerId),\n \"firmware id\": num2hex(this.firmwareId),\n checksum: num2hex(this.checksum),\n };\n if (this.firmwareTarget != undefined) {\n message[\"firmware target\"] = this.firmwareTarget;\n }\n if (this.fragmentSize != undefined) {\n message[\"fragment size\"] = this.fragmentSize;\n }\n if (this.activation != undefined) {\n message.activation = this.activation;\n }\n if (this.resume != undefined) {\n message.resume = this.resume;\n }\n if (this.nonSecureTransfer != undefined) {\n message[\"non-secure transfer\"] = this.nonSecureTransfer;\n }\n if (this.hardwareVersion != undefined) {\n message[\"hardware version\"] = this.hardwareVersion;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCGetOptions {\n numReports: number;\n reportNumber: number;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.Get)\n// This is sent to us from the node, so we expect no response\nexport class FirmwareUpdateMetaDataCCGet extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCGetOptions>) {\n super(options);\n this.numReports = options.numReports;\n this.reportNumber = options.reportNumber;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCGet {\n validatePayload(raw.payload.length >= 3);\n const numReports = raw.payload[0];\n const reportNumber = raw.payload.readUInt16BE(1) & 0x7fff;\n return new this({\n nodeId: ctx.sourceNodeId,\n numReports,\n reportNumber,\n });\n }\n public readonly numReports: number;\n public readonly reportNumber: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(3);\n this.payload[0] = this.numReports;\n this.payload.writeUInt16BE(this.reportNumber & 0x7fff, 1);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"total # of reports\": this.numReports,\n \"report number\": this.reportNumber,\n },\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCReportOptions {\n isLast: boolean;\n reportNumber: number;\n firmwareData: BytesView;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.Report)\n// We send this in reply to the Get command and expect no response\nexport class FirmwareUpdateMetaDataCCReport extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCReportOptions>) {\n super(options);\n this.reportNumber = options.reportNumber;\n this.firmwareData = options.firmwareData;\n this.isLast = options.isLast;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): FirmwareUpdateMetaDataCCReport {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new FirmwareUpdateMetaDataCCReport({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public isLast: boolean;\n public reportNumber: number;\n public firmwareData: BytesView;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const commandBuffer = Bytes.concat([\n new Bytes(2), // placeholder for report number\n this.firmwareData,\n ]);\n commandBuffer.writeUInt16BE((this.reportNumber & 0x7fff) | (this.isLast ? 0x8000 : 0), 0);\n // V1 devices would consider the checksum to be part of the firmware data\n // so it must not be included for those\n const ccVersion = getEffectiveCCVersion(ctx, this);\n if (ccVersion >= 2) {\n // Compute and save the CRC16 in the payload\n // The CC header is included in the CRC computation\n let crc = CRC16_CCITT(Bytes.from([this.ccId, this.ccCommand]));\n crc = CRC16_CCITT(commandBuffer, crc);\n this.payload = Bytes.concat([\n commandBuffer,\n new Bytes(2),\n ]);\n this.payload.writeUInt16BE(crc, this.payload.length - 2);\n }\n else {\n this.payload = commandBuffer;\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"report #\": this.reportNumber,\n \"is last\": this.isLast,\n },\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCStatusReportOptions {\n status: FirmwareUpdateStatus;\n waitTime?: number;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.StatusReport)\nexport class FirmwareUpdateMetaDataCCStatusReport extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCStatusReportOptions>) {\n super(options);\n this.status = options.status;\n this.waitTime = options.waitTime;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCStatusReport {\n validatePayload(raw.payload.length >= 1);\n const status: FirmwareUpdateStatus = raw.payload[0];\n let waitTime: number | undefined;\n if (raw.payload.length >= 3) {\n waitTime = raw.payload.readUInt16BE(1);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n status,\n waitTime,\n });\n }\n public readonly status: FirmwareUpdateStatus;\n /** The wait time in seconds before the node becomes available for communication after the update */\n public readonly waitTime?: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(3);\n this.payload[0] = this.status;\n this.payload.writeUInt16BE(this.waitTime ?? 0, 1);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n status: getEnumMemberName(FirmwareUpdateStatus, this.status),\n };\n if (this.waitTime != undefined) {\n message[\"wait time\"] = `${this.waitTime} seconds`;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCActivationReportOptions {\n manufacturerId: number;\n firmwareId: number;\n checksum: number;\n firmwareTarget: number;\n activationStatus: FirmwareUpdateActivationStatus;\n hardwareVersion?: number;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.ActivationReport)\nexport class FirmwareUpdateMetaDataCCActivationReport extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCActivationReportOptions>) {\n super(options);\n this.manufacturerId = options.manufacturerId;\n this.firmwareId = options.firmwareId;\n this.checksum = options.checksum;\n this.firmwareTarget = options.firmwareTarget;\n this.activationStatus = options.activationStatus;\n this.hardwareVersion = options.hardwareVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCActivationReport {\n validatePayload(raw.payload.length >= 8);\n const manufacturerId = raw.payload.readUInt16BE(0);\n const firmwareId = raw.payload.readUInt16BE(2);\n const checksum = raw.payload.readUInt16BE(4);\n const firmwareTarget = raw.payload[6];\n const activationStatus: FirmwareUpdateActivationStatus = raw.payload[7];\n let hardwareVersion: number | undefined;\n if (raw.payload.length >= 9) {\n // V5+\n hardwareVersion = raw.payload[8];\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n firmwareId,\n checksum,\n firmwareTarget,\n activationStatus,\n hardwareVersion,\n });\n }\n public readonly manufacturerId: number;\n public readonly firmwareId: number;\n public readonly checksum: number;\n public readonly firmwareTarget: number;\n public readonly activationStatus: FirmwareUpdateActivationStatus;\n public readonly hardwareVersion?: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(8);\n this.payload.writeUInt16BE(this.manufacturerId, 0);\n this.payload.writeUInt16BE(this.firmwareId, 2);\n this.payload.writeUInt16BE(this.checksum, 4);\n this.payload[6] = this.firmwareTarget;\n this.payload[7] = this.activationStatus;\n if (this.hardwareVersion != undefined) {\n this.payload = Bytes.concat([\n this.payload,\n [this.hardwareVersion],\n ]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"manufacturer id\": num2hex(this.manufacturerId),\n \"firmware id\": num2hex(this.firmwareId),\n checksum: num2hex(this.checksum),\n \"firmware target\": this.firmwareTarget,\n \"activation status\": getEnumMemberName(FirmwareUpdateActivationStatus, this.activationStatus),\n };\n if (this.hardwareVersion != undefined) {\n message.hardwareVersion = this.hardwareVersion;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCActivationSetOptions {\n manufacturerId: number;\n firmwareId: number;\n checksum: number;\n firmwareTarget: number;\n // V5+\n hardwareVersion?: number;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.ActivationSet)\n@expectedCCResponse(FirmwareUpdateMetaDataCCActivationReport)\nexport class FirmwareUpdateMetaDataCCActivationSet extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCActivationSetOptions>) {\n super(options);\n this.manufacturerId = options.manufacturerId;\n this.firmwareId = options.firmwareId;\n this.checksum = options.checksum;\n this.firmwareTarget = options.firmwareTarget;\n this.hardwareVersion = options.hardwareVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCActivationSet {\n validatePayload(raw.payload.length >= 7);\n const manufacturerId = raw.payload.readUInt16BE(0);\n const firmwareId = raw.payload.readUInt16BE(2);\n const checksum = raw.payload.readUInt16BE(4);\n const firmwareTarget = raw.payload[6];\n let hardwareVersion: number | undefined;\n if (raw.payload.length >= 8) {\n // V5+\n hardwareVersion = raw.payload[7];\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n firmwareId,\n checksum,\n firmwareTarget,\n hardwareVersion,\n });\n }\n public manufacturerId: number;\n public firmwareId: number;\n public checksum: number;\n public firmwareTarget: number;\n public hardwareVersion?: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(7);\n this.payload.writeUInt16BE(this.manufacturerId, 0);\n this.payload.writeUInt16BE(this.firmwareId, 2);\n this.payload.writeUInt16BE(this.checksum, 4);\n this.payload[6] = this.firmwareTarget;\n if (this.hardwareVersion != undefined) {\n this.payload = Bytes.concat([\n this.payload,\n [this.hardwareVersion],\n ]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"manufacturer id\": num2hex(this.manufacturerId),\n \"firmware id\": num2hex(this.firmwareId),\n checksum: num2hex(this.checksum),\n \"firmware target\": this.firmwareTarget,\n };\n if (this.hardwareVersion != undefined) {\n message[\"hardware version\"] = this.hardwareVersion;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCPrepareReportOptions {\n status: FirmwareDownloadStatus;\n checksum: number;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.PrepareReport)\nexport class FirmwareUpdateMetaDataCCPrepareReport extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCPrepareReportOptions>) {\n super(options);\n this.status = options.status;\n this.checksum = options.checksum;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCPrepareReport {\n validatePayload(raw.payload.length >= 3);\n const status: FirmwareDownloadStatus = raw.payload[0];\n const checksum = raw.payload.readUInt16BE(1);\n return new this({\n nodeId: ctx.sourceNodeId,\n status,\n checksum,\n });\n }\n public readonly status: FirmwareDownloadStatus;\n public readonly checksum: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(3);\n this.payload[0] = this.status;\n this.payload.writeUInt16BE(this.checksum, 1);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n status: getEnumMemberName(FirmwareDownloadStatus, this.status),\n checksum: num2hex(this.checksum),\n },\n };\n }\n}\n// @publicAPI\nexport interface FirmwareUpdateMetaDataCCPrepareGetOptions {\n manufacturerId: number;\n firmwareId: number;\n firmwareTarget: number;\n fragmentSize: number;\n hardwareVersion: number;\n}\n@CCCommand(FirmwareUpdateMetaDataCommand.PrepareGet)\n@expectedCCResponse(FirmwareUpdateMetaDataCCPrepareReport)\nexport class FirmwareUpdateMetaDataCCPrepareGet extends FirmwareUpdateMetaDataCC {\n public constructor(options: WithAddress<FirmwareUpdateMetaDataCCPrepareGetOptions>) {\n super(options);\n this.manufacturerId = options.manufacturerId;\n this.firmwareId = options.firmwareId;\n this.firmwareTarget = options.firmwareTarget;\n this.fragmentSize = options.fragmentSize;\n this.hardwareVersion = options.hardwareVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FirmwareUpdateMetaDataCCPrepareGet {\n validatePayload(raw.payload.length >= 8);\n const manufacturerId = raw.payload.readUInt16BE(0);\n const firmwareId = raw.payload.readUInt16BE(2);\n const firmwareTarget = raw.payload[4];\n const fragmentSize = raw.payload.readUInt16BE(5);\n const hardwareVersion = raw.payload[7];\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n firmwareId,\n firmwareTarget,\n fragmentSize,\n hardwareVersion,\n });\n }\n public manufacturerId: number;\n public firmwareId: number;\n public firmwareTarget: number;\n public fragmentSize: number;\n public hardwareVersion: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(8);\n this.payload.writeUInt16BE(this.manufacturerId, 0);\n this.payload.writeUInt16BE(this.firmwareId, 2);\n this.payload[4] = this.firmwareTarget;\n this.payload.writeUInt16BE(this.fragmentSize, 5);\n this.payload[7] = this.hardwareVersion;\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"manufacturer id\": num2hex(this.manufacturerId),\n \"firmware id\": num2hex(this.firmwareId),\n \"firmware target\": this.firmwareTarget,\n \"fragment size\": this.fragmentSize,\n \"hardware version\": this.hardwareVersion,\n },\n };\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -169,7 +169,8 @@ let HumidityControlModeCC = (() => {
169
169
  const node = this.getNode(ctx);
170
170
  const endpoint = this.getEndpoint(ctx);
171
171
  const api = import_API.CCAPI.create(import_core.CommandClasses["Humidity Control Mode"], ctx, endpoint).withOptions({
172
- priority: import_core.MessagePriority.NodeQuery
172
+ priority: import_core.MessagePriority.NodeQuery,
173
+ tag: "interview"
173
174
  });
174
175
  ctx.logNode(node.id, {
175
176
  endpoint: this.endpointIndex,
@@ -183,11 +184,11 @@ let HumidityControlModeCC = (() => {
183
184
  });
184
185
  const supportedModes = await api.getSupportedModes();
185
186
  if (supportedModes) {
186
- const logMessage = `received supported humidity control modes:${supportedModes.map((mode) => `
187
- \xB7 ${(0, import_shared.getEnumMemberName)(import_Types.HumidityControlMode, mode)}`).join("")}`;
188
187
  ctx.logNode(node.id, {
189
188
  endpoint: this.endpointIndex,
190
- message: logMessage,
189
+ message: (0, import_core.logText)("received supported humidity control modes:", {
190
+ nested: (0, import_core.logList)(supportedModes.map((mode) => (0, import_shared.getEnumMemberName)(import_Types.HumidityControlMode, mode)))
191
+ }),
191
192
  direction: "inbound"
192
193
  });
193
194
  } else {
@@ -198,14 +199,15 @@ let HumidityControlModeCC = (() => {
198
199
  });
199
200
  return;
200
201
  }
201
- await this.refreshValues(ctx);
202
+ await this.refreshValues(ctx, { tag: "interview" });
202
203
  this.setInterviewComplete(ctx, true);
203
204
  }
204
205
  async refreshValues(ctx, options) {
205
206
  const node = this.getNode(ctx);
206
207
  const endpoint = this.getEndpoint(ctx);
207
208
  const api = import_API.CCAPI.create(import_core.CommandClasses["Humidity Control Mode"], ctx, endpoint).withOptions({
208
- priority: options?.priority ?? import_core.MessagePriority.NodeQuery
209
+ priority: options?.priority ?? import_core.MessagePriority.NodeQuery,
210
+ tag: options?.tag
209
211
  });
210
212
  ctx.logNode(node.id, {
211
213
  endpoint: this.endpointIndex,
@@ -384,8 +386,7 @@ let HumidityControlModeCCSupportedReport = (() => {
384
386
  return {
385
387
  ...super.toLogEntry(ctx),
386
388
  message: {
387
- "supported modes": this.supportedModes.map((mode) => `
388
- \xB7 ${(0, import_shared.getEnumMemberName)(import_Types.HumidityControlMode, mode)}`).join("")
389
+ "supported modes": (0, import_core.logList)(this.supportedModes.map((mode) => (0, import_shared.getEnumMemberName)(import_Types.HumidityControlMode, mode)))
389
390
  }
390
391
  };
391
392
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/HumidityControlModeCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./HumidityControlModeCC._validateArgs.js\";\nconst { validateArgs_HumidityControlModeCCAPI_set } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type SupervisionResult, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, enumValuesToMetadataStates, parseBitMask, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwUnsupportedProperty, throwWrongValueType, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { HumidityControlMode, HumidityControlModeCommand, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { HumidityControlModeCCValues } from \"./_CCValues.generated.js\";\nexport { HumidityControlModeCCValues };\n@API(CommandClasses[\"Humidity Control Mode\"])\nexport class HumidityControlModeCCAPI extends CCAPI {\n public supportsCommand(cmd: HumidityControlModeCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case HumidityControlModeCommand.Get:\n case HumidityControlModeCommand.SupportedGet:\n return this.isSinglecast();\n case HumidityControlModeCommand.Set:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: HumidityControlModeCCAPI, { property }, value) {\n if (property === \"mode\") {\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n }\n else {\n throwUnsupportedProperty(this.ccId, property);\n }\n const result = await this.set(value);\n // Verify the change after a delay, unless the command was supervised and successful\n if (this.isSinglecast() && !supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value);\n }\n return result;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: HumidityControlModeCCAPI, { property }) {\n switch (property) {\n case \"mode\":\n return this.get();\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n public async get(): Promise<MaybeNotKnown<HumidityControlMode>> {\n this.assertSupportsCommand(HumidityControlModeCommand, HumidityControlModeCommand.Get);\n const cc = new HumidityControlModeCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<HumidityControlModeCCReport>(cc, this.commandOptions);\n if (response) {\n return response?.mode;\n }\n }\n @validateArgs_HumidityControlModeCCAPI_set()\n public async set(mode: HumidityControlMode): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(HumidityControlModeCommand, HumidityControlModeCommand.Set);\n const cc = new HumidityControlModeCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n mode,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n public async getSupportedModes(): Promise<MaybeNotKnown<readonly HumidityControlMode[]>> {\n this.assertSupportsCommand(HumidityControlModeCommand, HumidityControlModeCommand.SupportedGet);\n const cc = new HumidityControlModeCCSupportedGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<HumidityControlModeCCSupportedReport>(cc, this.commandOptions);\n return response?.supportedModes;\n }\n}\n@commandClass(CommandClasses[\"Humidity Control Mode\"])\n@implementedVersion(1)\n@ccValues(HumidityControlModeCCValues)\nexport class HumidityControlModeCC extends CommandClass {\n declare ccCommand: HumidityControlModeCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Humidity Control Mode\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n // First query the possible modes to set the metadata\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying supported humidity control modes...\",\n direction: \"outbound\",\n });\n const supportedModes = await api.getSupportedModes();\n if (supportedModes) {\n const logMessage = `received supported humidity control modes:${supportedModes\n .map((mode) => `\\n\u00B7 ${getEnumMemberName(HumidityControlMode, mode)}`)\n .join(\"\")}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Querying supported humidity control modes timed out, skipping interview...\",\n level: \"warn\",\n });\n return;\n }\n await this.refreshValues(ctx);\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Humidity Control Mode\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n });\n // Query the current status\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying current humidity control mode...\",\n direction: \"outbound\",\n });\n const currentMode = await api.get();\n if (currentMode) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"received current humidity control mode: \"\n + getEnumMemberName(HumidityControlMode, currentMode),\n direction: \"inbound\",\n });\n }\n }\n}\n// @publicAPI\nexport interface HumidityControlModeCCSetOptions {\n mode: HumidityControlMode;\n}\n@CCCommand(HumidityControlModeCommand.Set)\n@useSupervision()\nexport class HumidityControlModeCCSet extends HumidityControlModeCC {\n public constructor(options: WithAddress<HumidityControlModeCCSetOptions>) {\n super(options);\n this.mode = options.mode;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): HumidityControlModeCCSet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new HumidityControlModeCCSet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public mode: HumidityControlMode;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.mode & 0b1111]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n mode: getEnumMemberName(HumidityControlMode, this.mode),\n },\n };\n }\n}\n// @publicAPI\nexport interface HumidityControlModeCCReportOptions {\n mode: HumidityControlMode;\n}\n@CCCommand(HumidityControlModeCommand.Report)\n@ccValueProperty(\"mode\", HumidityControlModeCCValues.mode)\nexport class HumidityControlModeCCReport extends HumidityControlModeCC {\n public constructor(options: WithAddress<HumidityControlModeCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.mode = options.mode;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): HumidityControlModeCCReport {\n validatePayload(raw.payload.length >= 1);\n const mode: HumidityControlMode = raw.payload[0] & 0b1111;\n return new this({\n nodeId: ctx.sourceNodeId,\n mode,\n });\n }\n public readonly mode: HumidityControlMode;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n mode: getEnumMemberName(HumidityControlMode, this.mode),\n },\n };\n }\n}\n@CCCommand(HumidityControlModeCommand.Get)\n@expectedCCResponse(HumidityControlModeCCReport)\nexport class HumidityControlModeCCGet extends HumidityControlModeCC {\n}\n// @publicAPI\nexport interface HumidityControlModeCCSupportedReportOptions {\n supportedModes: HumidityControlMode[];\n}\n@CCCommand(HumidityControlModeCommand.SupportedReport)\n@ccValueProperty(\"supportedModes\", HumidityControlModeCCValues.supportedModes)\nexport class HumidityControlModeCCSupportedReport extends HumidityControlModeCC {\n public constructor(options: WithAddress<HumidityControlModeCCSupportedReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.supportedModes = options.supportedModes;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): HumidityControlModeCCSupportedReport {\n validatePayload(raw.payload.length >= 1);\n const supportedModes: HumidityControlMode[] = parseBitMask(raw.payload, HumidityControlMode.Off);\n if (!supportedModes.includes(HumidityControlMode.Off)) {\n supportedModes.unshift(HumidityControlMode.Off);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedModes,\n });\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // Use this information to create the metadata for the mode property\n const modeValue = HumidityControlModeCCValues.mode;\n this.setMetadata(ctx, modeValue, {\n ...modeValue.meta,\n states: enumValuesToMetadataStates(HumidityControlMode, this.supportedModes),\n });\n return true;\n }\n public supportedModes: HumidityControlMode[];\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supported modes\": this.supportedModes\n .map((mode) => `\\n\u00B7 ${getEnumMemberName(HumidityControlMode, mode)}`)\n .join(\"\"),\n },\n };\n }\n}\n@CCCommand(HumidityControlModeCommand.SupportedGet)\n@expectedCCResponse(HumidityControlModeCCSupportedReport)\nexport class HumidityControlModeCCSupportedGet extends HumidityControlModeCC {\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qBAAgC;AAEhC,kBAA6R;AAC7R,oBAAyC;AACzC,iBAAwJ;AACxJ,0BAAkJ;AAClJ,oCAAiI;AAEjI,mBAAiE;AAEjE,gCAA4C;AAT5C,MAAM,EAAE,0CAAyC,IAAK;IAYzC,4BAAwB,MAAA;8BADpC,mCAAI,2BAAe,uBAAuB,CAAC,CAAC;;;;oBACC;;;gDAAA,YAAK;WAAA;;;;;;;;yBAkD9C,0CAAyC,CAAE;AAC5C,qCAAA,MAAA,MAAA,iBAAA,EAAA,MAAA,UAAA,MAAA,OAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,SAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,KAAb,OAAgB,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAnDpB,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACF,gBAAgB,KAA+B;AAClD,cAAQ,KAAK;QACT,KAAK,wCAA2B;QAChC,KAAK,wCAA2B;AAC5B,iBAAO,KAAK,aAAY;QAC5B,KAAK,wCAA2B;AAC5B,iBAAO;MACf;AACA,aAAO,MAAM,gBAAgB,GAAG;IACpC;IACA,KAAwB,oBAAS,IAAC;AAC9B,aAAO,eAAgD,EAAE,SAAQ,GAAI,OAAK;AACtE,YAAI,aAAa,QAAQ;AACrB,cAAI,OAAO,UAAU,UAAU;AAC3B,gDAAoB,KAAK,MAAM,UAAU,UAAU,OAAO,KAAK;UACnE;QACJ,OACK;AACD,mDAAyB,KAAK,MAAM,QAAQ;QAChD;AACA,cAAM,SAAS,MAAM,KAAK,IAAI,KAAK;AAEnC,YAAI,KAAK,aAAY,KAAM,KAAC,wCAA2B,MAAM,GAAG;AAC5D,eAAK,aAAa,EAAE,SAAQ,GAAI,KAAK;QACzC;AACA,eAAO;MACX;IACJ;IACA,KAAe,qBAAU,IAAC;AACtB,aAAO,eAAgD,EAAE,SAAQ,GAAE;AAC/D,gBAAQ,UAAU;UACd,KAAK;AACD,mBAAO,KAAK,IAAG;UACnB;AACI,qDAAyB,KAAK,MAAM,QAAQ;QACpD;MACJ;IACJ;IACO,MAAM,MAAG;AACZ,WAAK,sBAAsB,yCAA4B,wCAA2B,GAAG;AACrF,YAAM,KAAK,IAAI,yBAAyB;QACpC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;OAChC;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAAyC,IAAI,KAAK,cAAc;AACjG,UAAI,UAAU;AACV,eAAO,UAAU;MACrB;IACJ;IAEO,MAAM,IAAI,MAAyB;AACtC,WAAK,sBAAsB,yCAA4B,wCAA2B,GAAG;AACrF,YAAM,KAAK,IAAI,yBAAyB;QACpC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;OACH;AACD,aAAO,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACxD;IACO,MAAM,oBAAiB;AAC1B,WAAK,sBAAsB,yCAA4B,wCAA2B,YAAY;AAC9F,YAAM,KAAK,IAAI,kCAAkC;QAC7C,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;OAChC;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAAkD,IAAI,KAAK,cAAc;AAC1G,aAAO,UAAU;IACrB;;;AApES,0CAAA,MAAA,0BAAA;;;;;IAyEA,yBAAqB,MAAA;8BAHjC,4CAAa,2BAAe,uBAAuB,CAAC,OACpD,kDAAmB,CAAC,OACpB,wCAAS,qDAA2B,CAAC;;;;oBACK;6CAAA,YAAY;WAAA;;;;;;;;AAAvD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IAEF,MAAM,UAAU,KAAqB;AACxC,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,WAAW,KAAK,YAAY,GAAG;AACrC,YAAM,MAAM,iBAAM,OAAO,2BAAe,uBAAuB,GAAG,KAAK,QAAQ,EAAE,YAAY;QACzF,UAAU,4BAAgB;OAC7B;AACD,UAAI,QAAQ,KAAK,IAAI;QACjB,UAAU,KAAK;QACf,SAAS,gBAAgB,KAAK,MAAM;QACpC,WAAW;OACd;AAED,UAAI,QAAQ,KAAK,IAAI;QACjB,UAAU,KAAK;QACf,SAAS;QACT,WAAW;OACd;AACD,YAAM,iBAAiB,MAAM,IAAI,kBAAiB;AAClD,UAAI,gBAAgB;AAChB,cAAM,aAAa,6CAA6C,eAC3D,IAAI,CAAC,SAAS;WAAO,iCAAkB,kCAAqB,IAAI,CAAC,EAAE,EACnE,KAAK,EAAE,CAAC;AACb,YAAI,QAAQ,KAAK,IAAI;UACjB,UAAU,KAAK;UACf,SAAS;UACT,WAAW;SACd;MACL,OACK;AACD,YAAI,QAAQ,KAAK,IAAI;UACjB,UAAU,KAAK;UACf,SAAS;UACT,OAAO;SACV;AACD;MACJ;AACA,YAAM,KAAK,cAAc,GAAG;AAE5B,WAAK,qBAAqB,KAAK,IAAI;IACvC;IACO,MAAM,cAAc,KAA2B,SAA8B;AAChF,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,WAAW,KAAK,YAAY,GAAG;AACrC,YAAM,MAAM,iBAAM,OAAO,2BAAe,uBAAuB,GAAG,KAAK,QAAQ,EAAE,YAAY;QACzF,UAAU,SAAS,YAAY,4BAAgB;OAClD;AAED,UAAI,QAAQ,KAAK,IAAI;QACjB,UAAU,KAAK;QACf,SAAS;QACT,WAAW;OACd;AACD,YAAM,cAAc,MAAM,IAAI,IAAG;AACjC,UAAI,aAAa;AACb,YAAI,QAAQ,KAAK,IAAI;UACjB,UAAU,KAAK;UACf,SAAS,iDACH,iCAAkB,kCAAqB,WAAW;UACxD,WAAW;SACd;MACL;IACJ;;;;IAQS,4BAAwB,MAAA;8BAFpC,yCAAU,wCAA2B,GAAG,OACxC,8CAAc,CAAE;;;;oBAC6B;gDAAA,YAAqB;WAAA;;;;;;;;AAAnE,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAAqD;AACpE,YAAM,OAAO;AACb,WAAK,OAAO,QAAQ;IACxB;IACO,OAAO,KAAK,MAAa,MAAsB;AAElD,YAAM,IAAI,uBAAW,GAAG,KAAK,IAAI,qCAAqC,4BAAgB,8BAA8B;IAIxH;IACO;IACA,UAAU,KAAsB;AACnC,WAAK,UAAU,oBAAM,KAAK,CAAC,KAAK,OAAO,EAAM,CAAC;AAC9C,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,WAAW,KAAgB;AAC9B,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACL,UAAM,iCAAkB,kCAAqB,KAAK,IAAI;;;IAGlE;;;;IAQS,+BAA2B,MAAA;8BAFvC,yCAAU,wCAA2B,MAAM,OAC3C,+CAAgB,QAAQ,sDAA4B,IAAI,CAAC;;;;oBACT;mDAAA,YAAqB;WAAA;;;;;;;;AAAtE,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAAwD;AACvE,YAAM,OAAO;AAEb,WAAK,OAAO,QAAQ;IACxB;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,OAA4B,IAAI,QAAQ,CAAC,IAAI;AACnD,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;OACH;IACL;IACgB;IACT,WAAW,KAAgB;AAC9B,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACL,UAAM,iCAAkB,kCAAqB,KAAK,IAAI;;;IAGlE;;;;IAIS,4BAAwB,MAAA;8BAFpC,yCAAU,wCAA2B,GAAG,OACxC,kDAAmB,2BAA2B,CAAC;;;;oBACF;gDAAA,YAAqB;WAAA;;;;;;;;AAAnE,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;;;;IAQA,wCAAoC,MAAA;8BAFhD,yCAAU,wCAA2B,eAAe,OACpD,+CAAgB,kBAAkB,sDAA4B,cAAc,CAAC;;;;oBACpB;4DAAA,YAAqB;WAAA;;;;;;;;AAA/E,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAAiE;AAChF,YAAM,OAAO;AAEb,WAAK,iBAAiB,QAAQ;IAClC;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,qBAAwC,0BAAa,IAAI,SAAS,iCAAoB,GAAG;AAC/F,UAAI,CAAC,eAAe,SAAS,iCAAoB,GAAG,GAAG;AACnD,uBAAe,QAAQ,iCAAoB,GAAG;MAClD;AACA,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;OACH;IACL;IACO,cAAc,KAAyB;AAC1C,UAAI,CAAC,MAAM,cAAc,GAAG;AACxB,eAAO;AAEX,YAAM,YAAY,sDAA4B;AAC9C,WAAK,YAAY,KAAK,WAAW;QAC7B,GAAG,UAAU;QACb,YAAQ,wCAA2B,kCAAqB,KAAK,cAAc;OAC9E;AACD,aAAO;IACX;IACO;IACA,WAAW,KAAgB;AAC9B,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACL,mBAAmB,KAAK,eACnB,IAAI,CAAC,SAAS;WAAO,iCAAkB,kCAAqB,IAAI,CAAC,EAAE,EACnE,KAAK,EAAE;;;IAGxB;;;;IAIS,qCAAiC,MAAA;8BAF7C,yCAAU,wCAA2B,YAAY,OACjD,kDAAmB,oCAAoC,CAAC;;;;oBACF;yDAAA,YAAqB;WAAA;;;;;;;;AAA5E,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;;;;",
4
+ "sourcesContent": ["import * as __validateArgs from \"./HumidityControlModeCC._validateArgs.js\";\nconst { validateArgs_HumidityControlModeCCAPI_set } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type SupervisionResult, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, enumValuesToMetadataStates, logList, logText, parseBitMask, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwUnsupportedProperty, throwWrongValueType, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { HumidityControlMode, HumidityControlModeCommand, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { HumidityControlModeCCValues } from \"./_CCValues.generated.js\";\nexport { HumidityControlModeCCValues };\n@API(CommandClasses[\"Humidity Control Mode\"])\nexport class HumidityControlModeCCAPI extends CCAPI {\n public supportsCommand(cmd: HumidityControlModeCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case HumidityControlModeCommand.Get:\n case HumidityControlModeCommand.SupportedGet:\n return this.isSinglecast();\n case HumidityControlModeCommand.Set:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: HumidityControlModeCCAPI, { property }, value) {\n if (property === \"mode\") {\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n }\n else {\n throwUnsupportedProperty(this.ccId, property);\n }\n const result = await this.set(value);\n // Verify the change after a delay, unless the command was supervised and successful\n if (this.isSinglecast() && !supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value);\n }\n return result;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: HumidityControlModeCCAPI, { property }) {\n switch (property) {\n case \"mode\":\n return this.get();\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n public async get(): Promise<MaybeNotKnown<HumidityControlMode>> {\n this.assertSupportsCommand(HumidityControlModeCommand, HumidityControlModeCommand.Get);\n const cc = new HumidityControlModeCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<HumidityControlModeCCReport>(cc, this.commandOptions);\n if (response) {\n return response?.mode;\n }\n }\n @validateArgs_HumidityControlModeCCAPI_set()\n public async set(mode: HumidityControlMode): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(HumidityControlModeCommand, HumidityControlModeCommand.Set);\n const cc = new HumidityControlModeCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n mode,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n public async getSupportedModes(): Promise<MaybeNotKnown<readonly HumidityControlMode[]>> {\n this.assertSupportsCommand(HumidityControlModeCommand, HumidityControlModeCommand.SupportedGet);\n const cc = new HumidityControlModeCCSupportedGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<HumidityControlModeCCSupportedReport>(cc, this.commandOptions);\n return response?.supportedModes;\n }\n}\n@commandClass(CommandClasses[\"Humidity Control Mode\"])\n@implementedVersion(1)\n@ccValues(HumidityControlModeCCValues)\nexport class HumidityControlModeCC extends CommandClass {\n declare ccCommand: HumidityControlModeCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Humidity Control Mode\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n // First query the possible modes to set the metadata\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying supported humidity control modes...\",\n direction: \"outbound\",\n });\n const supportedModes = await api.getSupportedModes();\n if (supportedModes) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logText(\"received supported humidity control modes:\", {\n nested: logList(supportedModes.map((mode) => getEnumMemberName(HumidityControlMode, mode))),\n }),\n direction: \"inbound\",\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Querying supported humidity control modes timed out, skipping interview...\",\n level: \"warn\",\n });\n return;\n }\n await this.refreshValues(ctx, { tag: \"interview\" });\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Humidity Control Mode\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n tag: options?.tag,\n });\n // Query the current status\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying current humidity control mode...\",\n direction: \"outbound\",\n });\n const currentMode = await api.get();\n if (currentMode) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"received current humidity control mode: \"\n + getEnumMemberName(HumidityControlMode, currentMode),\n direction: \"inbound\",\n });\n }\n }\n}\n// @publicAPI\nexport interface HumidityControlModeCCSetOptions {\n mode: HumidityControlMode;\n}\n@CCCommand(HumidityControlModeCommand.Set)\n@useSupervision()\nexport class HumidityControlModeCCSet extends HumidityControlModeCC {\n public constructor(options: WithAddress<HumidityControlModeCCSetOptions>) {\n super(options);\n this.mode = options.mode;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): HumidityControlModeCCSet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new HumidityControlModeCCSet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public mode: HumidityControlMode;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.mode & 0b1111]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n mode: getEnumMemberName(HumidityControlMode, this.mode),\n },\n };\n }\n}\n// @publicAPI\nexport interface HumidityControlModeCCReportOptions {\n mode: HumidityControlMode;\n}\n@CCCommand(HumidityControlModeCommand.Report)\n@ccValueProperty(\"mode\", HumidityControlModeCCValues.mode)\nexport class HumidityControlModeCCReport extends HumidityControlModeCC {\n public constructor(options: WithAddress<HumidityControlModeCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.mode = options.mode;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): HumidityControlModeCCReport {\n validatePayload(raw.payload.length >= 1);\n const mode: HumidityControlMode = raw.payload[0] & 0b1111;\n return new this({\n nodeId: ctx.sourceNodeId,\n mode,\n });\n }\n public readonly mode: HumidityControlMode;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n mode: getEnumMemberName(HumidityControlMode, this.mode),\n },\n };\n }\n}\n@CCCommand(HumidityControlModeCommand.Get)\n@expectedCCResponse(HumidityControlModeCCReport)\nexport class HumidityControlModeCCGet extends HumidityControlModeCC {\n}\n// @publicAPI\nexport interface HumidityControlModeCCSupportedReportOptions {\n supportedModes: HumidityControlMode[];\n}\n@CCCommand(HumidityControlModeCommand.SupportedReport)\n@ccValueProperty(\"supportedModes\", HumidityControlModeCCValues.supportedModes)\nexport class HumidityControlModeCCSupportedReport extends HumidityControlModeCC {\n public constructor(options: WithAddress<HumidityControlModeCCSupportedReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.supportedModes = options.supportedModes;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): HumidityControlModeCCSupportedReport {\n validatePayload(raw.payload.length >= 1);\n const supportedModes: HumidityControlMode[] = parseBitMask(raw.payload, HumidityControlMode.Off);\n if (!supportedModes.includes(HumidityControlMode.Off)) {\n supportedModes.unshift(HumidityControlMode.Off);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedModes,\n });\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // Use this information to create the metadata for the mode property\n const modeValue = HumidityControlModeCCValues.mode;\n this.setMetadata(ctx, modeValue, {\n ...modeValue.meta,\n states: enumValuesToMetadataStates(HumidityControlMode, this.supportedModes),\n });\n return true;\n }\n public supportedModes: HumidityControlMode[];\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supported modes\": logList(this.supportedModes.map((mode) => getEnumMemberName(HumidityControlMode, mode))),\n },\n };\n }\n}\n@CCCommand(HumidityControlModeCommand.SupportedGet)\n@expectedCCResponse(HumidityControlModeCCSupportedReport)\nexport class HumidityControlModeCCSupportedGet extends HumidityControlModeCC {\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -112,14 +112,15 @@ let HumidityControlOperatingStateCC = (() => {
112
112
  message: `Interviewing ${this.ccName}...`,
113
113
  direction: "none"
114
114
  });
115
- await this.refreshValues(ctx);
115
+ await this.refreshValues(ctx, { tag: "interview" });
116
116
  this.setInterviewComplete(ctx, true);
117
117
  }
118
118
  async refreshValues(ctx, options) {
119
119
  const node = this.getNode(ctx);
120
120
  const endpoint = this.getEndpoint(ctx);
121
121
  const api = import_API.CCAPI.create(import_core.CommandClasses["Humidity Control Operating State"], ctx, endpoint).withOptions({
122
- priority: options?.priority ?? import_core.MessagePriority.NodeQuery
122
+ priority: options?.priority ?? import_core.MessagePriority.NodeQuery,
123
+ tag: options?.tag
123
124
  });
124
125
  ctx.logNode(node.id, {
125
126
  endpoint: this.endpointIndex,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/HumidityControlOperatingStateCC.ts"],
4
- "sourcesContent": ["import { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, ValueMetadata, type WithAddress, enumValuesToMetadataStates, validatePayload, } from \"@zwave-js/core\";\nimport { getEnumMemberName } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, throwUnsupportedProperty, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { HumidityControlOperatingState, HumidityControlOperatingStateCommand, } from \"../lib/_Types.js\";\nimport type { CCParsingContext } from \"../lib/traits.js\";\nimport { HumidityControlOperatingStateCCValues } from \"./_CCValues.generated.js\";\nexport { HumidityControlOperatingStateCCValues };\n@API(CommandClasses[\"Humidity Control Operating State\"])\nexport class HumidityControlOperatingStateCCAPI extends CCAPI {\n public supportsCommand(cmd: HumidityControlOperatingStateCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case HumidityControlOperatingStateCommand.Get:\n return this.isSinglecast();\n }\n return super.supportsCommand(cmd);\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: HumidityControlOperatingStateCCAPI, { property }) {\n switch (property) {\n case \"state\":\n return this.get();\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n public async get(): Promise<HumidityControlOperatingState | undefined> {\n this.assertSupportsCommand(HumidityControlOperatingStateCommand, HumidityControlOperatingStateCommand.Get);\n const cc = new HumidityControlOperatingStateCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<HumidityControlOperatingStateCCReport>(cc, this.commandOptions);\n if (response) {\n return response?.state;\n }\n }\n}\n@commandClass(CommandClasses[\"Humidity Control Operating State\"])\n@implementedVersion(1)\n@ccValues(HumidityControlOperatingStateCCValues)\nexport class HumidityControlOperatingStateCC extends CommandClass {\n declare ccCommand: HumidityControlOperatingStateCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n await this.refreshValues(ctx);\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Humidity Control Operating State\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n });\n // Query the current status\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying current humidity control operating state...\",\n direction: \"outbound\",\n });\n const currentStatus = await api.get();\n if (currentStatus) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"received current humidity control operating state: \"\n + getEnumMemberName(HumidityControlOperatingState, currentStatus),\n direction: \"inbound\",\n });\n }\n }\n}\n// @publicAPI\nexport interface HumidityControlOperatingStateCCReportOptions {\n state: HumidityControlOperatingState;\n}\n@CCCommand(HumidityControlOperatingStateCommand.Report)\n@ccValueProperty(\"state\", HumidityControlOperatingStateCCValues.state)\nexport class HumidityControlOperatingStateCCReport extends HumidityControlOperatingStateCC {\n public constructor(options: WithAddress<HumidityControlOperatingStateCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.state = options.state;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): HumidityControlOperatingStateCCReport {\n validatePayload(raw.payload.length >= 1);\n const state: HumidityControlOperatingState = raw.payload[0] & 0b1111;\n return new this({\n nodeId: ctx.sourceNodeId,\n state,\n });\n }\n public readonly state: HumidityControlOperatingState;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n state: getEnumMemberName(HumidityControlOperatingState, this.state),\n },\n };\n }\n}\n@CCCommand(HumidityControlOperatingStateCommand.Get)\n@expectedCCResponse(HumidityControlOperatingStateCCReport)\nexport class HumidityControlOperatingStateCCGet extends HumidityControlOperatingStateCC {\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, ValueMetadata, type WithAddress, enumValuesToMetadataStates, validatePayload, } from \"@zwave-js/core\";\nimport { getEnumMemberName } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, throwUnsupportedProperty, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { HumidityControlOperatingState, HumidityControlOperatingStateCommand, } from \"../lib/_Types.js\";\nimport type { CCParsingContext } from \"../lib/traits.js\";\nimport { HumidityControlOperatingStateCCValues } from \"./_CCValues.generated.js\";\nexport { HumidityControlOperatingStateCCValues };\n@API(CommandClasses[\"Humidity Control Operating State\"])\nexport class HumidityControlOperatingStateCCAPI extends CCAPI {\n public supportsCommand(cmd: HumidityControlOperatingStateCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case HumidityControlOperatingStateCommand.Get:\n return this.isSinglecast();\n }\n return super.supportsCommand(cmd);\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: HumidityControlOperatingStateCCAPI, { property }) {\n switch (property) {\n case \"state\":\n return this.get();\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n public async get(): Promise<HumidityControlOperatingState | undefined> {\n this.assertSupportsCommand(HumidityControlOperatingStateCommand, HumidityControlOperatingStateCommand.Get);\n const cc = new HumidityControlOperatingStateCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<HumidityControlOperatingStateCCReport>(cc, this.commandOptions);\n if (response) {\n return response?.state;\n }\n }\n}\n@commandClass(CommandClasses[\"Humidity Control Operating State\"])\n@implementedVersion(1)\n@ccValues(HumidityControlOperatingStateCCValues)\nexport class HumidityControlOperatingStateCC extends CommandClass {\n declare ccCommand: HumidityControlOperatingStateCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n await this.refreshValues(ctx, { tag: \"interview\" });\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Humidity Control Operating State\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n tag: options?.tag,\n });\n // Query the current status\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying current humidity control operating state...\",\n direction: \"outbound\",\n });\n const currentStatus = await api.get();\n if (currentStatus) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"received current humidity control operating state: \"\n + getEnumMemberName(HumidityControlOperatingState, currentStatus),\n direction: \"inbound\",\n });\n }\n }\n}\n// @publicAPI\nexport interface HumidityControlOperatingStateCCReportOptions {\n state: HumidityControlOperatingState;\n}\n@CCCommand(HumidityControlOperatingStateCommand.Report)\n@ccValueProperty(\"state\", HumidityControlOperatingStateCCValues.state)\nexport class HumidityControlOperatingStateCCReport extends HumidityControlOperatingStateCC {\n public constructor(options: WithAddress<HumidityControlOperatingStateCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.state = options.state;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): HumidityControlOperatingStateCCReport {\n validatePayload(raw.payload.length >= 1);\n const state: HumidityControlOperatingState = raw.payload[0] & 0b1111;\n return new this({\n nodeId: ctx.sourceNodeId,\n state,\n });\n }\n public readonly state: HumidityControlOperatingState;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n state: getEnumMemberName(HumidityControlOperatingState, this.state),\n },\n };\n }\n}\n@CCCommand(HumidityControlOperatingStateCommand.Get)\n@expectedCCResponse(HumidityControlOperatingStateCCReport)\nexport class HumidityControlOperatingStateCCGet extends HumidityControlOperatingStateCC {\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -240,7 +240,8 @@ let HumidityControlSetpointCC = (() => {
240
240
  const node = this.getNode(ctx);
241
241
  const endpoint = this.getEndpoint(ctx);
242
242
  const api = import_API.CCAPI.create(import_core.CommandClasses["Humidity Control Setpoint"], ctx, endpoint).withOptions({
243
- priority: import_core.MessagePriority.NodeQuery
243
+ priority: import_core.MessagePriority.NodeQuery,
244
+ tag: "interview"
244
245
  });
245
246
  ctx.logNode(node.id, {
246
247
  endpoint: this.endpointIndex,
@@ -256,10 +257,11 @@ let HumidityControlSetpointCC = (() => {
256
257
  const resp = await api.getSupportedSetpointTypes();
257
258
  if (resp) {
258
259
  setpointTypes = [...resp];
259
- const logMessage = "received supported setpoint types:\n" + setpointTypes.map((type) => (0, import_shared.getEnumMemberName)(import_Types.HumidityControlSetpointType, type)).map((name) => `\xB7 ${name}`).join("\n");
260
260
  ctx.logNode(node.id, {
261
261
  endpoint: this.endpointIndex,
262
- message: logMessage,
262
+ message: (0, import_core.logText)("received supported setpoint types:", {
263
+ nested: (0, import_core.logList)(setpointTypes.map((type) => (0, import_shared.getEnumMemberName)(import_Types.HumidityControlSetpointType, type)))
264
+ }),
263
265
  direction: "inbound"
264
266
  });
265
267
  } else {
@@ -279,12 +281,11 @@ let HumidityControlSetpointCC = (() => {
279
281
  });
280
282
  const setpointScaleSupported = await api.getSupportedScales(type);
281
283
  if (setpointScaleSupported) {
282
- const logMessage = `received supported scales for setpoint ${setpointName}:
283
- ${setpointScaleSupported.map((t) => `
284
- \xB7 ${t.key} ${t.unit} - ${t.label}`).join("")}`;
285
284
  ctx.logNode(node.id, {
286
285
  endpoint: this.endpointIndex,
287
- message: logMessage,
286
+ message: (0, import_core.logText)(`received supported scales for setpoint ${setpointName}:`, {
287
+ nested: (0, import_core.logList)(setpointScaleSupported.map((t) => `${t.key} ${t.unit} - ${t.label}`))
288
+ }),
288
289
  direction: "inbound"
289
290
  });
290
291
  const scaleValue = import_CCValues_generated.HumidityControlSetpointCCValues.setpointScale(type);
@@ -302,24 +303,27 @@ ${setpointScaleSupported.map((t) => `
302
303
  if (setpointCaps) {
303
304
  const minValueUnit = getSetpointUnit(setpointCaps.minValueScale);
304
305
  const maxValueUnit = getSetpointUnit(setpointCaps.maxValueScale);
305
- const logMessage = `received capabilities for setpoint ${setpointName}:
306
- minimum value: ${setpointCaps.minValue} ${minValueUnit}
307
- maximum value: ${setpointCaps.maxValue} ${maxValueUnit}`;
308
306
  ctx.logNode(node.id, {
309
307
  endpoint: this.endpointIndex,
310
- message: logMessage,
308
+ message: (0, import_core.logText)(`received capabilities for setpoint ${setpointName}:`, {
309
+ nested: (0, import_core.logDict)({
310
+ "minimum value": `${setpointCaps.minValue} ${minValueUnit}`,
311
+ "maximum value": `${setpointCaps.maxValue} ${maxValueUnit}`
312
+ })
313
+ }),
311
314
  direction: "inbound"
312
315
  });
313
316
  }
314
317
  }
315
- await this.refreshValues(ctx);
318
+ await this.refreshValues(ctx, { tag: "interview" });
316
319
  this.setInterviewComplete(ctx, true);
317
320
  }
318
321
  async refreshValues(ctx, options) {
319
322
  const node = this.getNode(ctx);
320
323
  const endpoint = this.getEndpoint(ctx);
321
324
  const api = import_API.CCAPI.create(import_core.CommandClasses["Humidity Control Setpoint"], ctx, endpoint).withOptions({
322
- priority: options?.priority ?? import_core.MessagePriority.NodeQuery
325
+ priority: options?.priority ?? import_core.MessagePriority.NodeQuery,
326
+ tag: options?.tag
323
327
  });
324
328
  const setpointTypes = this.getValue(ctx, import_CCValues_generated.HumidityControlSetpointCCValues.supportedSetpointTypes) ?? [];
325
329
  for (const type of setpointTypes) {
@@ -556,8 +560,7 @@ let HumidityControlSetpointCCSupportedReport = (() => {
556
560
  return {
557
561
  ...super.toLogEntry(ctx),
558
562
  message: {
559
- "supported setpoint types": this.supportedSetpointTypes.map((t) => `
560
- \xB7 ${(0, import_shared.getEnumMemberName)(import_Types.HumidityControlSetpointType, t)}`).join("")
563
+ "supported setpoint types": (0, import_core.logList)(this.supportedSetpointTypes.map((t) => (0, import_shared.getEnumMemberName)(import_Types.HumidityControlSetpointType, t)))
561
564
  }
562
565
  };
563
566
  }
@@ -625,8 +628,7 @@ let HumidityControlSetpointCCScaleSupportedReport = (() => {
625
628
  return {
626
629
  ...super.toLogEntry(ctx),
627
630
  message: {
628
- "scale supported": supportedScales.map((t) => `
629
- \xB7 ${t.key} ${t.unit} - ${t.label}`).join("")
631
+ "scale supported": (0, import_core.logList)(supportedScales.map((t) => `${t.key} ${t.unit} - ${t.label}`))
630
632
  }
631
633
  };
632
634
  }