@zwave-js/cc 15.25.0 → 15.25.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/build/cjs/cc/AlarmSensorCC.js +5 -3
  2. package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
  3. package/build/cjs/cc/AssociationCC.js +5 -2
  4. package/build/cjs/cc/AssociationCC.js.map +2 -2
  5. package/build/cjs/cc/AssociationGroupInfoCC.js +7 -2
  6. package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
  7. package/build/cjs/cc/BarrierOperatorCC.js +5 -3
  8. package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
  9. package/build/cjs/cc/BasicCC.js +3 -2
  10. package/build/cjs/cc/BasicCC.js.map +2 -2
  11. package/build/cjs/cc/BatteryCC.js +3 -2
  12. package/build/cjs/cc/BatteryCC.js.map +2 -2
  13. package/build/cjs/cc/BinarySensorCC.js +5 -3
  14. package/build/cjs/cc/BinarySensorCC.js.map +2 -2
  15. package/build/cjs/cc/BinarySwitchCC.js +3 -2
  16. package/build/cjs/cc/BinarySwitchCC.js.map +2 -2
  17. package/build/cjs/cc/CentralSceneCC.js +2 -1
  18. package/build/cjs/cc/CentralSceneCC.js.map +2 -2
  19. package/build/cjs/cc/ClockCC.js +3 -2
  20. package/build/cjs/cc/ClockCC.js.map +2 -2
  21. package/build/cjs/cc/ColorSwitchCC.js +5 -2
  22. package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
  23. package/build/cjs/cc/ConfigurationCC.js +5 -2
  24. package/build/cjs/cc/ConfigurationCC.js.map +2 -2
  25. package/build/cjs/cc/DoorLockCC.js +5 -3
  26. package/build/cjs/cc/DoorLockCC.js.map +2 -2
  27. package/build/cjs/cc/DoorLockLoggingCC.js +3 -2
  28. package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
  29. package/build/cjs/cc/EnergyProductionCC.js +3 -2
  30. package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
  31. package/build/cjs/cc/EntryControlCC.js +5 -3
  32. package/build/cjs/cc/EntryControlCC.js.map +2 -2
  33. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +2 -1
  34. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +2 -2
  35. package/build/cjs/cc/HumidityControlModeCC.js +5 -3
  36. package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
  37. package/build/cjs/cc/HumidityControlOperatingStateCC.js +3 -2
  38. package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +2 -2
  39. package/build/cjs/cc/HumidityControlSetpointCC.js +5 -3
  40. package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
  41. package/build/cjs/cc/IndicatorCC.js +5 -2
  42. package/build/cjs/cc/IndicatorCC.js.map +2 -2
  43. package/build/cjs/cc/IrrigationCC.js +5 -2
  44. package/build/cjs/cc/IrrigationCC.js.map +2 -2
  45. package/build/cjs/cc/LanguageCC.js +3 -2
  46. package/build/cjs/cc/LanguageCC.js.map +2 -2
  47. package/build/cjs/cc/LockCC.js +3 -2
  48. package/build/cjs/cc/LockCC.js.map +2 -2
  49. package/build/cjs/cc/ManufacturerSpecificCC.js +4 -1
  50. package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
  51. package/build/cjs/cc/MeterCC.js +5 -3
  52. package/build/cjs/cc/MeterCC.js.map +2 -2
  53. package/build/cjs/cc/MultiChannelAssociationCC.js +5 -2
  54. package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
  55. package/build/cjs/cc/MultiChannelCC.js +2 -1
  56. package/build/cjs/cc/MultiChannelCC.js.map +2 -2
  57. package/build/cjs/cc/MultilevelSensorCC.js +5 -2
  58. package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
  59. package/build/cjs/cc/MultilevelSwitchCC.js +5 -3
  60. package/build/cjs/cc/MultilevelSwitchCC.js.map +2 -2
  61. package/build/cjs/cc/NodeNamingCC.js +3 -2
  62. package/build/cjs/cc/NodeNamingCC.js.map +2 -2
  63. package/build/cjs/cc/NotificationCC.js +7 -3
  64. package/build/cjs/cc/NotificationCC.js.map +2 -2
  65. package/build/cjs/cc/ProtectionCC.js +5 -3
  66. package/build/cjs/cc/ProtectionCC.js.map +2 -2
  67. package/build/cjs/cc/SceneControllerConfigurationCC.js +2 -1
  68. package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
  69. package/build/cjs/cc/ScheduleEntryLockCC.js +2 -1
  70. package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
  71. package/build/cjs/cc/Security2CC.js +3 -2
  72. package/build/cjs/cc/Security2CC.js.map +2 -2
  73. package/build/cjs/cc/SecurityCC.js +2 -1
  74. package/build/cjs/cc/SecurityCC.js.map +2 -2
  75. package/build/cjs/cc/SoundSwitchCC.js +2 -1
  76. package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
  77. package/build/cjs/cc/ThermostatFanModeCC.js +5 -3
  78. package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
  79. package/build/cjs/cc/ThermostatFanStateCC.js +3 -2
  80. package/build/cjs/cc/ThermostatFanStateCC.js.map +2 -2
  81. package/build/cjs/cc/ThermostatModeCC.js +5 -3
  82. package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
  83. package/build/cjs/cc/ThermostatOperatingStateCC.js +3 -2
  84. package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
  85. package/build/cjs/cc/ThermostatSetbackCC.js +3 -2
  86. package/build/cjs/cc/ThermostatSetbackCC.js.map +2 -2
  87. package/build/cjs/cc/ThermostatSetpointCC.js +5 -2
  88. package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
  89. package/build/cjs/cc/TimeCC.js +2 -1
  90. package/build/cjs/cc/TimeCC.js.map +2 -2
  91. package/build/cjs/cc/TimeParametersCC.js +2 -1
  92. package/build/cjs/cc/TimeParametersCC.js.map +2 -2
  93. package/build/cjs/cc/UserCodeCC.js +4 -2
  94. package/build/cjs/cc/UserCodeCC.js.map +2 -2
  95. package/build/cjs/cc/UserCredentialCC.js +5 -2
  96. package/build/cjs/cc/UserCredentialCC.js.map +2 -2
  97. package/build/cjs/cc/VersionCC.js +2 -1
  98. package/build/cjs/cc/VersionCC.js.map +2 -2
  99. package/build/cjs/cc/WakeUpCC.js +2 -1
  100. package/build/cjs/cc/WakeUpCC.js.map +2 -2
  101. package/build/cjs/cc/WindowCoveringCC.js +5 -2
  102. package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
  103. package/build/cjs/cc/ZWavePlusCC.js +2 -1
  104. package/build/cjs/cc/ZWavePlusCC.js.map +2 -2
  105. package/build/cjs/cc/manufacturerProprietary/Decorators.d.ts +1 -1
  106. package/build/cjs/cc/manufacturerProprietary/Decorators.js.map +2 -2
  107. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js +3 -2
  108. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +2 -2
  109. package/build/cjs/lib/API.js.map +2 -2
  110. package/build/cjs/lib/CommandClass.d.ts +2 -0
  111. package/build/cjs/lib/CommandClass.js.map +2 -2
  112. package/build/cjs/lib/CommandClassDecorators.d.ts +4 -4
  113. package/build/cjs/lib/CommandClassDecorators.js.map +2 -2
  114. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  115. package/build/esm/cc/AlarmSensorCC.js +3 -1
  116. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  117. package/build/esm/cc/AssociationCC.d.ts.map +1 -1
  118. package/build/esm/cc/AssociationCC.js +3 -0
  119. package/build/esm/cc/AssociationCC.js.map +1 -1
  120. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  121. package/build/esm/cc/AssociationGroupInfoCC.js +6 -1
  122. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  123. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  124. package/build/esm/cc/BarrierOperatorCC.js +3 -1
  125. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  126. package/build/esm/cc/BasicCC.d.ts.map +1 -1
  127. package/build/esm/cc/BasicCC.js +2 -1
  128. package/build/esm/cc/BasicCC.js.map +1 -1
  129. package/build/esm/cc/BatteryCC.d.ts.map +1 -1
  130. package/build/esm/cc/BatteryCC.js +2 -1
  131. package/build/esm/cc/BatteryCC.js.map +1 -1
  132. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  133. package/build/esm/cc/BinarySensorCC.js +3 -1
  134. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  135. package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
  136. package/build/esm/cc/BinarySwitchCC.js +2 -1
  137. package/build/esm/cc/BinarySwitchCC.js.map +1 -1
  138. package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
  139. package/build/esm/cc/CentralSceneCC.js +1 -0
  140. package/build/esm/cc/CentralSceneCC.js.map +1 -1
  141. package/build/esm/cc/ClockCC.d.ts.map +1 -1
  142. package/build/esm/cc/ClockCC.js +2 -1
  143. package/build/esm/cc/ClockCC.js.map +1 -1
  144. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  145. package/build/esm/cc/ColorSwitchCC.js +3 -0
  146. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  147. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  148. package/build/esm/cc/ConfigurationCC.js +3 -0
  149. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  150. package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
  151. package/build/esm/cc/DoorLockCC.js +3 -1
  152. package/build/esm/cc/DoorLockCC.js.map +1 -1
  153. package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
  154. package/build/esm/cc/DoorLockLoggingCC.js +2 -1
  155. package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
  156. package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
  157. package/build/esm/cc/EnergyProductionCC.js +2 -1
  158. package/build/esm/cc/EnergyProductionCC.js.map +1 -1
  159. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  160. package/build/esm/cc/EntryControlCC.js +3 -1
  161. package/build/esm/cc/EntryControlCC.js.map +1 -1
  162. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
  163. package/build/esm/cc/FirmwareUpdateMetaDataCC.js +1 -0
  164. package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
  165. package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
  166. package/build/esm/cc/HumidityControlModeCC.js +3 -1
  167. package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
  168. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
  169. package/build/esm/cc/HumidityControlOperatingStateCC.js +2 -1
  170. package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
  171. package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
  172. package/build/esm/cc/HumidityControlSetpointCC.js +3 -1
  173. package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
  174. package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
  175. package/build/esm/cc/IndicatorCC.js +3 -0
  176. package/build/esm/cc/IndicatorCC.js.map +1 -1
  177. package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
  178. package/build/esm/cc/IrrigationCC.js +3 -0
  179. package/build/esm/cc/IrrigationCC.js.map +1 -1
  180. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  181. package/build/esm/cc/LanguageCC.js +2 -1
  182. package/build/esm/cc/LanguageCC.js.map +1 -1
  183. package/build/esm/cc/LockCC.d.ts.map +1 -1
  184. package/build/esm/cc/LockCC.js +2 -1
  185. package/build/esm/cc/LockCC.js.map +1 -1
  186. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  187. package/build/esm/cc/ManufacturerSpecificCC.js +4 -1
  188. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  189. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  190. package/build/esm/cc/MeterCC.js +3 -1
  191. package/build/esm/cc/MeterCC.js.map +1 -1
  192. package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
  193. package/build/esm/cc/MultiChannelAssociationCC.js +3 -0
  194. package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
  195. package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
  196. package/build/esm/cc/MultiChannelCC.js +1 -0
  197. package/build/esm/cc/MultiChannelCC.js.map +1 -1
  198. package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
  199. package/build/esm/cc/MultilevelSensorCC.js +3 -0
  200. package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
  201. package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
  202. package/build/esm/cc/MultilevelSwitchCC.js +3 -1
  203. package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
  204. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  205. package/build/esm/cc/NodeNamingCC.js +2 -1
  206. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  207. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  208. package/build/esm/cc/NotificationCC.js +5 -1
  209. package/build/esm/cc/NotificationCC.js.map +1 -1
  210. package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
  211. package/build/esm/cc/ProtectionCC.js +3 -1
  212. package/build/esm/cc/ProtectionCC.js.map +1 -1
  213. package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
  214. package/build/esm/cc/SceneControllerConfigurationCC.js +1 -0
  215. package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
  216. package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
  217. package/build/esm/cc/ScheduleEntryLockCC.js +1 -0
  218. package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
  219. package/build/esm/cc/Security2CC.d.ts.map +1 -1
  220. package/build/esm/cc/Security2CC.js +2 -1
  221. package/build/esm/cc/Security2CC.js.map +1 -1
  222. package/build/esm/cc/SecurityCC.d.ts.map +1 -1
  223. package/build/esm/cc/SecurityCC.js +1 -0
  224. package/build/esm/cc/SecurityCC.js.map +1 -1
  225. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  226. package/build/esm/cc/SoundSwitchCC.js +1 -0
  227. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  228. package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
  229. package/build/esm/cc/ThermostatFanModeCC.js +3 -1
  230. package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
  231. package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
  232. package/build/esm/cc/ThermostatFanStateCC.js +2 -1
  233. package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
  234. package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
  235. package/build/esm/cc/ThermostatModeCC.js +3 -1
  236. package/build/esm/cc/ThermostatModeCC.js.map +1 -1
  237. package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
  238. package/build/esm/cc/ThermostatOperatingStateCC.js +2 -1
  239. package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
  240. package/build/esm/cc/ThermostatSetbackCC.d.ts.map +1 -1
  241. package/build/esm/cc/ThermostatSetbackCC.js +2 -1
  242. package/build/esm/cc/ThermostatSetbackCC.js.map +1 -1
  243. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  244. package/build/esm/cc/ThermostatSetpointCC.js +3 -0
  245. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  246. package/build/esm/cc/TimeCC.d.ts.map +1 -1
  247. package/build/esm/cc/TimeCC.js +1 -0
  248. package/build/esm/cc/TimeCC.js.map +1 -1
  249. package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
  250. package/build/esm/cc/TimeParametersCC.js +1 -0
  251. package/build/esm/cc/TimeParametersCC.js.map +1 -1
  252. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  253. package/build/esm/cc/UserCodeCC.js +2 -0
  254. package/build/esm/cc/UserCodeCC.js.map +1 -1
  255. package/build/esm/cc/UserCredentialCC.d.ts.map +1 -1
  256. package/build/esm/cc/UserCredentialCC.js +4 -1
  257. package/build/esm/cc/UserCredentialCC.js.map +1 -1
  258. package/build/esm/cc/VersionCC.d.ts.map +1 -1
  259. package/build/esm/cc/VersionCC.js +1 -0
  260. package/build/esm/cc/VersionCC.js.map +1 -1
  261. package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
  262. package/build/esm/cc/WakeUpCC.js +1 -0
  263. package/build/esm/cc/WakeUpCC.js.map +1 -1
  264. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  265. package/build/esm/cc/WindowCoveringCC.js +3 -0
  266. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  267. package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
  268. package/build/esm/cc/ZWavePlusCC.js +1 -0
  269. package/build/esm/cc/ZWavePlusCC.js.map +1 -1
  270. package/build/esm/cc/manufacturerProprietary/Decorators.d.ts +1 -1
  271. package/build/esm/cc/manufacturerProprietary/Decorators.d.ts.map +1 -1
  272. package/build/esm/cc/manufacturerProprietary/Decorators.js.map +1 -1
  273. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -1
  274. package/build/esm/cc/manufacturerProprietary/FibaroCC.js +2 -1
  275. package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
  276. package/build/esm/lib/API.js.map +1 -1
  277. package/build/esm/lib/CommandClass.d.ts +2 -0
  278. package/build/esm/lib/CommandClass.d.ts.map +1 -1
  279. package/build/esm/lib/CommandClass.js.map +1 -1
  280. package/build/esm/lib/CommandClassDecorators.d.ts +4 -4
  281. package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
  282. package/build/esm/lib/CommandClassDecorators.js.map +1 -1
  283. package/package.json +7 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/EnergyProductionCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./EnergyProductionCC._validateArgs.js\";\nconst { validateArgs_EnergyProductionCCAPI_get } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, ValueMetadata, type WithAddress, encodeFloatWithScale, parseFloatWithScale, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName, pick } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, throwUnsupportedProperty, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValues, commandClass, expectedCCResponse, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { EnergyProductionCommand, EnergyProductionParameter, type EnergyProductionScale, getEnergyProductionScale, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { EnergyProductionCCValues } from \"./_CCValues.generated.js\";\nexport { EnergyProductionCCValues };\n@API(CommandClasses[\"Energy Production\"])\nexport class EnergyProductionCCAPI extends CCAPI {\n public supportsCommand(cmd: EnergyProductionCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case EnergyProductionCommand.Get:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: EnergyProductionCCAPI, { property, propertyKey }) {\n if (EnergyProductionCCValues.value.is({\n commandClass: this.ccId,\n property,\n propertyKey,\n })) {\n return (await this.get(property as EnergyProductionParameter))\n ?.value;\n }\n else {\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n @validateArgs_EnergyProductionCCAPI_get()\n public async get(parameter: EnergyProductionParameter): Promise<MaybeNotKnown<{\n value: number;\n scale: EnergyProductionScale;\n }>> {\n this.assertSupportsCommand(EnergyProductionCommand, EnergyProductionCommand.Get);\n const cc = new EnergyProductionCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n });\n const response = await this.host.sendCommand<EnergyProductionCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"value\", \"scale\"]);\n }\n }\n}\n@commandClass(CommandClasses[\"Energy Production\"])\n@implementedVersion(1)\n@ccValues(EnergyProductionCCValues)\nexport class EnergyProductionCC extends CommandClass {\n declare ccCommand: EnergyProductionCommand;\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 // Query current values\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[\"Energy Production\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n });\n for (const parameter of [\n EnergyProductionParameter.Power,\n EnergyProductionParameter[\"Production Total\"],\n EnergyProductionParameter[\"Production Today\"],\n EnergyProductionParameter[\"Total Time\"],\n ] as const) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `querying energy production (${getEnumMemberName(EnergyProductionParameter, parameter)})...`,\n direction: \"outbound\",\n });\n await api.get(parameter);\n }\n }\n}\n// @publicAPI\nexport interface EnergyProductionCCReportOptions {\n parameter: EnergyProductionParameter;\n scale: EnergyProductionScale;\n value: number;\n}\n@CCCommand(EnergyProductionCommand.Report)\nexport class EnergyProductionCCReport extends EnergyProductionCC {\n public constructor(options: WithAddress<EnergyProductionCCReportOptions>) {\n super(options);\n this.parameter = options.parameter;\n this.value = options.value;\n this.scale = options.scale;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): EnergyProductionCCReport {\n validatePayload(raw.payload.length >= 2);\n const parameter: EnergyProductionParameter = raw.payload[0];\n const { value, scale: rawScale } = parseFloatWithScale(raw.payload.subarray(1));\n const scale: EnergyProductionScale = getEnergyProductionScale(parameter, rawScale);\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n value,\n scale,\n });\n }\n public readonly parameter: EnergyProductionParameter;\n public readonly scale: EnergyProductionScale;\n public readonly value: number;\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n const valueValue = EnergyProductionCCValues.value(this.parameter);\n this.setMetadata(ctx, valueValue, {\n ...valueValue.meta,\n unit: this.scale.unit,\n ccSpecific: {\n parameter: this.parameter,\n scale: this.scale.key,\n },\n });\n this.setValue(ctx, valueValue, this.value);\n return true;\n }\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.concat([\n [this.parameter],\n encodeFloatWithScale(this.value, this.scale.key),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n [getEnumMemberName(EnergyProductionParameter, this.parameter).toLowerCase()]: `${this.value} ${this.scale.unit}`,\n },\n };\n }\n}\n// @publicAPI\nexport interface EnergyProductionCCGetOptions {\n parameter: EnergyProductionParameter;\n}\nfunction testResponseForEnergyProductionGet(sent: EnergyProductionCCGet, received: EnergyProductionCCReport) {\n return received.parameter === sent.parameter;\n}\n@CCCommand(EnergyProductionCommand.Get)\n@expectedCCResponse(EnergyProductionCCReport, testResponseForEnergyProductionGet)\nexport class EnergyProductionCCGet extends EnergyProductionCC {\n public constructor(options: WithAddress<EnergyProductionCCGetOptions>) {\n super(options);\n this.parameter = options.parameter;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): EnergyProductionCCGet {\n validatePayload(raw.payload.length >= 1);\n const parameter: EnergyProductionParameter = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n });\n }\n public parameter: EnergyProductionParameter;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.parameter]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(EnergyProductionParameter, this.parameter),\n },\n };\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as __validateArgs from \"./EnergyProductionCC._validateArgs.js\";\nconst { validateArgs_EnergyProductionCCAPI_get } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, ValueMetadata, type WithAddress, encodeFloatWithScale, parseFloatWithScale, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName, pick } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, throwUnsupportedProperty, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValues, commandClass, expectedCCResponse, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { EnergyProductionCommand, EnergyProductionParameter, type EnergyProductionScale, getEnergyProductionScale, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { EnergyProductionCCValues } from \"./_CCValues.generated.js\";\nexport { EnergyProductionCCValues };\n@API(CommandClasses[\"Energy Production\"])\nexport class EnergyProductionCCAPI extends CCAPI {\n public supportsCommand(cmd: EnergyProductionCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case EnergyProductionCommand.Get:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: EnergyProductionCCAPI, { property, propertyKey }) {\n if (EnergyProductionCCValues.value.is({\n commandClass: this.ccId,\n property,\n propertyKey,\n })) {\n return (await this.get(property as EnergyProductionParameter))\n ?.value;\n }\n else {\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n @validateArgs_EnergyProductionCCAPI_get()\n public async get(parameter: EnergyProductionParameter): Promise<MaybeNotKnown<{\n value: number;\n scale: EnergyProductionScale;\n }>> {\n this.assertSupportsCommand(EnergyProductionCommand, EnergyProductionCommand.Get);\n const cc = new EnergyProductionCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n });\n const response = await this.host.sendCommand<EnergyProductionCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"value\", \"scale\"]);\n }\n }\n}\n@commandClass(CommandClasses[\"Energy Production\"])\n@implementedVersion(1)\n@ccValues(EnergyProductionCCValues)\nexport class EnergyProductionCC extends CommandClass {\n declare ccCommand: EnergyProductionCommand;\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 // Query current values\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[\"Energy Production\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n tag: options?.tag,\n });\n for (const parameter of [\n EnergyProductionParameter.Power,\n EnergyProductionParameter[\"Production Total\"],\n EnergyProductionParameter[\"Production Today\"],\n EnergyProductionParameter[\"Total Time\"],\n ] as const) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `querying energy production (${getEnumMemberName(EnergyProductionParameter, parameter)})...`,\n direction: \"outbound\",\n });\n await api.get(parameter);\n }\n }\n}\n// @publicAPI\nexport interface EnergyProductionCCReportOptions {\n parameter: EnergyProductionParameter;\n scale: EnergyProductionScale;\n value: number;\n}\n@CCCommand(EnergyProductionCommand.Report)\nexport class EnergyProductionCCReport extends EnergyProductionCC {\n public constructor(options: WithAddress<EnergyProductionCCReportOptions>) {\n super(options);\n this.parameter = options.parameter;\n this.value = options.value;\n this.scale = options.scale;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): EnergyProductionCCReport {\n validatePayload(raw.payload.length >= 2);\n const parameter: EnergyProductionParameter = raw.payload[0];\n const { value, scale: rawScale } = parseFloatWithScale(raw.payload.subarray(1));\n const scale: EnergyProductionScale = getEnergyProductionScale(parameter, rawScale);\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n value,\n scale,\n });\n }\n public readonly parameter: EnergyProductionParameter;\n public readonly scale: EnergyProductionScale;\n public readonly value: number;\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n const valueValue = EnergyProductionCCValues.value(this.parameter);\n this.setMetadata(ctx, valueValue, {\n ...valueValue.meta,\n unit: this.scale.unit,\n ccSpecific: {\n parameter: this.parameter,\n scale: this.scale.key,\n },\n });\n this.setValue(ctx, valueValue, this.value);\n return true;\n }\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.concat([\n [this.parameter],\n encodeFloatWithScale(this.value, this.scale.key),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n [getEnumMemberName(EnergyProductionParameter, this.parameter).toLowerCase()]: `${this.value} ${this.scale.unit}`,\n },\n };\n }\n}\n// @publicAPI\nexport interface EnergyProductionCCGetOptions {\n parameter: EnergyProductionParameter;\n}\nfunction testResponseForEnergyProductionGet(sent: EnergyProductionCCGet, received: EnergyProductionCCReport) {\n return received.parameter === sent.parameter;\n}\n@CCCommand(EnergyProductionCommand.Get)\n@expectedCCResponse(EnergyProductionCCReport, testResponseForEnergyProductionGet)\nexport class EnergyProductionCCGet extends EnergyProductionCC {\n public constructor(options: WithAddress<EnergyProductionCCGetOptions>) {\n super(options);\n this.parameter = options.parameter;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): EnergyProductionCCGet {\n validatePayload(raw.payload.length >= 1);\n const parameter: EnergyProductionParameter = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n });\n }\n public parameter: EnergyProductionParameter;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.parameter]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(EnergyProductionParameter, this.parameter),\n },\n };\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -212,7 +212,8 @@ let EntryControlCC = (() => {
212
212
  const node = this.getNode(ctx);
213
213
  const endpoint = this.getEndpoint(ctx);
214
214
  const api = import_API.CCAPI.create(import_core.CommandClasses["Entry Control"], ctx, endpoint).withOptions({
215
- priority: import_core.MessagePriority.NodeQuery
215
+ priority: import_core.MessagePriority.NodeQuery,
216
+ tag: "interview"
216
217
  });
217
218
  ctx.logNode(node.id, {
218
219
  endpoint: this.endpointIndex,
@@ -260,14 +261,15 @@ max key cache timeout: ${eventCapabilities.maxKeyCacheTimeout} seconds`,
260
261
  direction: "inbound"
261
262
  });
262
263
  }
263
- await this.refreshValues(ctx);
264
+ await this.refreshValues(ctx, { tag: "interview" });
264
265
  this.setInterviewComplete(ctx, true);
265
266
  }
266
267
  async refreshValues(ctx, options) {
267
268
  const node = this.getNode(ctx);
268
269
  const endpoint = this.getEndpoint(ctx);
269
270
  const api = import_API.CCAPI.create(import_core.CommandClasses["Entry Control"], ctx, endpoint).withOptions({
270
- priority: options?.priority ?? import_core.MessagePriority.NodeQuery
271
+ priority: options?.priority ?? import_core.MessagePriority.NodeQuery,
272
+ tag: options?.tag
271
273
  });
272
274
  ctx.logNode(node.id, {
273
275
  endpoint: this.endpointIndex,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/EntryControlCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./EntryControlCC._validateArgs.js\";\nconst { validateArgs_EntryControlCCAPI_setConfiguration } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type SupervisionResult, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, getCCName, parseBitMask, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, type BytesView, buffer2hex, pick } 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 { EntryControlCommand, EntryControlDataTypes, EntryControlEventTypes, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport * as ccUtils from \"../lib/utils.js\";\nimport { EntryControlCCValues } from \"./_CCValues.generated.js\";\nexport { EntryControlCCValues };\n@API(CommandClasses[\"Entry Control\"])\nexport class EntryControlCCAPI extends CCAPI {\n public supportsCommand(cmd: EntryControlCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case EntryControlCommand.KeySupportedGet:\n case EntryControlCommand.EventSupportedGet:\n case EntryControlCommand.ConfigurationGet:\n return this.isSinglecast();\n case EntryControlCommand.ConfigurationSet:\n return true;\n }\n return super.supportsCommand(cmd);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getSupportedKeys() {\n this.assertSupportsCommand(EntryControlCommand, EntryControlCommand.KeySupportedGet);\n const cc = new EntryControlCCKeySupportedGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<EntryControlCCKeySupportedReport>(cc, this.commandOptions);\n return response?.supportedKeys;\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getEventCapabilities() {\n this.assertSupportsCommand(EntryControlCommand, EntryControlCommand.EventSupportedGet);\n const cc = new EntryControlCCEventSupportedGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<EntryControlCCEventSupportedReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"supportedDataTypes\",\n \"supportedEventTypes\",\n \"minKeyCacheSize\",\n \"maxKeyCacheSize\",\n \"minKeyCacheTimeout\",\n \"maxKeyCacheTimeout\",\n ]);\n }\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getConfiguration() {\n this.assertSupportsCommand(EntryControlCommand, EntryControlCommand.ConfigurationGet);\n const cc = new EntryControlCCConfigurationGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<EntryControlCCConfigurationReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"keyCacheSize\", \"keyCacheTimeout\"]);\n }\n }\n @validateArgs_EntryControlCCAPI_setConfiguration()\n public async setConfiguration(keyCacheSize: number, keyCacheTimeout: number): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(EntryControlCommand, EntryControlCommand.ConfigurationGet);\n const cc = new EntryControlCCConfigurationSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n keyCacheSize,\n keyCacheTimeout,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: EntryControlCCAPI, { property }, value) {\n if (property !== \"keyCacheSize\" && property !== \"keyCacheTimeout\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n let keyCacheSize = value;\n let keyCacheTimeout = 2;\n if (property === \"keyCacheTimeout\") {\n keyCacheTimeout = value;\n const oldKeyCacheSize = this.tryGetValueDB()?.getValue<number>(EntryControlCCValues.keyCacheSize.endpoint(this.endpoint.index));\n if (oldKeyCacheSize == undefined) {\n throw new ZWaveError(`The \"keyCacheTimeout\" property cannot be changed before the key cache size is known!`, ZWaveErrorCodes.Argument_Invalid);\n }\n keyCacheSize = oldKeyCacheSize;\n }\n const result = await this.setConfiguration(keyCacheSize, keyCacheTimeout);\n // Verify the change after a short delay, unless the command was supervised and successful\n if (this.isSinglecast() && !supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value, { transition: \"fast\" });\n }\n return result;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: EntryControlCCAPI, { property }) {\n switch (property) {\n case \"keyCacheSize\":\n case \"keyCacheTimeout\":\n return (await this.getConfiguration())?.[property];\n }\n throwUnsupportedProperty(this.ccId, property);\n };\n }\n}\n@commandClass(CommandClasses[\"Entry Control\"])\n@implementedVersion(1)\n@ccValues(EntryControlCCValues)\nexport class EntryControlCC extends CommandClass {\n declare ccCommand: EntryControlCommand;\n public determineRequiredCCInterviews(): readonly CommandClasses[] {\n return [\n ...super.determineRequiredCCInterviews(),\n CommandClasses.Association,\n CommandClasses[\"Multi Channel Association\"],\n CommandClasses[\"Association Group Information\"],\n ];\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[\"Entry Control\"], 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 // If one Association group issues Entry Control notifications,\n // we must associate ourselves with that channel\n try {\n await ccUtils.assignLifelineIssueingCommand(ctx, endpoint, this.ccId, EntryControlCommand.Notification);\n }\n catch {\n ctx.logNode(node.id, {\n endpoint: endpoint.index,\n message: `Configuring associations to receive ${getCCName(this.ccId)} commands failed!`,\n level: \"warn\",\n });\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"requesting entry control supported keys...\",\n direction: \"outbound\",\n });\n const supportedKeys = await api.getSupportedKeys();\n if (supportedKeys) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `received entry control supported keys: ${supportedKeys.toString()}`,\n direction: \"inbound\",\n });\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"requesting entry control supported events...\",\n direction: \"outbound\",\n });\n const eventCapabilities = await api.getEventCapabilities();\n if (eventCapabilities) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `received entry control supported keys:\ndata types: ${eventCapabilities.supportedDataTypes\n .map((e) => EntryControlDataTypes[e])\n .toString()}\nevent types: ${eventCapabilities.supportedEventTypes\n .map((e) => EntryControlEventTypes[e])\n .toString()}\nmin key cache size: ${eventCapabilities.minKeyCacheSize}\nmax key cache size: ${eventCapabilities.maxKeyCacheSize}\nmin key cache timeout: ${eventCapabilities.minKeyCacheTimeout} seconds\nmax key cache timeout: ${eventCapabilities.maxKeyCacheTimeout} seconds`,\n direction: \"inbound\",\n });\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[\"Entry Control\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"requesting entry control configuration...\",\n direction: \"outbound\",\n });\n const conf = await api.getConfiguration();\n if (conf) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `received entry control configuration:\nkey cache size: ${conf.keyCacheSize}\nkey cache timeout: ${conf.keyCacheTimeout} seconds`,\n direction: \"inbound\",\n });\n }\n }\n}\n// @publicAPI\nexport interface EntryControlCCNotificationOptions {\n sequenceNumber: number;\n dataType: EntryControlDataTypes;\n eventType: EntryControlEventTypes;\n eventData?: string | Bytes;\n}\n@CCCommand(EntryControlCommand.Notification)\nexport class EntryControlCCNotification extends EntryControlCC {\n public constructor(options: WithAddress<EntryControlCCNotificationOptions>) {\n super(options);\n // TODO: Check implementation:\n this.sequenceNumber = options.sequenceNumber;\n this.dataType = options.dataType;\n this.eventType = options.eventType;\n this.eventData = options.eventData;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): EntryControlCCNotification {\n validatePayload(raw.payload.length >= 4);\n const sequenceNumber = raw.payload[0];\n let dataType: EntryControlDataTypes = raw.payload[1] & 0b11;\n const eventType: EntryControlEventTypes = raw.payload[2];\n const eventDataLength = raw.payload[3];\n validatePayload(eventDataLength >= 0 && eventDataLength <= 32);\n const offset = 4;\n validatePayload(raw.payload.length >= offset + eventDataLength);\n let eventData: string | Bytes | undefined;\n if (eventDataLength > 0) {\n // We shouldn't need to check this, since the specs are pretty clear which format to expect.\n // But as always - manufacturers don't care and send ASCII data with 0 bytes...\n // We also need to disable the strict validation for some devices to make them work\n const noStrictValidation = !!ctx.getDeviceConfig?.(ctx.sourceNodeId)?.compat?.disableStrictEntryControlDataValidation;\n eventData = Bytes.from(raw.payload.subarray(offset, offset + eventDataLength));\n switch (dataType) {\n case EntryControlDataTypes.Raw:\n // RAW 1 to 32 bytes of arbitrary binary data\n if (!noStrictValidation) {\n validatePayload(eventDataLength >= 1 && eventDataLength <= 32);\n }\n break;\n case EntryControlDataTypes.ASCII:\n // ASCII 1 to 32 ASCII encoded characters. ASCII codes MUST be in the value range 0x00-0xF7.\n // The string MUST be padded with the value 0xFF to fit 16 byte blocks when sent in a notification.\n // However, some devices do not follow this requirement, so we accept unpadded strings as well.\n // Trim 0xff padding bytes\n let paddingStart = eventDataLength;\n while (paddingStart > 0\n && eventData[paddingStart - 1] === 0xff) {\n paddingStart--;\n }\n eventData = eventData.subarray(0, paddingStart).toString(\"ascii\");\n if (!noStrictValidation) {\n validatePayload(/^[\\u0000-\\u007f]+$/.test(eventData));\n }\n break;\n case EntryControlDataTypes.MD5:\n // MD5 16 byte binary data encoded as a MD5 hash value.\n if (!noStrictValidation) {\n validatePayload(eventDataLength === 16);\n }\n break;\n }\n }\n else {\n dataType = EntryControlDataTypes.None;\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n sequenceNumber,\n dataType,\n eventType,\n eventData,\n });\n }\n public readonly sequenceNumber: number;\n public readonly dataType: EntryControlDataTypes;\n public readonly eventType: EntryControlEventTypes;\n public readonly eventData?: BytesView | string;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"sequence number\": this.sequenceNumber,\n \"data type\": this.dataType,\n \"event type\": this.eventType,\n };\n if (this.eventData) {\n switch (this.eventType) {\n case EntryControlEventTypes.CachedKeys:\n case EntryControlEventTypes.Enter:\n // The event data is likely the user's PIN code, hide it from logs\n message[\"event data\"] = \"*\".repeat(this.eventData.length);\n break;\n default:\n message[\"event data\"] = typeof this.eventData === \"string\"\n ? this.eventData\n : buffer2hex(this.eventData);\n }\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface EntryControlCCKeySupportedReportOptions {\n supportedKeys: number[];\n}\n@CCCommand(EntryControlCommand.KeySupportedReport)\n@ccValueProperty(\"supportedKeys\", EntryControlCCValues.supportedKeys)\nexport class EntryControlCCKeySupportedReport extends EntryControlCC {\n public constructor(options: WithAddress<EntryControlCCKeySupportedReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.supportedKeys = options.supportedKeys;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): EntryControlCCKeySupportedReport {\n validatePayload(raw.payload.length >= 1);\n const length = raw.payload[0];\n validatePayload(raw.payload.length >= 1 + length);\n const supportedKeys = parseBitMask(raw.payload.subarray(1, 1 + length), 0);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedKeys,\n });\n }\n public readonly supportedKeys: readonly number[];\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { \"supported keys\": this.supportedKeys.toString() },\n };\n }\n}\n@CCCommand(EntryControlCommand.KeySupportedGet)\n@expectedCCResponse(EntryControlCCKeySupportedReport)\nexport class EntryControlCCKeySupportedGet extends EntryControlCC {\n}\n// @publicAPI\nexport interface EntryControlCCEventSupportedReportOptions {\n supportedDataTypes: EntryControlDataTypes[];\n supportedEventTypes: EntryControlEventTypes[];\n minKeyCacheSize: number;\n maxKeyCacheSize: number;\n minKeyCacheTimeout: number;\n maxKeyCacheTimeout: number;\n}\n@CCCommand(EntryControlCommand.EventSupportedReport)\n@ccValueProperty(\"supportedDataTypes\", EntryControlCCValues.supportedDataTypes)\n@ccValueProperty(\"supportedEventTypes\", EntryControlCCValues.supportedEventTypes)\nexport class EntryControlCCEventSupportedReport extends EntryControlCC {\n public constructor(options: WithAddress<EntryControlCCEventSupportedReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.supportedDataTypes = options.supportedDataTypes;\n this.supportedEventTypes = options.supportedEventTypes;\n this.minKeyCacheSize = options.minKeyCacheSize;\n this.maxKeyCacheSize = options.maxKeyCacheSize;\n this.minKeyCacheTimeout = options.minKeyCacheTimeout;\n this.maxKeyCacheTimeout = options.maxKeyCacheTimeout;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): EntryControlCCEventSupportedReport {\n validatePayload(raw.payload.length >= 1);\n const dataTypeLength = raw.payload[0] & 0b11;\n let offset = 1;\n validatePayload(raw.payload.length >= offset + dataTypeLength);\n const supportedDataTypes: EntryControlDataTypes[] = parseBitMask(raw.payload.subarray(offset, offset + dataTypeLength), EntryControlDataTypes.None);\n offset += dataTypeLength;\n validatePayload(raw.payload.length >= offset + 1);\n const eventTypeLength = raw.payload[offset] & 0b11111;\n offset += 1;\n validatePayload(raw.payload.length >= offset + eventTypeLength);\n const supportedEventTypes: EntryControlEventTypes[] = parseBitMask(raw.payload.subarray(offset, offset + eventTypeLength), EntryControlEventTypes.Caching);\n offset += eventTypeLength;\n validatePayload(raw.payload.length >= offset + 4);\n const minKeyCacheSize = raw.payload[offset];\n validatePayload(minKeyCacheSize >= 1 && minKeyCacheSize <= 32);\n const maxKeyCacheSize = raw.payload[offset + 1];\n validatePayload(maxKeyCacheSize >= minKeyCacheSize\n && maxKeyCacheSize <= 32);\n const minKeyCacheTimeout = raw.payload[offset + 2];\n const maxKeyCacheTimeout = raw.payload[offset + 3];\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedDataTypes,\n supportedEventTypes,\n minKeyCacheSize,\n maxKeyCacheSize,\n minKeyCacheTimeout,\n maxKeyCacheTimeout,\n });\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // Store min/max cache size and timeout as metadata\n const keyCacheSizeValue = EntryControlCCValues.keyCacheSize;\n this.setMetadata(ctx, keyCacheSizeValue, {\n ...keyCacheSizeValue.meta,\n min: this.minKeyCacheSize,\n max: this.maxKeyCacheSize,\n });\n const keyCacheTimeoutValue = EntryControlCCValues.keyCacheTimeout;\n this.setMetadata(ctx, keyCacheTimeoutValue, {\n ...keyCacheTimeoutValue.meta,\n min: this.minKeyCacheTimeout,\n max: this.maxKeyCacheTimeout,\n });\n return true;\n }\n public readonly supportedDataTypes: readonly EntryControlDataTypes[];\n public readonly supportedEventTypes: readonly EntryControlEventTypes[];\n public readonly minKeyCacheSize: number;\n public readonly maxKeyCacheSize: number;\n public readonly minKeyCacheTimeout: number;\n public readonly maxKeyCacheTimeout: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supported data types\": this.supportedDataTypes\n .map((dt) => EntryControlDataTypes[dt])\n .toString(),\n \"supported event types\": this.supportedEventTypes\n .map((et) => EntryControlEventTypes[et])\n .toString(),\n \"min key cache size\": this.minKeyCacheSize,\n \"max key cache size\": this.maxKeyCacheSize,\n \"min key cache timeout\": this.minKeyCacheTimeout,\n \"max key cache timeout\": this.maxKeyCacheTimeout,\n },\n };\n }\n}\n@CCCommand(EntryControlCommand.EventSupportedGet)\n@expectedCCResponse(EntryControlCCEventSupportedReport)\nexport class EntryControlCCEventSupportedGet extends EntryControlCC {\n}\n// @publicAPI\nexport interface EntryControlCCConfigurationReportOptions {\n keyCacheSize: number;\n keyCacheTimeout: number;\n}\n@CCCommand(EntryControlCommand.ConfigurationReport)\n@ccValueProperty(\"keyCacheSize\", EntryControlCCValues.keyCacheSize)\n@ccValueProperty(\"keyCacheTimeout\", EntryControlCCValues.keyCacheTimeout)\nexport class EntryControlCCConfigurationReport extends EntryControlCC {\n public constructor(options: WithAddress<EntryControlCCConfigurationReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.keyCacheSize = options.keyCacheSize;\n this.keyCacheTimeout = options.keyCacheTimeout;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): EntryControlCCConfigurationReport {\n validatePayload(raw.payload.length >= 2);\n const keyCacheSize = raw.payload[0];\n validatePayload(keyCacheSize >= 1 && keyCacheSize <= 32);\n const keyCacheTimeout = raw.payload[1];\n return new this({\n nodeId: ctx.sourceNodeId,\n keyCacheSize,\n keyCacheTimeout,\n });\n }\n public readonly keyCacheSize: number;\n public readonly keyCacheTimeout: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"key cache size\": this.keyCacheSize,\n \"key cache timeout\": this.keyCacheTimeout,\n },\n };\n }\n}\n@CCCommand(EntryControlCommand.ConfigurationGet)\n@expectedCCResponse(EntryControlCCConfigurationReport)\nexport class EntryControlCCConfigurationGet extends EntryControlCC {\n}\n// @publicAPI\nexport interface EntryControlCCConfigurationSetOptions {\n keyCacheSize: number;\n keyCacheTimeout: number;\n}\n@CCCommand(EntryControlCommand.ConfigurationSet)\n@useSupervision()\nexport class EntryControlCCConfigurationSet extends EntryControlCC {\n public constructor(options: WithAddress<EntryControlCCConfigurationSetOptions>) {\n super(options);\n this.keyCacheSize = options.keyCacheSize;\n this.keyCacheTimeout = options.keyCacheTimeout;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): EntryControlCCConfigurationSet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new EntryControlCCConfigurationSet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public readonly keyCacheSize: number;\n public readonly keyCacheTimeout: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.keyCacheSize, this.keyCacheTimeout]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"key cache size\": this.keyCacheSize,\n \"key cache timeout\": this.keyCacheTimeout,\n },\n };\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as __validateArgs from \"./EntryControlCC._validateArgs.js\";\nconst { validateArgs_EntryControlCCAPI_setConfiguration } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type SupervisionResult, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, getCCName, parseBitMask, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, type BytesView, buffer2hex, pick } 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 { EntryControlCommand, EntryControlDataTypes, EntryControlEventTypes, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport * as ccUtils from \"../lib/utils.js\";\nimport { EntryControlCCValues } from \"./_CCValues.generated.js\";\nexport { EntryControlCCValues };\n@API(CommandClasses[\"Entry Control\"])\nexport class EntryControlCCAPI extends CCAPI {\n public supportsCommand(cmd: EntryControlCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case EntryControlCommand.KeySupportedGet:\n case EntryControlCommand.EventSupportedGet:\n case EntryControlCommand.ConfigurationGet:\n return this.isSinglecast();\n case EntryControlCommand.ConfigurationSet:\n return true;\n }\n return super.supportsCommand(cmd);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getSupportedKeys() {\n this.assertSupportsCommand(EntryControlCommand, EntryControlCommand.KeySupportedGet);\n const cc = new EntryControlCCKeySupportedGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<EntryControlCCKeySupportedReport>(cc, this.commandOptions);\n return response?.supportedKeys;\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getEventCapabilities() {\n this.assertSupportsCommand(EntryControlCommand, EntryControlCommand.EventSupportedGet);\n const cc = new EntryControlCCEventSupportedGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<EntryControlCCEventSupportedReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"supportedDataTypes\",\n \"supportedEventTypes\",\n \"minKeyCacheSize\",\n \"maxKeyCacheSize\",\n \"minKeyCacheTimeout\",\n \"maxKeyCacheTimeout\",\n ]);\n }\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getConfiguration() {\n this.assertSupportsCommand(EntryControlCommand, EntryControlCommand.ConfigurationGet);\n const cc = new EntryControlCCConfigurationGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<EntryControlCCConfigurationReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"keyCacheSize\", \"keyCacheTimeout\"]);\n }\n }\n @validateArgs_EntryControlCCAPI_setConfiguration()\n public async setConfiguration(keyCacheSize: number, keyCacheTimeout: number): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(EntryControlCommand, EntryControlCommand.ConfigurationGet);\n const cc = new EntryControlCCConfigurationSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n keyCacheSize,\n keyCacheTimeout,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: EntryControlCCAPI, { property }, value) {\n if (property !== \"keyCacheSize\" && property !== \"keyCacheTimeout\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n let keyCacheSize = value;\n let keyCacheTimeout = 2;\n if (property === \"keyCacheTimeout\") {\n keyCacheTimeout = value;\n const oldKeyCacheSize = this.tryGetValueDB()?.getValue<number>(EntryControlCCValues.keyCacheSize.endpoint(this.endpoint.index));\n if (oldKeyCacheSize == undefined) {\n throw new ZWaveError(`The \"keyCacheTimeout\" property cannot be changed before the key cache size is known!`, ZWaveErrorCodes.Argument_Invalid);\n }\n keyCacheSize = oldKeyCacheSize;\n }\n const result = await this.setConfiguration(keyCacheSize, keyCacheTimeout);\n // Verify the change after a short delay, unless the command was supervised and successful\n if (this.isSinglecast() && !supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value, { transition: \"fast\" });\n }\n return result;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: EntryControlCCAPI, { property }) {\n switch (property) {\n case \"keyCacheSize\":\n case \"keyCacheTimeout\":\n return (await this.getConfiguration())?.[property];\n }\n throwUnsupportedProperty(this.ccId, property);\n };\n }\n}\n@commandClass(CommandClasses[\"Entry Control\"])\n@implementedVersion(1)\n@ccValues(EntryControlCCValues)\nexport class EntryControlCC extends CommandClass {\n declare ccCommand: EntryControlCommand;\n public determineRequiredCCInterviews(): readonly CommandClasses[] {\n return [\n ...super.determineRequiredCCInterviews(),\n CommandClasses.Association,\n CommandClasses[\"Multi Channel Association\"],\n CommandClasses[\"Association Group Information\"],\n ];\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[\"Entry Control\"], 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 // If one Association group issues Entry Control notifications,\n // we must associate ourselves with that channel\n try {\n await ccUtils.assignLifelineIssueingCommand(ctx, endpoint, this.ccId, EntryControlCommand.Notification);\n }\n catch {\n ctx.logNode(node.id, {\n endpoint: endpoint.index,\n message: `Configuring associations to receive ${getCCName(this.ccId)} commands failed!`,\n level: \"warn\",\n });\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"requesting entry control supported keys...\",\n direction: \"outbound\",\n });\n const supportedKeys = await api.getSupportedKeys();\n if (supportedKeys) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `received entry control supported keys: ${supportedKeys.toString()}`,\n direction: \"inbound\",\n });\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"requesting entry control supported events...\",\n direction: \"outbound\",\n });\n const eventCapabilities = await api.getEventCapabilities();\n if (eventCapabilities) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `received entry control supported keys:\ndata types: ${eventCapabilities.supportedDataTypes\n .map((e) => EntryControlDataTypes[e])\n .toString()}\nevent types: ${eventCapabilities.supportedEventTypes\n .map((e) => EntryControlEventTypes[e])\n .toString()}\nmin key cache size: ${eventCapabilities.minKeyCacheSize}\nmax key cache size: ${eventCapabilities.maxKeyCacheSize}\nmin key cache timeout: ${eventCapabilities.minKeyCacheTimeout} seconds\nmax key cache timeout: ${eventCapabilities.maxKeyCacheTimeout} seconds`,\n direction: \"inbound\",\n });\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[\"Entry Control\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n tag: options?.tag,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"requesting entry control configuration...\",\n direction: \"outbound\",\n });\n const conf = await api.getConfiguration();\n if (conf) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `received entry control configuration:\nkey cache size: ${conf.keyCacheSize}\nkey cache timeout: ${conf.keyCacheTimeout} seconds`,\n direction: \"inbound\",\n });\n }\n }\n}\n// @publicAPI\nexport interface EntryControlCCNotificationOptions {\n sequenceNumber: number;\n dataType: EntryControlDataTypes;\n eventType: EntryControlEventTypes;\n eventData?: string | Bytes;\n}\n@CCCommand(EntryControlCommand.Notification)\nexport class EntryControlCCNotification extends EntryControlCC {\n public constructor(options: WithAddress<EntryControlCCNotificationOptions>) {\n super(options);\n // TODO: Check implementation:\n this.sequenceNumber = options.sequenceNumber;\n this.dataType = options.dataType;\n this.eventType = options.eventType;\n this.eventData = options.eventData;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): EntryControlCCNotification {\n validatePayload(raw.payload.length >= 4);\n const sequenceNumber = raw.payload[0];\n let dataType: EntryControlDataTypes = raw.payload[1] & 0b11;\n const eventType: EntryControlEventTypes = raw.payload[2];\n const eventDataLength = raw.payload[3];\n validatePayload(eventDataLength >= 0 && eventDataLength <= 32);\n const offset = 4;\n validatePayload(raw.payload.length >= offset + eventDataLength);\n let eventData: string | Bytes | undefined;\n if (eventDataLength > 0) {\n // We shouldn't need to check this, since the specs are pretty clear which format to expect.\n // But as always - manufacturers don't care and send ASCII data with 0 bytes...\n // We also need to disable the strict validation for some devices to make them work\n const noStrictValidation = !!ctx.getDeviceConfig?.(ctx.sourceNodeId)?.compat?.disableStrictEntryControlDataValidation;\n eventData = Bytes.from(raw.payload.subarray(offset, offset + eventDataLength));\n switch (dataType) {\n case EntryControlDataTypes.Raw:\n // RAW 1 to 32 bytes of arbitrary binary data\n if (!noStrictValidation) {\n validatePayload(eventDataLength >= 1 && eventDataLength <= 32);\n }\n break;\n case EntryControlDataTypes.ASCII:\n // ASCII 1 to 32 ASCII encoded characters. ASCII codes MUST be in the value range 0x00-0xF7.\n // The string MUST be padded with the value 0xFF to fit 16 byte blocks when sent in a notification.\n // However, some devices do not follow this requirement, so we accept unpadded strings as well.\n // Trim 0xff padding bytes\n let paddingStart = eventDataLength;\n while (paddingStart > 0\n && eventData[paddingStart - 1] === 0xff) {\n paddingStart--;\n }\n eventData = eventData.subarray(0, paddingStart).toString(\"ascii\");\n if (!noStrictValidation) {\n validatePayload(/^[\\u0000-\\u007f]+$/.test(eventData));\n }\n break;\n case EntryControlDataTypes.MD5:\n // MD5 16 byte binary data encoded as a MD5 hash value.\n if (!noStrictValidation) {\n validatePayload(eventDataLength === 16);\n }\n break;\n }\n }\n else {\n dataType = EntryControlDataTypes.None;\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n sequenceNumber,\n dataType,\n eventType,\n eventData,\n });\n }\n public readonly sequenceNumber: number;\n public readonly dataType: EntryControlDataTypes;\n public readonly eventType: EntryControlEventTypes;\n public readonly eventData?: BytesView | string;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"sequence number\": this.sequenceNumber,\n \"data type\": this.dataType,\n \"event type\": this.eventType,\n };\n if (this.eventData) {\n switch (this.eventType) {\n case EntryControlEventTypes.CachedKeys:\n case EntryControlEventTypes.Enter:\n // The event data is likely the user's PIN code, hide it from logs\n message[\"event data\"] = \"*\".repeat(this.eventData.length);\n break;\n default:\n message[\"event data\"] = typeof this.eventData === \"string\"\n ? this.eventData\n : buffer2hex(this.eventData);\n }\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface EntryControlCCKeySupportedReportOptions {\n supportedKeys: number[];\n}\n@CCCommand(EntryControlCommand.KeySupportedReport)\n@ccValueProperty(\"supportedKeys\", EntryControlCCValues.supportedKeys)\nexport class EntryControlCCKeySupportedReport extends EntryControlCC {\n public constructor(options: WithAddress<EntryControlCCKeySupportedReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.supportedKeys = options.supportedKeys;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): EntryControlCCKeySupportedReport {\n validatePayload(raw.payload.length >= 1);\n const length = raw.payload[0];\n validatePayload(raw.payload.length >= 1 + length);\n const supportedKeys = parseBitMask(raw.payload.subarray(1, 1 + length), 0);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedKeys,\n });\n }\n public readonly supportedKeys: readonly number[];\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { \"supported keys\": this.supportedKeys.toString() },\n };\n }\n}\n@CCCommand(EntryControlCommand.KeySupportedGet)\n@expectedCCResponse(EntryControlCCKeySupportedReport)\nexport class EntryControlCCKeySupportedGet extends EntryControlCC {\n}\n// @publicAPI\nexport interface EntryControlCCEventSupportedReportOptions {\n supportedDataTypes: EntryControlDataTypes[];\n supportedEventTypes: EntryControlEventTypes[];\n minKeyCacheSize: number;\n maxKeyCacheSize: number;\n minKeyCacheTimeout: number;\n maxKeyCacheTimeout: number;\n}\n@CCCommand(EntryControlCommand.EventSupportedReport)\n@ccValueProperty(\"supportedDataTypes\", EntryControlCCValues.supportedDataTypes)\n@ccValueProperty(\"supportedEventTypes\", EntryControlCCValues.supportedEventTypes)\nexport class EntryControlCCEventSupportedReport extends EntryControlCC {\n public constructor(options: WithAddress<EntryControlCCEventSupportedReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.supportedDataTypes = options.supportedDataTypes;\n this.supportedEventTypes = options.supportedEventTypes;\n this.minKeyCacheSize = options.minKeyCacheSize;\n this.maxKeyCacheSize = options.maxKeyCacheSize;\n this.minKeyCacheTimeout = options.minKeyCacheTimeout;\n this.maxKeyCacheTimeout = options.maxKeyCacheTimeout;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): EntryControlCCEventSupportedReport {\n validatePayload(raw.payload.length >= 1);\n const dataTypeLength = raw.payload[0] & 0b11;\n let offset = 1;\n validatePayload(raw.payload.length >= offset + dataTypeLength);\n const supportedDataTypes: EntryControlDataTypes[] = parseBitMask(raw.payload.subarray(offset, offset + dataTypeLength), EntryControlDataTypes.None);\n offset += dataTypeLength;\n validatePayload(raw.payload.length >= offset + 1);\n const eventTypeLength = raw.payload[offset] & 0b11111;\n offset += 1;\n validatePayload(raw.payload.length >= offset + eventTypeLength);\n const supportedEventTypes: EntryControlEventTypes[] = parseBitMask(raw.payload.subarray(offset, offset + eventTypeLength), EntryControlEventTypes.Caching);\n offset += eventTypeLength;\n validatePayload(raw.payload.length >= offset + 4);\n const minKeyCacheSize = raw.payload[offset];\n validatePayload(minKeyCacheSize >= 1 && minKeyCacheSize <= 32);\n const maxKeyCacheSize = raw.payload[offset + 1];\n validatePayload(maxKeyCacheSize >= minKeyCacheSize\n && maxKeyCacheSize <= 32);\n const minKeyCacheTimeout = raw.payload[offset + 2];\n const maxKeyCacheTimeout = raw.payload[offset + 3];\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedDataTypes,\n supportedEventTypes,\n minKeyCacheSize,\n maxKeyCacheSize,\n minKeyCacheTimeout,\n maxKeyCacheTimeout,\n });\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // Store min/max cache size and timeout as metadata\n const keyCacheSizeValue = EntryControlCCValues.keyCacheSize;\n this.setMetadata(ctx, keyCacheSizeValue, {\n ...keyCacheSizeValue.meta,\n min: this.minKeyCacheSize,\n max: this.maxKeyCacheSize,\n });\n const keyCacheTimeoutValue = EntryControlCCValues.keyCacheTimeout;\n this.setMetadata(ctx, keyCacheTimeoutValue, {\n ...keyCacheTimeoutValue.meta,\n min: this.minKeyCacheTimeout,\n max: this.maxKeyCacheTimeout,\n });\n return true;\n }\n public readonly supportedDataTypes: readonly EntryControlDataTypes[];\n public readonly supportedEventTypes: readonly EntryControlEventTypes[];\n public readonly minKeyCacheSize: number;\n public readonly maxKeyCacheSize: number;\n public readonly minKeyCacheTimeout: number;\n public readonly maxKeyCacheTimeout: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supported data types\": this.supportedDataTypes\n .map((dt) => EntryControlDataTypes[dt])\n .toString(),\n \"supported event types\": this.supportedEventTypes\n .map((et) => EntryControlEventTypes[et])\n .toString(),\n \"min key cache size\": this.minKeyCacheSize,\n \"max key cache size\": this.maxKeyCacheSize,\n \"min key cache timeout\": this.minKeyCacheTimeout,\n \"max key cache timeout\": this.maxKeyCacheTimeout,\n },\n };\n }\n}\n@CCCommand(EntryControlCommand.EventSupportedGet)\n@expectedCCResponse(EntryControlCCEventSupportedReport)\nexport class EntryControlCCEventSupportedGet extends EntryControlCC {\n}\n// @publicAPI\nexport interface EntryControlCCConfigurationReportOptions {\n keyCacheSize: number;\n keyCacheTimeout: number;\n}\n@CCCommand(EntryControlCommand.ConfigurationReport)\n@ccValueProperty(\"keyCacheSize\", EntryControlCCValues.keyCacheSize)\n@ccValueProperty(\"keyCacheTimeout\", EntryControlCCValues.keyCacheTimeout)\nexport class EntryControlCCConfigurationReport extends EntryControlCC {\n public constructor(options: WithAddress<EntryControlCCConfigurationReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.keyCacheSize = options.keyCacheSize;\n this.keyCacheTimeout = options.keyCacheTimeout;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): EntryControlCCConfigurationReport {\n validatePayload(raw.payload.length >= 2);\n const keyCacheSize = raw.payload[0];\n validatePayload(keyCacheSize >= 1 && keyCacheSize <= 32);\n const keyCacheTimeout = raw.payload[1];\n return new this({\n nodeId: ctx.sourceNodeId,\n keyCacheSize,\n keyCacheTimeout,\n });\n }\n public readonly keyCacheSize: number;\n public readonly keyCacheTimeout: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"key cache size\": this.keyCacheSize,\n \"key cache timeout\": this.keyCacheTimeout,\n },\n };\n }\n}\n@CCCommand(EntryControlCommand.ConfigurationGet)\n@expectedCCResponse(EntryControlCCConfigurationReport)\nexport class EntryControlCCConfigurationGet extends EntryControlCC {\n}\n// @publicAPI\nexport interface EntryControlCCConfigurationSetOptions {\n keyCacheSize: number;\n keyCacheTimeout: number;\n}\n@CCCommand(EntryControlCommand.ConfigurationSet)\n@useSupervision()\nexport class EntryControlCCConfigurationSet extends EntryControlCC {\n public constructor(options: WithAddress<EntryControlCCConfigurationSetOptions>) {\n super(options);\n this.keyCacheSize = options.keyCacheSize;\n this.keyCacheTimeout = options.keyCacheTimeout;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): EntryControlCCConfigurationSet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new EntryControlCCConfigurationSet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public readonly keyCacheSize: number;\n public readonly keyCacheTimeout: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.keyCacheSize, this.keyCacheTimeout]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"key cache size\": this.keyCacheSize,\n \"key cache timeout\": this.keyCacheTimeout,\n },\n };\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -255,7 +255,8 @@ let FirmwareUpdateMetaDataCC = (() => {
255
255
  const node = this.getNode(ctx);
256
256
  const endpoint = this.getEndpoint(ctx);
257
257
  const api = import_API.CCAPI.create(import_core.CommandClasses["Firmware Update Meta Data"], ctx, endpoint).withOptions({
258
- priority: import_core.MessagePriority.NodeQuery
258
+ priority: import_core.MessagePriority.NodeQuery,
259
+ tag: "interview"
259
260
  });
260
261
  ctx.logNode(node.id, {
261
262
  endpoint: this.endpointIndex,
@@ -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
  }