From ecb65ee7d7c2361c751fc1a8a0112b97f7f3dbb5 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Tue, 4 Apr 2023 18:50:26 -0400 Subject: [PATCH] Add documentation from xml into IDL files (#25909) * Add documentation from xml into IDL files * Remove an extra newline --- .../all-clusters-app.matter | 93 ++++++ .../all-clusters-minimal-app.matter | 80 +++++ .../bridge-common/bridge-app.matter | 45 +++ ...p_rootnode_dimmablelight_bCwGYSDpoe.matter | 42 +++ ...de_colortemperaturelight_hbUnzYVeyn.matter | 26 ++ .../rootnode_contactsensor_lFAGG1bfRO.matter | 38 +++ .../rootnode_dimmablelight_bCwGYSDpoe.matter | 40 +++ .../rootnode_doorlock_aNKYAreMXE.matter | 38 +++ ...tnode_extendedcolorlight_8lcaaYJVAa.matter | 40 +++ .../devices/rootnode_fan_7N2TobIlOX.matter | 37 +++ .../rootnode_flowsensor_1zVxHedlaV.matter | 45 +++ ...tnode_heatingcoolingunit_ncdGai1E5a.matter | 45 +++ .../rootnode_humiditysensor_Xyj4gda6Hb.matter | 45 +++ .../rootnode_lightsensor_lZQycTFcJK.matter | 45 +++ ...rootnode_occupancysensor_iHyVgifZuo.matter | 45 +++ .../rootnode_onofflight_bbs1b7IaOV.matter | 39 +++ ...ootnode_onofflightswitch_FsPlMr090Q.matter | 45 +++ ...rootnode_onoffpluginunit_Wtf8ss5EBY.matter | 38 +++ .../rootnode_pressuresensor_s0qC9wLH4k.matter | 46 +++ .../rootnode_speaker_RpzeXdimqA.matter | 39 +++ ...otnode_temperaturesensor_Qy1zkNW7c3.matter | 45 +++ .../rootnode_thermostat_bm3fb8dhYi.matter | 43 +++ .../rootnode_windowcovering_RLCxaGi9Yx.matter | 38 +++ .../contact-sensor-app.matter | 39 +++ .../bridge-common/bridge-app.matter | 45 +++ .../light-switch-app.matter | 82 +++++ .../data_model/lighting-app-thread.matter | 42 +++ .../data_model/lighting-app-wifi.matter | 42 +++ .../lighting-common/lighting-app.matter | 44 +++ .../nxp/zap/lighting-on-off.matter | 25 ++ examples/lighting-app/qpg/zap/light.matter | 30 ++ .../data_model/lighting-wifi-app.matter | 38 +++ .../data_model/lighting-thread-app.matter | 38 +++ .../efr32/data_model/lighting-wifi-app.matter | 38 +++ examples/lock-app/lock-common/lock-app.matter | 40 +++ examples/lock-app/nxp/zap/lock-app.matter | 18 ++ examples/lock-app/qpg/zap/lock.matter | 28 ++ .../log-source-common/log-source-app.matter | 10 + .../ota-provider-app.matter | 30 ++ .../ota-requestor-app.matter | 33 ++ .../placeholder/linux/apps/app1/config.matter | 105 +++++++ .../placeholder/linux/apps/app2/config.matter | 97 ++++++ examples/pump-app/pump-common/pump-app.matter | 29 ++ .../pump-controller-app.matter | 33 ++ .../temperature-measurement.matter | 34 ++ .../thermostat-common/thermostat.matter | 48 +++ examples/tv-app/tv-common/tv-app.matter | 72 +++++ .../tv-casting-common/tv-casting-app.matter | 106 +++++++ examples/window-app/common/window-app.matter | 43 +++ .../idl/command_request_response.zapt | 3 + .../templates/app/MatterIDL.zapt | 7 +- .../data_model/controller-clusters.matter | 296 ++++++++++++++++++ 52 files changed, 2528 insertions(+), 4 deletions(-) diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter index fe1dbda788f2e5..0abd00c4ac5bd0 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for scene configuration and manipulation. */ server cluster Scenes = 5 { bitmap ScenesCopyMode : BITMAP8 { kCopyAllScenes = 0x1; @@ -231,6 +234,7 @@ server cluster Scenes = 5 { fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -284,14 +288,21 @@ client cluster OnOff = 6 { int16u offWaitTime = 2; } + /** On receipt of this command, a device SHALL enter its ‘Off’ state. This state is device dependent, but it is recommended that it is used for power off or similar functions. On receipt of the Off command, the OnTime attribute SHALL be set to 0. */ command Off(): DefaultSuccess = 0; + /** On receipt of this command, a device SHALL enter its ‘On’ state. This state is device dependent, but it is recommended that it is used for power on or similar functions. On receipt of the On command, if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. */ command On(): DefaultSuccess = 1; + /** On receipt of this command, if a device is in its ‘Off’ state it SHALL enter its ‘On’ state. Otherwise, if it is in its ‘On’ state it SHALL enter its ‘Off’ state. On receipt of the Toggle command, if the value of the OnOff attribute is equal to FALSE and if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. If the value of the OnOff attribute is equal to TRUE, the OnTime attribute SHALL be set to 0. */ command Toggle(): DefaultSuccess = 2; + /** The OffWithEffect command allows devices to be turned off using enhanced ways of fading. */ command OffWithEffect(OffWithEffectRequest): DefaultSuccess = 64; + /** The OnWithRecallGlobalScene command allows the recall of the settings when the device was turned off. */ command OnWithRecallGlobalScene(): DefaultSuccess = 65; + /** The OnWithTimedOff command allows devices to be turned on for a specific duration with a guarded off duration so that SHOULD the device be subsequently switched off, further OnWithTimedOff commands, received during this time, are prevented from turning the devices back on. */ command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -353,6 +364,7 @@ server cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for configuring On/Off switching devices. */ server cluster OnOffSwitchConfiguration = 7 { readonly attribute enum8 switchType = 0; attribute enum8 switchActions = 16; @@ -364,6 +376,7 @@ server cluster OnOffSwitchConfiguration = 7 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -471,6 +484,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** An interface for reading the value of a binary measurement and accessing various characteristics of that measurement. */ server cluster BinaryInputBasic = 15 { attribute boolean outOfService = 81; attribute boolean presentValue = 85; @@ -483,6 +497,7 @@ server cluster BinaryInputBasic = 15 { readonly attribute int16u clusterRevision = 65533; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -501,6 +516,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -519,6 +535,10 @@ server cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -588,6 +608,7 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ server cluster Actions = 37 { enum ActionErrorEnum : ENUM8 { kUnknown = 0; @@ -672,6 +693,9 @@ server cluster Actions = 37 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -721,6 +745,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -786,11 +811,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -865,6 +894,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -876,6 +909,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -908,6 +945,10 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for the units in which values are conveyed in communication to a + user. As such, Nodes that visually or audibly convey measurable values to the user need a + mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { enum TempUnitEnum : ENUM8 { kFahrenheit = 0; @@ -928,6 +969,7 @@ server cluster UnitLocalization = 45 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to describe the configuration and capabilities of a Device's power system. */ server cluster PowerSourceConfiguration = 46 { readonly attribute INT8U sources[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -938,6 +980,7 @@ server cluster PowerSourceConfiguration = 46 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { enum BatApprovedChemistryEnum : ENUM16 { kUnspecified = 0; @@ -1153,6 +1196,7 @@ server cluster PowerSource = 47 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -1216,6 +1260,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -1354,6 +1399,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -1390,6 +1436,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -1494,6 +1541,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -1527,6 +1575,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1689,6 +1738,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1761,6 +1811,7 @@ server cluster WiFiNetworkDiagnostics = 54 { command ResetCounts(): DefaultSuccess = 0; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1799,6 +1850,9 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1849,6 +1903,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1889,6 +1944,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -2004,6 +2060,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -2075,6 +2132,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -2085,6 +2144,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -2095,6 +2155,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface to a boolean state called StateValue. */ server cluster BooleanState = 69 { info event StateChange = 0 { boolean stateValue = 0; @@ -2109,6 +2170,7 @@ server cluster BooleanState = 69 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for selecting a mode from a list of supported options. */ server cluster ModeSelect = 80 { bitmap ModeSelectFeature : BITMAP32 { kDeponoff = 0x1; @@ -2146,6 +2208,7 @@ server cluster ModeSelect = 80 { command ChangeToMode(ChangeToModeRequest): DefaultSuccess = 0; } +/** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { enum AlarmCodeEnum : ENUM8 { kLockJammed = 0; @@ -2681,6 +2744,7 @@ server cluster DoorLock = 257 { timed command access(invoke: administer) ClearCredential(ClearCredentialRequest): DefaultSuccess = 38; } +/** Provides an interface for controlling and adjusting automatic window coverings. */ server cluster WindowCovering = 258 { enum EndProductType : ENUM8 { kRollerShade = 0; @@ -2824,6 +2888,7 @@ server cluster WindowCovering = 258 { command GoToTiltPercentage(GoToTiltPercentageRequest): DefaultSuccess = 8; } +/** This cluster provides control of a barrier (garage door). */ server cluster BarrierControl = 259 { readonly attribute enum8 barrierMovingState = 1; readonly attribute bitmap16 barrierSafetyStatus = 2; @@ -2844,6 +2909,7 @@ server cluster BarrierControl = 259 { command BarrierControlStop(): DefaultSuccess = 1; } +/** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { enum ControlModeEnum : ENUM8 { kConstantSpeed = 0; @@ -2965,6 +3031,7 @@ server cluster PumpConfigurationAndControl = 512 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { enum SetpointAdjustMode : ENUM8 { kHeat = 0; @@ -3059,6 +3126,7 @@ server cluster Thermostat = 513 { command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0; } +/** An interface for controlling a fan in a heating/cooling system. */ server cluster FanControl = 514 { enum FanModeSequenceType : ENUM8 { kOffLowMedHigh = 0; @@ -3121,6 +3189,7 @@ server cluster FanControl = 514 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ server cluster ThermostatUserInterfaceConfiguration = 516 { attribute enum8 temperatureDisplayMode = 0; attribute access(write: manage) enum8 keypadLockout = 1; @@ -3133,6 +3202,7 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; @@ -3431,6 +3501,7 @@ server cluster ColorControl = 768 { command StepColorTemperature(StepColorTemperatureRequest): DefaultSuccess = 76; } +/** Attributes and commands for configuring a lighting ballast. */ server cluster BallastConfiguration = 769 { readonly attribute int8u physicalMinLevel = 0; readonly attribute int8u physicalMaxLevel = 1; @@ -3454,6 +3525,7 @@ server cluster BallastConfiguration = 769 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ server cluster IlluminanceMeasurement = 1024 { enum LightSensorType : ENUM8 { kPhotodiode = 0; @@ -3473,6 +3545,7 @@ server cluster IlluminanceMeasurement = 1024 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; @@ -3486,6 +3559,7 @@ server cluster TemperatureMeasurement = 1026 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { bitmap PressureMeasurementFeature : BITMAP32 { kExtended = 0x1; @@ -3502,6 +3576,7 @@ server cluster PressureMeasurement = 1027 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -3515,6 +3590,7 @@ server cluster FlowMeasurement = 1028 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -3528,6 +3604,7 @@ server cluster RelativeHumidityMeasurement = 1029 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; @@ -3557,6 +3634,7 @@ server cluster OccupancySensing = 1030 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */ server cluster WakeOnLan = 1283 { readonly attribute char_string<32> MACAddress = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -3567,6 +3645,7 @@ server cluster WakeOnLan = 1283 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for controlling the current Channel on a device. */ server cluster Channel = 1284 { enum ChannelStatusEnum : ENUM8 { kSuccess = 0; @@ -3600,6 +3679,7 @@ server cluster Channel = 1284 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ server cluster TargetNavigator = 1285 { enum TargetNavigatorStatusEnum : ENUM8 { kSuccess = 0; @@ -3634,6 +3714,7 @@ server cluster TargetNavigator = 1285 { command NavigateTarget(NavigateTargetRequest): NavigateTargetResponse = 0; } +/** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ server cluster MediaPlayback = 1286 { enum MediaPlaybackStatusEnum : ENUM8 { kSuccess = 0; @@ -3670,6 +3751,7 @@ server cluster MediaPlayback = 1286 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ server cluster MediaInput = 1287 { enum InputTypeEnum : ENUM8 { kInternal = 0; @@ -3721,6 +3803,7 @@ server cluster MediaInput = 1287 { command RenameInput(RenameInputRequest): DefaultSuccess = 3; } +/** This cluster provides an interface for managing low power mode on a device. */ server cluster LowPower = 1288 { readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -3732,6 +3815,7 @@ server cluster LowPower = 1288 { command Sleep(): DefaultSuccess = 0; } +/** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ server cluster KeypadInput = 1289 { enum CecKeyCode : ENUM8 { kSelect = 0; @@ -3852,6 +3936,7 @@ server cluster KeypadInput = 1289 { command SendKey(SendKeyRequest): SendKeyResponse = 0; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ContentLauncher = 1290 { enum ContentLaunchStatusEnum : ENUM8 { kSuccess = 0; @@ -3937,6 +4022,7 @@ server cluster ContentLauncher = 1290 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for controlling the Output on a media device such as a TV. */ server cluster AudioOutput = 1291 { enum OutputTypeEnum : ENUM8 { kHdmi = 0; @@ -3967,6 +4053,7 @@ server cluster AudioOutput = 1291 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ApplicationLauncher = 1292 { enum ApplicationLauncherStatusEnum : ENUM8 { kSuccess = 0; @@ -3992,6 +4079,7 @@ server cluster ApplicationLauncher = 1292 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ server cluster ApplicationBasic = 1293 { enum ApplicationStatusEnum : ENUM8 { kStopped = 0; @@ -4015,6 +4103,7 @@ server cluster ApplicationBasic = 1293 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ server cluster AccountLogin = 1294 { readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -4024,6 +4113,7 @@ server cluster AccountLogin = 1294 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes related to the electrical properties of a device. This cluster is used by power outlets and other devices that need to provide instantaneous data as opposed to metrology data which should be retrieved from the metering cluster.. */ server cluster ElectricalMeasurement = 2820 { readonly attribute bitmap32 measurementType = 0; readonly attribute int32s totalActivePower = 772; @@ -4044,6 +4134,7 @@ server cluster ElectricalMeasurement = 2820 { readonly attribute int16u clusterRevision = 65533; } +/** Client Monitoring allows for ensuring that listed clients meet the required monitoring conditions on the server. */ server cluster ClientMonitoring = 4166 { fabric_scoped struct MonitoringRegistration { node_id clientNodeId = 1; @@ -4076,6 +4167,7 @@ server cluster ClientMonitoring = 4166 { command access(invoke: manage) UnregisterClientMonitoring(UnregisterClientMonitoringRequest): DefaultSuccess = 1; } +/** The Test Cluster is meant to validate the generated code */ server cluster UnitTesting = 4294048773 { enum SimpleEnum : ENUM8 { kUnspecified = 0; @@ -4393,6 +4485,7 @@ server cluster UnitTesting = 4294048773 { command TestEmitTestFabricScopedEventRequest(TestEmitTestFabricScopedEventRequestRequest): TestEmitTestFabricScopedEventResponse = 21; } +/** The Fault Injection Cluster provide a means for a test harness to configure faults(for example triggering a fault in the system). */ server cluster FaultInjection = 4294048774 { enum FaultType : ENUM8 { kUnspecified = 0; diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter index 787fb24461fbfa..f9e195247ff6cc 100644 --- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter +++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter @@ -11,6 +11,7 @@ struct ApplicationStruct { char_string applicationID = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -50,6 +51,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -114,6 +116,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for scene configuration and manipulation. */ server cluster Scenes = 5 { bitmap ScenesCopyMode : BITMAP8 { kCopyAllScenes = 0x1; @@ -230,6 +233,7 @@ server cluster Scenes = 5 { fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -273,6 +277,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -369,6 +374,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -387,6 +393,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -405,6 +412,10 @@ server cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -468,6 +479,7 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ server cluster Actions = 37 { enum ActionErrorEnum : ENUM8 { kUnknown = 0; @@ -551,6 +563,9 @@ server cluster Actions = 37 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -592,6 +607,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -657,11 +673,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -736,6 +756,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -747,6 +771,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -777,6 +805,10 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for the units in which values are conveyed in communication to a + user. As such, Nodes that visually or audibly convey measurable values to the user need a + mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { enum TempUnitEnum : ENUM8 { kFahrenheit = 0; @@ -796,6 +828,7 @@ server cluster UnitLocalization = 45 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to describe the configuration and capabilities of a Device's power system. */ server cluster PowerSourceConfiguration = 46 { readonly attribute INT8U sources[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -806,6 +839,7 @@ server cluster PowerSourceConfiguration = 46 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { enum BatApprovedChemistryEnum : ENUM16 { kUnspecified = 0; @@ -1018,6 +1052,7 @@ server cluster PowerSource = 47 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -1081,6 +1116,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -1219,6 +1255,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -1255,6 +1292,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -1353,6 +1391,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -1372,6 +1411,7 @@ server cluster SoftwareDiagnostics = 52 { readonly attribute int16u clusterRevision = 65533; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1486,6 +1526,7 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute int16u clusterRevision = 65533; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1548,6 +1589,7 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute int16u clusterRevision = 65533; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1586,6 +1628,9 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1635,6 +1680,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1670,6 +1716,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1785,6 +1832,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1856,6 +1904,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1866,6 +1916,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1876,6 +1927,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface to a boolean state called StateValue. */ server cluster BooleanState = 69 { info event StateChange = 0 { boolean stateValue = 0; @@ -1890,6 +1942,7 @@ server cluster BooleanState = 69 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for selecting a mode from a list of supported options. */ server cluster ModeSelect = 80 { bitmap ModeSelectFeature : BITMAP32 { kDeponoff = 0x1; @@ -1924,6 +1977,7 @@ server cluster ModeSelect = 80 { command ChangeToMode(ChangeToModeRequest): DefaultSuccess = 0; } +/** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { enum AlarmCodeEnum : ENUM8 { kLockJammed = 0; @@ -2323,6 +2377,7 @@ server cluster DoorLock = 257 { timed command UnlockDoor(UnlockDoorRequest): DefaultSuccess = 1; } +/** Provides an interface for controlling and adjusting automatic window coverings. */ server cluster WindowCovering = 258 { enum EndProductType : ENUM8 { kRollerShade = 0; @@ -2429,6 +2484,7 @@ server cluster WindowCovering = 258 { command StopMotion(): DefaultSuccess = 2; } +/** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { enum ControlModeEnum : ENUM8 { kConstantSpeed = 0; @@ -2536,6 +2592,7 @@ server cluster PumpConfigurationAndControl = 512 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { enum SetpointAdjustMode : ENUM8 { kHeat = 0; @@ -2620,6 +2677,7 @@ server cluster Thermostat = 513 { command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0; } +/** An interface for controlling a fan in a heating/cooling system. */ server cluster FanControl = 514 { enum FanModeSequenceType : ENUM8 { kOffLowMedHigh = 0; @@ -2675,6 +2733,7 @@ server cluster FanControl = 514 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ server cluster ThermostatUserInterfaceConfiguration = 516 { attribute enum8 temperatureDisplayMode = 0; attribute access(write: manage) enum8 keypadLockout = 1; @@ -2686,6 +2745,7 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; @@ -2769,6 +2829,7 @@ server cluster ColorControl = 768 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring a lighting ballast. */ server cluster BallastConfiguration = 769 { readonly attribute int8u physicalMinLevel = 0; readonly attribute int8u physicalMaxLevel = 1; @@ -2783,6 +2844,7 @@ server cluster BallastConfiguration = 769 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ server cluster IlluminanceMeasurement = 1024 { enum LightSensorType : ENUM8 { kPhotodiode = 0; @@ -2800,6 +2862,7 @@ server cluster IlluminanceMeasurement = 1024 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; @@ -2812,6 +2875,7 @@ server cluster TemperatureMeasurement = 1026 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { bitmap PressureMeasurementFeature : BITMAP32 { kExtended = 0x1; @@ -2828,6 +2892,7 @@ server cluster PressureMeasurement = 1027 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -2840,6 +2905,7 @@ server cluster FlowMeasurement = 1028 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -2852,6 +2918,7 @@ server cluster RelativeHumidityMeasurement = 1029 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; @@ -2881,6 +2948,7 @@ server cluster OccupancySensing = 1030 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */ server cluster WakeOnLan = 1283 { readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -2890,6 +2958,7 @@ server cluster WakeOnLan = 1283 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for controlling the current Channel on a device. */ server cluster Channel = 1284 { enum ChannelStatusEnum : ENUM8 { kSuccess = 0; @@ -2926,6 +2995,7 @@ server cluster Channel = 1284 { command SkipChannel(SkipChannelRequest): DefaultSuccess = 3; } +/** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ server cluster TargetNavigator = 1285 { enum TargetNavigatorStatusEnum : ENUM8 { kSuccess = 0; @@ -2959,6 +3029,7 @@ server cluster TargetNavigator = 1285 { command NavigateTarget(NavigateTargetRequest): NavigateTargetResponse = 0; } +/** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ server cluster MediaPlayback = 1286 { enum MediaPlaybackStatusEnum : ENUM8 { kSuccess = 0; @@ -2999,6 +3070,7 @@ server cluster MediaPlayback = 1286 { command Stop(): PlaybackResponse = 2; } +/** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ server cluster MediaInput = 1287 { enum InputTypeEnum : ENUM8 { kInternal = 0; @@ -3044,6 +3116,7 @@ server cluster MediaInput = 1287 { command HideInputStatus(): DefaultSuccess = 2; } +/** This cluster provides an interface for managing low power mode on a device. */ server cluster LowPower = 1288 { readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -3055,6 +3128,7 @@ server cluster LowPower = 1288 { command Sleep(): DefaultSuccess = 0; } +/** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ server cluster KeypadInput = 1289 { enum CecKeyCode : ENUM8 { kSelect = 0; @@ -3175,6 +3249,7 @@ server cluster KeypadInput = 1289 { command SendKey(SendKeyRequest): SendKeyResponse = 0; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ContentLauncher = 1290 { enum ContentLaunchStatusEnum : ENUM8 { kSuccess = 0; @@ -3258,6 +3333,7 @@ server cluster ContentLauncher = 1290 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for controlling the Output on a media device such as a TV. */ server cluster AudioOutput = 1291 { enum OutputTypeEnum : ENUM8 { kHdmi = 0; @@ -3294,6 +3370,7 @@ server cluster AudioOutput = 1291 { command SelectOutput(SelectOutputRequest): DefaultSuccess = 0; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ApplicationLauncher = 1292 { enum ApplicationLauncherStatusEnum : ENUM8 { kSuccess = 0; @@ -3335,6 +3412,7 @@ server cluster ApplicationLauncher = 1292 { command HideApp(HideAppRequest): LauncherResponse = 2; } +/** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ server cluster ApplicationBasic = 1293 { enum ApplicationStatusEnum : ENUM8 { kStopped = 0; @@ -3356,6 +3434,7 @@ server cluster ApplicationBasic = 1293 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ server cluster AccountLogin = 1294 { readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -3382,6 +3461,7 @@ server cluster AccountLogin = 1294 { timed command Logout(): DefaultSuccess = 3; } +/** The Test Cluster is meant to validate the generated code */ server cluster UnitTesting = 4294048773 { enum SimpleEnum : ENUM8 { kUnspecified = 0; diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter index bca32307a85592..d8e11547a42779 100644 --- a/examples/bridge-app/bridge-common/bridge-app.matter +++ b/examples/bridge-app/bridge-common/bridge-app.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -46,6 +47,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -89,6 +91,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -196,6 +199,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -214,6 +218,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -232,6 +237,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ client cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -301,6 +310,10 @@ client cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -370,6 +383,7 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ server cluster Actions = 37 { enum ActionErrorEnum : ENUM8 { kUnknown = 0; @@ -461,6 +475,9 @@ server cluster Actions = 37 { command InstantAction(InstantActionRequest): DefaultSuccess = 0; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -510,6 +527,10 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -521,6 +542,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -553,6 +578,10 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for the units in which values are conveyed in communication to a + user. As such, Nodes that visually or audibly convey measurable values to the user need a + mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { enum TempUnitEnum : ENUM8 { kFahrenheit = 0; @@ -573,6 +602,7 @@ server cluster UnitLocalization = 45 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -636,6 +666,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -774,6 +805,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -810,6 +842,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -914,6 +947,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -945,6 +979,7 @@ server cluster SoftwareDiagnostics = 52 { readonly attribute int16u clusterRevision = 65533; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1105,6 +1140,7 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute int16u clusterRevision = 65533; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1175,6 +1211,7 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute int16u clusterRevision = 65533; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1213,6 +1250,9 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1263,6 +1303,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1303,6 +1344,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1418,6 +1460,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1489,6 +1532,7 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { struct LabelStruct { char_string<16> label = 0; @@ -1504,6 +1548,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter index 05590c49a6695b..fee5f0afcbabc3 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -104,6 +106,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -151,6 +154,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -251,6 +255,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -269,6 +274,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -287,6 +293,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -353,6 +363,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -396,6 +409,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -461,11 +475,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -540,6 +558,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -550,6 +572,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -582,6 +608,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -644,6 +671,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -680,6 +708,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -784,6 +813,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -817,6 +847,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -979,6 +1010,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1051,6 +1083,7 @@ server cluster WiFiNetworkDiagnostics = 54 { command ResetCounts(): DefaultSuccess = 0; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1089,6 +1122,9 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1136,6 +1172,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1176,6 +1213,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1291,6 +1329,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1362,6 +1401,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1377,6 +1418,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ client cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter index ad25f3b21e4742..5d0331d67a9526 100644 --- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter +++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -46,6 +47,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -110,6 +112,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -171,6 +174,7 @@ server cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -269,6 +273,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -287,6 +292,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -356,6 +365,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -405,6 +417,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -470,11 +483,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -549,6 +566,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -612,6 +630,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -750,6 +769,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -786,6 +806,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -890,6 +911,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -923,6 +945,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -963,6 +986,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1078,6 +1102,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1149,6 +1174,7 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; diff --git a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter index c60351adeee680..2bce23887bc544 100644 --- a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter +++ b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -104,6 +106,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -122,6 +125,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -140,6 +144,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -206,6 +214,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -249,6 +260,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -314,11 +326,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -393,6 +409,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -403,6 +423,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -435,6 +459,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -497,6 +522,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -635,6 +661,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -671,6 +698,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -775,6 +803,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -808,6 +837,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -855,6 +887,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -895,6 +928,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1010,6 +1044,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1081,6 +1116,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1096,6 +1133,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface to a boolean state called StateValue. */ server cluster BooleanState = 69 { info event StateChange = 0 { boolean stateValue = 0; diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter index ed19aca324266f..2e68952f256566 100644 --- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -104,6 +106,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -151,6 +154,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -251,6 +255,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -269,6 +274,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -287,6 +293,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -353,6 +363,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -396,6 +409,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -461,11 +475,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -540,6 +558,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -550,6 +572,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -582,6 +608,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -644,6 +671,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -782,6 +810,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -818,6 +847,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -922,6 +952,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -955,6 +986,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1002,6 +1036,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1042,6 +1077,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1157,6 +1193,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1228,6 +1265,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1243,6 +1282,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ client cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter index 22bed1d47e5dfa..0c03e4284be1bb 100644 --- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter +++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -104,6 +106,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -122,6 +125,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -140,6 +144,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -206,6 +214,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -249,6 +260,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -314,11 +326,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -393,6 +409,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -403,6 +423,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -435,6 +459,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -497,6 +522,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -635,6 +661,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -671,6 +698,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -775,6 +803,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -808,6 +837,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -855,6 +887,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -895,6 +928,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1010,6 +1044,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1081,6 +1116,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1096,6 +1133,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { enum AlarmCodeEnum : ENUM8 { kLockJammed = 0; diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter index 87c6777a034286..6cec4a6e35622c 100644 --- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter +++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -104,6 +106,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -151,6 +154,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -251,6 +255,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -269,6 +274,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -287,6 +293,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -353,6 +363,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -396,6 +409,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -461,11 +475,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -540,6 +558,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -550,6 +572,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -582,6 +608,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -644,6 +671,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -782,6 +810,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -818,6 +847,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -922,6 +952,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -955,6 +986,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1002,6 +1036,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1042,6 +1077,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1157,6 +1193,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1228,6 +1265,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1243,6 +1282,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; diff --git a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter index df183b5da64ce7..d49c9701b78fdc 100644 --- a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter +++ b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -46,6 +47,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -110,6 +112,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -128,6 +131,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -197,6 +204,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -246,6 +256,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -311,11 +322,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -390,6 +405,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -401,6 +420,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -433,6 +456,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -496,6 +520,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -634,6 +659,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -670,6 +696,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -774,6 +801,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -807,6 +835,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -856,6 +887,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -896,6 +928,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1011,6 +1044,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1082,6 +1116,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1097,6 +1133,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for controlling a fan in a heating/cooling system. */ server cluster FanControl = 514 { enum FanModeSequenceType : ENUM8 { kOffLowMedHigh = 0; diff --git a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter index 3c3b8490088998..acefd0e02ea229 100644 --- a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter +++ b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -96,14 +98,21 @@ client cluster Groups = 4 { CHAR_STRING groupName = 1; } + /** Command description for AddGroup */ fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + /** Command description for ViewGroup */ fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + /** Command description for GetGroupMembership */ fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + /** Command description for RemoveGroup */ fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + /** Command description for RemoveAllGroups */ fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + /** Command description for AddGroupIfIdentifying */ fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -168,6 +177,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -186,6 +196,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -204,6 +215,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -270,6 +285,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -313,6 +331,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -378,11 +397,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -457,6 +480,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -467,6 +494,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -499,6 +530,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -561,6 +593,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -699,6 +732,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -735,6 +769,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -839,6 +874,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -872,6 +908,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -919,6 +958,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -959,6 +999,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1074,6 +1115,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1145,6 +1187,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1160,6 +1204,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter index 26346c09b705cd..27856191897462 100644 --- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter +++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -104,6 +106,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -147,6 +150,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -244,6 +248,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -262,6 +267,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -280,6 +286,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -346,6 +356,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -389,6 +402,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -454,11 +468,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -533,6 +551,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -543,6 +565,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -575,6 +601,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -637,6 +664,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -775,6 +803,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -811,6 +840,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -915,6 +945,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -948,6 +979,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -995,6 +1029,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1035,6 +1070,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1150,6 +1186,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1221,6 +1258,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1236,6 +1275,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring and controlling the functionality of a thermostat. */ client cluster Thermostat = 513 { enum SetpointAdjustMode : ENUM8 { kHeat = 0; @@ -1381,12 +1421,17 @@ client cluster Thermostat = 513 { ModeForSequence modeToReturn = 1; } + /** Command description for SetpointRaiseLower */ command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0; + /** Command description for SetWeeklySchedule */ command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1; + /** Command description for GetWeeklySchedule */ command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2; + /** The Clear Weekly Schedule command is used to clear the weekly schedule. */ command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3; } +/** An interface for controlling a fan in a heating/cooling system. */ server cluster FanControl = 514 { enum FanModeSequenceType : ENUM8 { kOffLowMedHigh = 0; diff --git a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter index 49a0eff6defa3a..b83a7f9f60a1a3 100644 --- a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter +++ b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -96,14 +98,21 @@ client cluster Groups = 4 { CHAR_STRING groupName = 1; } + /** Command description for AddGroup */ fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + /** Command description for ViewGroup */ fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + /** Command description for GetGroupMembership */ fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + /** Command description for RemoveGroup */ fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + /** Command description for RemoveAllGroups */ fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + /** Command description for AddGroupIfIdentifying */ fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -168,6 +177,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -186,6 +196,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -204,6 +215,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -270,6 +285,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -313,6 +331,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -378,11 +397,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -457,6 +480,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -467,6 +494,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -499,6 +530,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -561,6 +593,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -699,6 +732,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -735,6 +769,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -839,6 +874,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -872,6 +908,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -919,6 +958,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -959,6 +999,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1074,6 +1115,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1145,6 +1187,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1160,6 +1204,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; diff --git a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter index f6f65ef0ff587f..a789e3a08572d3 100644 --- a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter +++ b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -96,14 +98,21 @@ client cluster Groups = 4 { CHAR_STRING groupName = 1; } + /** Command description for AddGroup */ fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + /** Command description for ViewGroup */ fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + /** Command description for GetGroupMembership */ fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + /** Command description for RemoveGroup */ fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + /** Command description for RemoveAllGroups */ fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + /** Command description for AddGroupIfIdentifying */ fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -168,6 +177,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -186,6 +196,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -204,6 +215,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -270,6 +285,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -313,6 +331,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -378,11 +397,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -457,6 +480,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -467,6 +494,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -499,6 +530,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -561,6 +593,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -699,6 +732,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -735,6 +769,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -839,6 +874,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -872,6 +908,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -919,6 +958,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -959,6 +999,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1074,6 +1115,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1145,6 +1187,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1160,6 +1204,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ server cluster IlluminanceMeasurement = 1024 { enum LightSensorType : ENUM8 { kPhotodiode = 0; diff --git a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter index c1aab8aec19882..a3aac184e83e11 100644 --- a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter +++ b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -96,14 +98,21 @@ client cluster Groups = 4 { CHAR_STRING groupName = 1; } + /** Command description for AddGroup */ fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + /** Command description for ViewGroup */ fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + /** Command description for GetGroupMembership */ fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + /** Command description for RemoveGroup */ fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + /** Command description for RemoveAllGroups */ fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + /** Command description for AddGroupIfIdentifying */ fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -168,6 +177,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -186,6 +196,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -204,6 +215,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -270,6 +285,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -313,6 +331,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -378,11 +397,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -457,6 +480,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -467,6 +494,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -499,6 +530,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -561,6 +593,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -699,6 +732,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -735,6 +769,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -839,6 +874,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -872,6 +908,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -919,6 +958,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -959,6 +999,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1074,6 +1115,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1145,6 +1187,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1160,6 +1204,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter index 638c8780e1c41e..6e0620295dcd3e 100644 --- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter +++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -104,6 +106,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -151,6 +154,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -251,6 +255,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -269,6 +274,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -287,6 +293,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -353,6 +363,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -396,6 +409,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -461,11 +475,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -540,6 +558,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -550,6 +572,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -582,6 +608,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -644,6 +671,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -782,6 +810,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -818,6 +847,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -922,6 +952,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -955,6 +986,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1002,6 +1036,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1042,6 +1077,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1157,6 +1193,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1228,6 +1265,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter index 9e7eae345884d0..47347dbdf55c9f 100644 --- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter +++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -104,6 +106,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -157,14 +160,21 @@ client cluster OnOff = 6 { int16u offWaitTime = 2; } + /** On receipt of this command, a device SHALL enter its ‘Off’ state. This state is device dependent, but it is recommended that it is used for power off or similar functions. On receipt of the Off command, the OnTime attribute SHALL be set to 0. */ command Off(): DefaultSuccess = 0; + /** On receipt of this command, a device SHALL enter its ‘On’ state. This state is device dependent, but it is recommended that it is used for power on or similar functions. On receipt of the On command, if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. */ command On(): DefaultSuccess = 1; + /** On receipt of this command, if a device is in its ‘Off’ state it SHALL enter its ‘On’ state. Otherwise, if it is in its ‘On’ state it SHALL enter its ‘Off’ state. On receipt of the Toggle command, if the value of the OnOff attribute is equal to FALSE and if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. If the value of the OnOff attribute is equal to TRUE, the OnTime attribute SHALL be set to 0. */ command Toggle(): DefaultSuccess = 2; + /** The OffWithEffect command allows devices to be turned off using enhanced ways of fading. */ command OffWithEffect(OffWithEffectRequest): DefaultSuccess = 64; + /** The OnWithRecallGlobalScene command allows the recall of the settings when the device was turned off. */ command OnWithRecallGlobalScene(): DefaultSuccess = 65; + /** The OnWithTimedOff command allows devices to be turned on for a specific duration with a guarded off duration so that SHOULD the device be subsequently switched off, further OnWithTimedOff commands, received during this time, are prevented from turning the devices back on. */ command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -208,6 +218,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -226,6 +237,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -244,6 +256,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -310,6 +326,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -353,6 +372,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -418,11 +438,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -497,6 +521,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -507,6 +535,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -539,6 +571,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -601,6 +634,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -739,6 +773,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -775,6 +810,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -879,6 +915,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -912,6 +949,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -959,6 +999,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -999,6 +1040,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1114,6 +1156,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1185,6 +1228,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; diff --git a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter index 443772a2765045..291d9fd37459a2 100644 --- a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter +++ b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -104,6 +106,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -151,6 +154,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -169,6 +173,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -187,6 +192,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -253,6 +262,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -296,6 +308,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -361,11 +374,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -440,6 +457,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -450,6 +471,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -482,6 +507,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -544,6 +570,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -682,6 +709,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -718,6 +746,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -822,6 +851,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -855,6 +885,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -902,6 +935,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -942,6 +976,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1057,6 +1092,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1128,6 +1164,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; diff --git a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter index ea6a8a8f3e27f1..81546116321208 100644 --- a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter +++ b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -45,6 +46,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -101,14 +103,21 @@ client cluster Groups = 4 { CHAR_STRING groupName = 1; } + /** Command description for AddGroup */ fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + /** Command description for ViewGroup */ fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + /** Command description for GetGroupMembership */ fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + /** Command description for RemoveGroup */ fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + /** Command description for RemoveAllGroups */ fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + /** Command description for AddGroupIfIdentifying */ fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -173,6 +182,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -191,6 +201,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -209,6 +220,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -275,6 +290,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -318,6 +336,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -383,11 +402,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -462,6 +485,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -472,6 +499,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -504,6 +535,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -566,6 +598,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -704,6 +737,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -740,6 +774,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -844,6 +879,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -877,6 +913,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -924,6 +963,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -964,6 +1004,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1079,6 +1120,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1150,6 +1192,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1160,6 +1204,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1170,6 +1215,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { bitmap PressureMeasurementFeature : BITMAP32 { kExtended = 0x1; diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter index 5af8c0eed82184..954ffd667143c6 100644 --- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter +++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -104,6 +106,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -147,6 +150,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -245,6 +249,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -263,6 +268,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -281,6 +287,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -347,6 +357,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -390,6 +403,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -455,11 +469,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -534,6 +552,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -544,6 +566,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -576,6 +602,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -638,6 +665,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -776,6 +804,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -812,6 +841,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -916,6 +946,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -949,6 +980,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -996,6 +1030,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1036,6 +1071,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1151,6 +1187,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1222,6 +1259,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; diff --git a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter index 3b59085c857913..92e307429eb44f 100644 --- a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter +++ b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -96,14 +98,21 @@ client cluster Groups = 4 { CHAR_STRING groupName = 1; } + /** Command description for AddGroup */ fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + /** Command description for ViewGroup */ fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + /** Command description for GetGroupMembership */ fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + /** Command description for RemoveGroup */ fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + /** Command description for RemoveAllGroups */ fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + /** Command description for AddGroupIfIdentifying */ fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -168,6 +177,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -186,6 +196,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -204,6 +215,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -270,6 +285,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -313,6 +331,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -378,11 +397,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -457,6 +480,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -467,6 +494,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -499,6 +530,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -561,6 +593,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -699,6 +732,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -735,6 +769,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -839,6 +874,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -872,6 +908,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -919,6 +958,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -959,6 +999,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1074,6 +1115,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1145,6 +1187,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1160,6 +1204,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter index 97070b29dad9ab..a900efdd0caa16 100644 --- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter +++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -104,6 +106,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -122,6 +125,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -140,6 +144,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -206,6 +214,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -249,6 +260,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -314,11 +326,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -393,6 +409,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -403,6 +423,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -435,6 +459,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -497,6 +522,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -635,6 +661,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -671,6 +698,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -775,6 +803,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -808,6 +837,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -855,6 +887,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -895,6 +928,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1010,6 +1044,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1081,6 +1116,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1096,6 +1133,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { enum SetpointAdjustMode : ENUM8 { kHeat = 0; @@ -1197,6 +1235,7 @@ server cluster Thermostat = 513 { command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0; } +/** An interface for controlling a fan in a heating/cooling system. */ client cluster FanControl = 514 { enum FanModeSequenceType : ENUM8 { kOffLowMedHigh = 0; @@ -1259,6 +1298,7 @@ client cluster FanControl = 514 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ server cluster ThermostatUserInterfaceConfiguration = 516 { attribute enum8 temperatureDisplayMode = 0; attribute access(write: manage) enum8 keypadLockout = 1; @@ -1270,6 +1310,7 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ client cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; @@ -1283,6 +1324,7 @@ client cluster TemperatureMeasurement = 1026 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ client cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -1296,6 +1338,7 @@ client cluster RelativeHumidityMeasurement = 1029 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ client cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; diff --git a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter index e7cb6df02019c6..9e65830915e1e5 100644 --- a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter +++ b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -104,6 +106,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -122,6 +125,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -140,6 +144,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -206,6 +214,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -249,6 +260,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -314,11 +326,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -393,6 +409,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { readonly attribute CHAR_STRING supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -403,6 +423,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -435,6 +459,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -497,6 +522,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -635,6 +661,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -671,6 +698,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -775,6 +803,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -808,6 +837,9 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -855,6 +887,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -895,6 +928,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1010,6 +1044,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1081,6 +1116,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1096,6 +1133,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for controlling and adjusting automatic window coverings. */ server cluster WindowCovering = 258 { enum EndProductType : ENUM8 { kRollerShade = 0; diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter index 0459c94cebed1d..f7bffc229dbd5b 100644 --- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter +++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -133,6 +136,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -202,6 +209,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -251,6 +261,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -316,11 +327,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -395,6 +410,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -406,6 +425,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -438,6 +461,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -501,6 +525,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -639,6 +664,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -675,6 +701,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -779,6 +806,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -812,6 +840,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -974,6 +1003,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1046,6 +1076,7 @@ server cluster WiFiNetworkDiagnostics = 54 { command ResetCounts(): DefaultSuccess = 0; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1084,6 +1115,7 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1124,6 +1156,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1239,6 +1272,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1310,6 +1344,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1320,6 +1356,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1330,6 +1367,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface to a boolean state called StateValue. */ server cluster BooleanState = 69 { info event StateChange = 0 { boolean stateValue = 0; @@ -1344,6 +1382,7 @@ server cluster BooleanState = 69 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; diff --git a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter index 3712d03cc89685..49ec454128faa2 100644 --- a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter +++ b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -46,6 +47,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -89,6 +91,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -196,6 +199,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -214,6 +218,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -232,6 +237,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ client cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -301,6 +310,10 @@ client cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -370,6 +383,7 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ server cluster Actions = 37 { enum ActionErrorEnum : ENUM8 { kUnknown = 0; @@ -461,6 +475,9 @@ server cluster Actions = 37 { command InstantAction(InstantActionRequest): DefaultSuccess = 0; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -510,6 +527,10 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -521,6 +542,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -553,6 +578,10 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for the units in which values are conveyed in communication to a + user. As such, Nodes that visually or audibly convey measurable values to the user need a + mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { enum TempUnitEnum : ENUM8 { kFahrenheit = 0; @@ -573,6 +602,7 @@ server cluster UnitLocalization = 45 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -636,6 +666,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -774,6 +805,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -810,6 +842,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -914,6 +947,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -945,6 +979,7 @@ server cluster SoftwareDiagnostics = 52 { readonly attribute int16u clusterRevision = 65533; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1105,6 +1140,7 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute int16u clusterRevision = 65533; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1175,6 +1211,7 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute int16u clusterRevision = 65533; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1213,6 +1250,9 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1263,6 +1303,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1303,6 +1344,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1418,6 +1460,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1489,6 +1532,7 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { struct LabelStruct { char_string<16> label = 0; @@ -1504,6 +1548,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter index eaf55d4cf6225e..b25971668ae094 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.matter +++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ client cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -47,10 +48,13 @@ client cluster Identify = 3 { IdentifyEffectVariant effectVariant = 1; } + /** Command description for Identify */ command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; + /** Command description for TriggerEffect */ command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -96,6 +100,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -160,6 +165,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for scene configuration and manipulation. */ client cluster Scenes = 5 { bitmap ScenesCopyMode : BITMAP8 { kCopyAllScenes = 0x1; @@ -310,18 +316,29 @@ client cluster Scenes = 5 { INT8U sceneIdentifierFrom = 2; } + /** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */ fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + /** Retrieves the requested scene entry from its Scene table. */ fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + /** Removes the requested scene entry, corresponding to the value of the GroupID field, from its Scene Table */ fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + /** Remove all scenes, corresponding to the value of the GroupID field, from its Scene Table */ fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + /** Adds the scene entry into its Scene Table along with all extension field sets corresponding to the current state of other clusters on the same endpoint */ fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + /** Set the attributes and corresponding state for each other cluster implemented on the endpoint accordingly to the resquested scene entry in the Scene Table */ fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + /** Get an unused scene identifier when no commissioning tool is in the network, or for a commissioning tool to get the used scene identifiers within a certain group */ fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + /** Allows a scene to be added using a finer scene transition time than the AddScene command. */ fabric command EnhancedAddScene(EnhancedAddSceneRequest): EnhancedAddSceneResponse = 64; + /** Allows a scene to be retrieved using a finer scene transition time than the ViewScene command */ fabric command EnhancedViewScene(EnhancedViewSceneRequest): EnhancedViewSceneResponse = 65; + /** Allows a client to efficiently copy scenes from one group/scene identifier pair to another group/scene identifier pair. */ fabric command CopyScene(CopySceneRequest): CopySceneResponse = 66; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -375,14 +392,21 @@ client cluster OnOff = 6 { int16u offWaitTime = 2; } + /** On receipt of this command, a device SHALL enter its ‘Off’ state. This state is device dependent, but it is recommended that it is used for power off or similar functions. On receipt of the Off command, the OnTime attribute SHALL be set to 0. */ command Off(): DefaultSuccess = 0; + /** On receipt of this command, a device SHALL enter its ‘On’ state. This state is device dependent, but it is recommended that it is used for power on or similar functions. On receipt of the On command, if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. */ command On(): DefaultSuccess = 1; + /** On receipt of this command, if a device is in its ‘Off’ state it SHALL enter its ‘On’ state. Otherwise, if it is in its ‘On’ state it SHALL enter its ‘Off’ state. On receipt of the Toggle command, if the value of the OnOff attribute is equal to FALSE and if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. If the value of the OnOff attribute is equal to TRUE, the OnTime attribute SHALL be set to 0. */ command Toggle(): DefaultSuccess = 2; + /** The OffWithEffect command allows devices to be turned off using enhanced ways of fading. */ command OffWithEffect(OffWithEffectRequest): DefaultSuccess = 64; + /** The OnWithRecallGlobalScene command allows the recall of the settings when the device was turned off. */ command OnWithRecallGlobalScene(): DefaultSuccess = 65; + /** The OnWithTimedOff command allows devices to be turned on for a specific duration with a guarded off duration so that SHOULD the device be subsequently switched off, further OnWithTimedOff commands, received during this time, are prevented from turning the devices back on. */ command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -401,6 +425,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -419,6 +444,10 @@ server cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -488,6 +517,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -537,6 +569,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -602,11 +635,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -681,6 +718,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -692,6 +733,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -724,6 +769,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -787,6 +833,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -925,6 +972,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -961,6 +1009,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -1065,6 +1114,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -1098,6 +1148,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1260,6 +1311,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1332,6 +1384,7 @@ server cluster WiFiNetworkDiagnostics = 54 { command ResetCounts(): DefaultSuccess = 0; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1370,6 +1423,9 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1419,6 +1475,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1459,6 +1516,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1574,6 +1632,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1645,6 +1704,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1655,6 +1716,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1665,6 +1727,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ client cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; @@ -1942,24 +2005,43 @@ client cluster ColorControl = 768 { BITMAP8 optionsOverride = 6; } + /** Move to specified hue. */ command MoveToHue(MoveToHueRequest): DefaultSuccess = 0; + /** Move hue up or down at specified rate. */ command MoveHue(MoveHueRequest): DefaultSuccess = 1; + /** Step hue up or down by specified size at specified rate. */ command StepHue(StepHueRequest): DefaultSuccess = 2; + /** Move to specified saturation. */ command MoveToSaturation(MoveToSaturationRequest): DefaultSuccess = 3; + /** Move saturation up or down at specified rate. */ command MoveSaturation(MoveSaturationRequest): DefaultSuccess = 4; + /** Step saturation up or down by specified size at specified rate. */ command StepSaturation(StepSaturationRequest): DefaultSuccess = 5; + /** Move to hue and saturation. */ command MoveToHueAndSaturation(MoveToHueAndSaturationRequest): DefaultSuccess = 6; + /** Move to specified color. */ command MoveToColor(MoveToColorRequest): DefaultSuccess = 7; + /** Moves the color. */ command MoveColor(MoveColorRequest): DefaultSuccess = 8; + /** Steps the lighting to a specific color. */ command StepColor(StepColorRequest): DefaultSuccess = 9; + /** Move to a specific color temperature. */ command MoveToColorTemperature(MoveToColorTemperatureRequest): DefaultSuccess = 10; + /** Command description for EnhancedMoveToHue */ command EnhancedMoveToHue(EnhancedMoveToHueRequest): DefaultSuccess = 64; + /** Command description for EnhancedMoveHue */ command EnhancedMoveHue(EnhancedMoveHueRequest): DefaultSuccess = 65; + /** Command description for EnhancedStepHue */ command EnhancedStepHue(EnhancedStepHueRequest): DefaultSuccess = 66; + /** Command description for EnhancedMoveToHueAndSaturation */ command EnhancedMoveToHueAndSaturation(EnhancedMoveToHueAndSaturationRequest): DefaultSuccess = 67; + /** Command description for ColorLoopSet */ command ColorLoopSet(ColorLoopSetRequest): DefaultSuccess = 68; + /** Command description for StopMoveStep */ command StopMoveStep(StopMoveStepRequest): DefaultSuccess = 71; + /** Command description for MoveColorTemperature */ command MoveColorTemperature(MoveColorTemperatureRequest): DefaultSuccess = 75; + /** Command description for StepColorTemperature */ command StepColorTemperature(StepColorTemperatureRequest): DefaultSuccess = 76; } diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter index f38991177397de..38fdcf75cbe3bf 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -176,6 +179,7 @@ server cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -283,6 +287,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -301,6 +306,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -370,6 +379,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -419,6 +431,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -484,11 +497,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -563,6 +580,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -574,6 +595,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -606,6 +631,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -669,6 +695,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -807,6 +834,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -843,6 +871,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -947,6 +976,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -980,6 +1010,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1142,6 +1173,9 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1191,6 +1225,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1231,6 +1266,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1346,6 +1382,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1417,6 +1454,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1427,6 +1466,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1437,6 +1477,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; @@ -1704,6 +1745,7 @@ server cluster ColorControl = 768 { command StepColorTemperature(StepColorTemperatureRequest): DefaultSuccess = 76; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter index 65827b3f96ceff..84b12690efab8f 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -176,6 +179,7 @@ server cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -283,6 +287,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -301,6 +306,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -370,6 +379,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -419,6 +431,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -484,11 +497,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -563,6 +580,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -574,6 +595,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -606,6 +631,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -669,6 +695,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -807,6 +834,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -843,6 +871,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -947,6 +976,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -980,6 +1010,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1050,6 +1081,9 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1099,6 +1133,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1139,6 +1174,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1254,6 +1290,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1325,6 +1362,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1335,6 +1374,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1345,6 +1385,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; @@ -1612,6 +1653,7 @@ server cluster ColorControl = 768 { command StepColorTemperature(StepColorTemperatureRequest): DefaultSuccess = 76; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter index 4dbfe34441b0bd..2f0dd9536a5946 100644 --- a/examples/lighting-app/lighting-common/lighting-app.matter +++ b/examples/lighting-app/lighting-common/lighting-app.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -176,6 +179,7 @@ server cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -283,6 +287,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -301,6 +306,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -370,6 +379,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -419,6 +431,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -484,11 +497,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -563,6 +580,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -574,6 +595,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -606,6 +631,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -669,6 +695,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -807,6 +834,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -843,6 +871,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -947,6 +976,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -980,6 +1010,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1142,6 +1173,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1214,6 +1246,7 @@ server cluster WiFiNetworkDiagnostics = 54 { command ResetCounts(): DefaultSuccess = 0; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1252,6 +1285,9 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1301,6 +1337,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1341,6 +1378,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1456,6 +1494,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1527,6 +1566,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1537,6 +1578,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1547,6 +1589,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; @@ -1814,6 +1857,7 @@ server cluster ColorControl = 768 { command StepColorTemperature(StepColorTemperatureRequest): DefaultSuccess = 76; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; diff --git a/examples/lighting-app/nxp/zap/lighting-on-off.matter b/examples/lighting-app/nxp/zap/lighting-on-off.matter index 6a8f1d36e92e4f..00d57e2e2b7fda 100644 --- a/examples/lighting-app/nxp/zap/lighting-on-off.matter +++ b/examples/lighting-app/nxp/zap/lighting-on-off.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -46,6 +47,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -110,6 +112,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -171,6 +174,7 @@ server cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -271,6 +275,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -289,6 +294,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -352,6 +361,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -393,6 +405,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -458,11 +471,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -537,6 +554,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -600,6 +618,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -731,6 +750,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -829,6 +849,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -862,6 +883,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1021,6 +1043,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1056,6 +1079,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1171,6 +1195,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; diff --git a/examples/lighting-app/qpg/zap/light.matter b/examples/lighting-app/qpg/zap/light.matter index a46f0d2e62766a..d0e119dd9863ec 100644 --- a/examples/lighting-app/qpg/zap/light.matter +++ b/examples/lighting-app/qpg/zap/light.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -176,6 +179,7 @@ server cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -279,6 +283,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -297,6 +302,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -360,6 +369,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -409,6 +421,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -474,11 +487,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -553,6 +570,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -616,6 +634,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -747,6 +766,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -790,6 +810,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -894,6 +915,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -927,6 +949,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1086,6 +1109,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1126,6 +1150,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1241,6 +1266,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1312,6 +1338,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1322,6 +1350,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1332,6 +1361,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; diff --git a/examples/lighting-app/silabs/SiWx917/data_model/lighting-wifi-app.matter b/examples/lighting-app/silabs/SiWx917/data_model/lighting-wifi-app.matter index 459b5794ea20be..c1d8fec7020691 100644 --- a/examples/lighting-app/silabs/SiWx917/data_model/lighting-wifi-app.matter +++ b/examples/lighting-app/silabs/SiWx917/data_model/lighting-wifi-app.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -176,6 +179,7 @@ server cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -283,6 +287,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -301,6 +306,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -370,6 +379,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -419,6 +431,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -484,11 +497,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -563,6 +580,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -574,6 +595,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -606,6 +631,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -669,6 +695,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -807,6 +834,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -843,6 +871,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -947,6 +976,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -980,6 +1010,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1052,6 +1083,7 @@ server cluster WiFiNetworkDiagnostics = 54 { command ResetCounts(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1092,6 +1124,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1207,6 +1240,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1278,6 +1312,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1288,6 +1324,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1298,6 +1335,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; diff --git a/examples/lighting-app/silabs/efr32/data_model/lighting-thread-app.matter b/examples/lighting-app/silabs/efr32/data_model/lighting-thread-app.matter index 49407ddbda3dd3..b18b26faa10190 100644 --- a/examples/lighting-app/silabs/efr32/data_model/lighting-thread-app.matter +++ b/examples/lighting-app/silabs/efr32/data_model/lighting-thread-app.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -176,6 +179,7 @@ server cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -283,6 +287,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -301,6 +306,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -370,6 +379,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -419,6 +431,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -484,11 +497,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -563,6 +580,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -574,6 +595,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -606,6 +631,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -669,6 +695,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -807,6 +834,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -843,6 +871,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -947,6 +976,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -980,6 +1010,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1142,6 +1173,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1182,6 +1214,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1297,6 +1330,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1368,6 +1402,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1378,6 +1414,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1388,6 +1425,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; diff --git a/examples/lighting-app/silabs/efr32/data_model/lighting-wifi-app.matter b/examples/lighting-app/silabs/efr32/data_model/lighting-wifi-app.matter index 459b5794ea20be..c1d8fec7020691 100644 --- a/examples/lighting-app/silabs/efr32/data_model/lighting-wifi-app.matter +++ b/examples/lighting-app/silabs/efr32/data_model/lighting-wifi-app.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -176,6 +179,7 @@ server cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -283,6 +287,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -301,6 +306,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -370,6 +379,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -419,6 +431,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -484,11 +497,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -563,6 +580,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -574,6 +595,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -606,6 +631,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -669,6 +695,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -807,6 +834,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -843,6 +871,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -947,6 +976,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -980,6 +1010,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1052,6 +1083,7 @@ server cluster WiFiNetworkDiagnostics = 54 { command ResetCounts(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1092,6 +1124,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1207,6 +1240,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1278,6 +1312,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1288,6 +1324,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1298,6 +1335,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter index 3eda18cb740025..e0e274634a46f6 100644 --- a/examples/lock-app/lock-common/lock-app.matter +++ b/examples/lock-app/lock-common/lock-app.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -45,6 +46,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -92,6 +94,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -110,6 +113,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -179,6 +186,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -228,6 +238,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -293,11 +304,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -372,6 +387,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -383,6 +402,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -415,6 +438,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to describe the configuration and capabilities of a Device's power system. */ server cluster PowerSourceConfiguration = 46 { readonly attribute INT8U sources[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -425,6 +449,7 @@ server cluster PowerSourceConfiguration = 46 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { enum BatApprovedChemistryEnum : ENUM16 { kUnspecified = 0; @@ -642,6 +667,7 @@ server cluster PowerSource = 47 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -705,6 +731,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -843,6 +870,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -879,6 +907,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -983,6 +1012,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -1016,6 +1046,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1178,6 +1209,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1250,6 +1282,7 @@ server cluster WiFiNetworkDiagnostics = 54 { command ResetCounts(): DefaultSuccess = 0; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1288,6 +1321,7 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1328,6 +1362,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1443,6 +1478,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1514,6 +1550,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1524,6 +1562,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1534,6 +1573,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { enum AlarmCodeEnum : ENUM8 { kLockJammed = 0; diff --git a/examples/lock-app/nxp/zap/lock-app.matter b/examples/lock-app/nxp/zap/lock-app.matter index de2ea9558dcf6a..c1c16066185a4e 100644 --- a/examples/lock-app/nxp/zap/lock-app.matter +++ b/examples/lock-app/nxp/zap/lock-app.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -46,6 +47,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -64,6 +66,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -127,6 +133,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -168,6 +177,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -231,6 +241,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -362,6 +373,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -460,6 +472,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -493,6 +506,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -652,6 +666,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -687,6 +702,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -802,6 +818,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -873,6 +890,7 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { enum AlarmCodeEnum : ENUM8 { kLockJammed = 0; diff --git a/examples/lock-app/qpg/zap/lock.matter b/examples/lock-app/qpg/zap/lock.matter index 0eacb34b0e8e1c..6693bf6b9fdfda 100644 --- a/examples/lock-app/qpg/zap/lock.matter +++ b/examples/lock-app/qpg/zap/lock.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -133,6 +136,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -196,6 +203,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -245,6 +255,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -310,11 +321,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -389,6 +404,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -452,6 +468,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -583,6 +600,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -626,6 +644,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -730,6 +749,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -763,6 +783,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -922,6 +943,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -962,6 +984,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1077,6 +1100,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1148,6 +1172,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1158,6 +1184,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1168,6 +1195,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { enum AlarmCodeEnum : ENUM8 { kLockJammed = 0; diff --git a/examples/log-source-app/log-source-common/log-source-app.matter b/examples/log-source-app/log-source-common/log-source-app.matter index 78d2373c901fff..dea78e7b7e543c 100644 --- a/examples/log-source-app/log-source-common/log-source-app.matter +++ b/examples/log-source-app/log-source-common/log-source-app.matter @@ -1,6 +1,10 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -70,6 +74,7 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -131,6 +136,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -256,6 +262,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ client cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -296,9 +303,11 @@ client cluster DiagnosticLogs = 50 { optional systime_us timeSinceBoot = 3; } + /** Retrieving diagnostic logs from a Node */ command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -342,6 +351,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; diff --git a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter index 8fa58b8d08a544..4953d6f16afda4 100644 --- a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter +++ b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -24,6 +25,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ client cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -93,6 +98,10 @@ client cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -162,6 +171,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -211,6 +223,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ server cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -281,6 +294,10 @@ server cluster OtaSoftwareUpdateProvider = 41 { command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -292,6 +309,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -324,6 +345,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -387,6 +409,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -525,6 +548,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -629,6 +653,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -669,6 +694,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -784,6 +810,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -855,6 +882,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -865,6 +894,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; diff --git a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter index d0bc7cec022fe6..325b8dafd27574 100644 --- a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter +++ b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -176,6 +179,7 @@ server cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -194,6 +198,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -263,6 +271,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -312,6 +323,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -377,11 +389,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -456,6 +472,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -467,6 +487,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -499,6 +523,7 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -562,6 +587,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -700,6 +726,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -804,6 +831,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -844,6 +872,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -959,6 +988,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1030,6 +1060,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1040,6 +1072,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter index fc68a9c2e6df03..549eac80b02db3 100644 --- a/examples/placeholder/linux/apps/app1/config.matter +++ b/examples/placeholder/linux/apps/app1/config.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for scene configuration and manipulation. */ server cluster Scenes = 5 { bitmap ScenesCopyMode : BITMAP8 { kCopyAllScenes = 0x1; @@ -231,6 +234,7 @@ server cluster Scenes = 5 { fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -284,14 +288,21 @@ client cluster OnOff = 6 { int16u offWaitTime = 2; } + /** On receipt of this command, a device SHALL enter its ‘Off’ state. This state is device dependent, but it is recommended that it is used for power off or similar functions. On receipt of the Off command, the OnTime attribute SHALL be set to 0. */ command Off(): DefaultSuccess = 0; + /** On receipt of this command, a device SHALL enter its ‘On’ state. This state is device dependent, but it is recommended that it is used for power on or similar functions. On receipt of the On command, if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. */ command On(): DefaultSuccess = 1; + /** On receipt of this command, if a device is in its ‘Off’ state it SHALL enter its ‘On’ state. Otherwise, if it is in its ‘On’ state it SHALL enter its ‘Off’ state. On receipt of the Toggle command, if the value of the OnOff attribute is equal to FALSE and if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. If the value of the OnOff attribute is equal to TRUE, the OnTime attribute SHALL be set to 0. */ command Toggle(): DefaultSuccess = 2; + /** The OffWithEffect command allows devices to be turned off using enhanced ways of fading. */ command OffWithEffect(OffWithEffectRequest): DefaultSuccess = 64; + /** The OnWithRecallGlobalScene command allows the recall of the settings when the device was turned off. */ command OnWithRecallGlobalScene(): DefaultSuccess = 65; + /** The OnWithTimedOff command allows devices to be turned on for a specific duration with a guarded off duration so that SHOULD the device be subsequently switched off, further OnWithTimedOff commands, received during this time, are prevented from turning the devices back on. */ command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -353,6 +364,7 @@ server cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -451,6 +463,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -469,6 +482,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -532,6 +549,7 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ server cluster Actions = 37 { enum ActionErrorEnum : ENUM8 { kUnknown = 0; @@ -616,6 +634,9 @@ server cluster Actions = 37 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -665,6 +686,10 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ client cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -676,6 +701,10 @@ client cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -687,6 +716,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -719,6 +752,10 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for the units in which values are conveyed in communication to a + user. As such, Nodes that visually or audibly convey measurable values to the user need a + mechanism by which they can be configured to use a user’s preferred unit. */ client cluster UnitLocalization = 45 { enum TempUnitEnum : ENUM8 { kFahrenheit = 0; @@ -739,6 +776,10 @@ client cluster UnitLocalization = 45 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for the units in which values are conveyed in communication to a + user. As such, Nodes that visually or audibly convey measurable values to the user need a + mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { enum TempUnitEnum : ENUM8 { kFahrenheit = 0; @@ -759,6 +800,7 @@ server cluster UnitLocalization = 45 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to describe the configuration and capabilities of a Device's power system. */ server cluster PowerSourceConfiguration = 46 { readonly attribute INT8U sources[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -769,6 +811,7 @@ server cluster PowerSourceConfiguration = 46 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { enum BatApprovedChemistryEnum : ENUM16 { kUnspecified = 0; @@ -1009,6 +1052,7 @@ server cluster PowerSource = 47 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ client cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -1067,11 +1111,15 @@ client cluster GeneralCommissioning = 48 { CHAR_STRING debugText = 1; } + /** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */ command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; + /** Set the regulatory configuration to be used during commissioning */ command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; + /** Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. */ fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -1135,6 +1183,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -1273,6 +1322,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -1377,6 +1427,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -1410,6 +1461,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1482,6 +1534,7 @@ server cluster WiFiNetworkDiagnostics = 54 { command ResetCounts(): DefaultSuccess = 0; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1520,6 +1573,9 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ client cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1570,6 +1626,9 @@ client cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1620,6 +1679,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1660,6 +1720,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ client cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1765,16 +1826,25 @@ client cluster OperationalCredentials = 62 { OCTET_STRING rootCACertificate = 0; } + /** Sender is requesting attestation information from the receiver. */ command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0; + /** Sender is requesting a device attestation certificate from the receiver. */ command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; + /** Sender is requesting a certificate signing request (CSR) from the receiver. */ command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; + /** Sender is requesting to add the new node operational certificates. */ command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; + /** Sender is requesting to update the node operational certificates. */ fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + /** This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. */ fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + /** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */ command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; + /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */ command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1883,6 +1953,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ client cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1898,6 +1970,8 @@ client cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1908,6 +1982,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1918,6 +1993,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface to a boolean state called StateValue. */ server cluster BooleanState = 69 { info event StateChange = 0 { boolean stateValue = 0; @@ -1932,6 +2008,7 @@ server cluster BooleanState = 69 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for selecting a mode from a list of supported options. */ client cluster ModeSelect = 80 { bitmap ModeSelectFeature : BITMAP32 { kDeponoff = 0x1; @@ -1965,9 +2042,11 @@ client cluster ModeSelect = 80 { INT8U newMode = 0; } + /** On receipt of this command, if the NewMode field matches the Mode field in an entry of the SupportedModes list, the server SHALL set the CurrentMode attribute to the NewMode value, otherwise, the server SHALL respond with an INVALID_COMMAND status response. */ command ChangeToMode(ChangeToModeRequest): DefaultSuccess = 0; } +/** Attributes and commands for selecting a mode from a list of supported options. */ server cluster ModeSelect = 80 { bitmap ModeSelectFeature : BITMAP32 { kDeponoff = 0x1; @@ -2003,6 +2082,7 @@ server cluster ModeSelect = 80 { command ChangeToMode(ChangeToModeRequest): DefaultSuccess = 0; } +/** Provides an interface for controlling and adjusting automatic window coverings. */ server cluster WindowCovering = 258 { enum EndProductType : ENUM8 { kRollerShade = 0; @@ -2142,6 +2222,7 @@ server cluster WindowCovering = 258 { command GoToTiltPercentage(GoToTiltPercentageRequest): DefaultSuccess = 8; } +/** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { enum ControlModeEnum : ENUM8 { kConstantSpeed = 0; @@ -2263,6 +2344,7 @@ server cluster PumpConfigurationAndControl = 512 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { enum SetpointAdjustMode : ENUM8 { kHeat = 0; @@ -2352,6 +2434,7 @@ server cluster Thermostat = 513 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ client cluster ThermostatUserInterfaceConfiguration = 516 { attribute enum8 temperatureDisplayMode = 0; attribute access(write: manage) enum8 keypadLockout = 1; @@ -2364,6 +2447,7 @@ client cluster ThermostatUserInterfaceConfiguration = 516 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ server cluster ThermostatUserInterfaceConfiguration = 516 { attribute enum8 temperatureDisplayMode = 0; attribute access(write: manage) enum8 keypadLockout = 1; @@ -2376,6 +2460,7 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; @@ -2486,6 +2571,7 @@ server cluster ColorControl = 768 { command StepColor(StepColorRequest): DefaultSuccess = 9; } +/** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ server cluster IlluminanceMeasurement = 1024 { enum LightSensorType : ENUM8 { kPhotodiode = 0; @@ -2505,6 +2591,7 @@ server cluster IlluminanceMeasurement = 1024 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ client cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; @@ -2518,6 +2605,7 @@ client cluster TemperatureMeasurement = 1026 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; @@ -2531,6 +2619,7 @@ server cluster TemperatureMeasurement = 1026 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { bitmap PressureMeasurementFeature : BITMAP32 { kExtended = 0x1; @@ -2553,6 +2642,7 @@ server cluster PressureMeasurement = 1027 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -2566,6 +2656,7 @@ server cluster FlowMeasurement = 1028 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ client cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -2579,6 +2670,7 @@ client cluster RelativeHumidityMeasurement = 1029 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -2592,6 +2684,7 @@ server cluster RelativeHumidityMeasurement = 1029 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; @@ -2630,6 +2723,7 @@ server cluster OccupancySensing = 1030 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ client cluster TargetNavigator = 1285 { enum TargetNavigatorStatusEnum : ENUM8 { kSuccess = 0; @@ -2661,9 +2755,11 @@ client cluster TargetNavigator = 1285 { optional CHAR_STRING data = 1; } + /** Upon receipt, this SHALL navigation the UX to the target identified. */ command NavigateTarget(NavigateTargetRequest): NavigateTargetResponse = 0; } +/** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ server cluster TargetNavigator = 1285 { enum TargetNavigatorStatusEnum : ENUM8 { kSuccess = 0; @@ -2698,6 +2794,7 @@ server cluster TargetNavigator = 1285 { command NavigateTarget(NavigateTargetRequest): NavigateTargetResponse = 0; } +/** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ client cluster KeypadInput = 1289 { enum CecKeyCode : ENUM8 { kSelect = 0; @@ -2815,9 +2912,11 @@ client cluster KeypadInput = 1289 { KeypadInputStatusEnum status = 0; } + /** Upon receipt, this SHALL process a keycode as input to the media device. */ command SendKey(SendKeyRequest): SendKeyResponse = 0; } +/** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ server cluster KeypadInput = 1289 { enum CecKeyCode : ENUM8 { kSelect = 0; @@ -2938,6 +3037,7 @@ server cluster KeypadInput = 1289 { command SendKey(SendKeyRequest): SendKeyResponse = 0; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ContentLauncher = 1290 { enum ContentLaunchStatusEnum : ENUM8 { kSuccess = 0; @@ -3039,10 +3139,13 @@ client cluster ContentLauncher = 1290 { optional CHAR_STRING data = 1; } + /** Upon receipt, this SHALL launch the specified content with optional search criteria. */ command LaunchContent(LaunchContentRequest): LauncherResponse = 0; + /** Upon receipt, this SHALL launch content from the specified URL. */ command LaunchURL(LaunchURLRequest): LauncherResponse = 1; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ContentLauncher = 1290 { enum ContentLaunchStatusEnum : ENUM8 { kSuccess = 0; @@ -3148,6 +3251,7 @@ server cluster ContentLauncher = 1290 { command LaunchURL(LaunchURLRequest): LauncherResponse = 1; } +/** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ client cluster ApplicationBasic = 1293 { enum ApplicationStatusEnum : ENUM8 { kStopped = 0; @@ -3177,6 +3281,7 @@ client cluster ApplicationBasic = 1293 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ server cluster ApplicationBasic = 1293 { enum ApplicationStatusEnum : ENUM8 { kStopped = 0; diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter index 905ce603b474a0..a2dec9b3408be3 100644 --- a/examples/placeholder/linux/apps/app2/config.matter +++ b/examples/placeholder/linux/apps/app2/config.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for scene configuration and manipulation. */ server cluster Scenes = 5 { bitmap ScenesCopyMode : BITMAP8 { kCopyAllScenes = 0x1; @@ -231,6 +234,7 @@ server cluster Scenes = 5 { fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -284,14 +288,21 @@ client cluster OnOff = 6 { int16u offWaitTime = 2; } + /** On receipt of this command, a device SHALL enter its ‘Off’ state. This state is device dependent, but it is recommended that it is used for power off or similar functions. On receipt of the Off command, the OnTime attribute SHALL be set to 0. */ command Off(): DefaultSuccess = 0; + /** On receipt of this command, a device SHALL enter its ‘On’ state. This state is device dependent, but it is recommended that it is used for power on or similar functions. On receipt of the On command, if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. */ command On(): DefaultSuccess = 1; + /** On receipt of this command, if a device is in its ‘Off’ state it SHALL enter its ‘On’ state. Otherwise, if it is in its ‘On’ state it SHALL enter its ‘Off’ state. On receipt of the Toggle command, if the value of the OnOff attribute is equal to FALSE and if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. If the value of the OnOff attribute is equal to TRUE, the OnTime attribute SHALL be set to 0. */ command Toggle(): DefaultSuccess = 2; + /** The OffWithEffect command allows devices to be turned off using enhanced ways of fading. */ command OffWithEffect(OffWithEffectRequest): DefaultSuccess = 64; + /** The OnWithRecallGlobalScene command allows the recall of the settings when the device was turned off. */ command OnWithRecallGlobalScene(): DefaultSuccess = 65; + /** The OnWithTimedOff command allows devices to be turned on for a specific duration with a guarded off duration so that SHOULD the device be subsequently switched off, further OnWithTimedOff commands, received during this time, are prevented from turning the devices back on. */ command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -353,6 +364,7 @@ server cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -451,6 +463,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -469,6 +482,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -532,6 +549,7 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ server cluster Actions = 37 { enum ActionErrorEnum : ENUM8 { kUnknown = 0; @@ -616,6 +634,9 @@ server cluster Actions = 37 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -665,6 +686,10 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -676,6 +701,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -708,6 +737,10 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for the units in which values are conveyed in communication to a + user. As such, Nodes that visually or audibly convey measurable values to the user need a + mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { enum TempUnitEnum : ENUM8 { kFahrenheit = 0; @@ -728,6 +761,7 @@ server cluster UnitLocalization = 45 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to describe the configuration and capabilities of a Device's power system. */ server cluster PowerSourceConfiguration = 46 { readonly attribute INT8U sources[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -738,6 +772,7 @@ server cluster PowerSourceConfiguration = 46 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { enum BatApprovedChemistryEnum : ENUM16 { kUnspecified = 0; @@ -978,6 +1013,7 @@ server cluster PowerSource = 47 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ client cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -1036,11 +1072,15 @@ client cluster GeneralCommissioning = 48 { CHAR_STRING debugText = 1; } + /** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */ command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; + /** Set the regulatory configuration to be used during commissioning */ command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; + /** Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. */ fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -1104,6 +1144,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -1242,6 +1283,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -1346,6 +1388,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -1379,6 +1422,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1451,6 +1495,7 @@ server cluster WiFiNetworkDiagnostics = 54 { command ResetCounts(): DefaultSuccess = 0; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1489,6 +1534,9 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ client cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1539,6 +1587,9 @@ client cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1589,6 +1640,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1629,6 +1681,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ client cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1734,16 +1787,25 @@ client cluster OperationalCredentials = 62 { OCTET_STRING rootCACertificate = 0; } + /** Sender is requesting attestation information from the receiver. */ command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0; + /** Sender is requesting a device attestation certificate from the receiver. */ command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; + /** Sender is requesting a certificate signing request (CSR) from the receiver. */ command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; + /** Sender is requesting to add the new node operational certificates. */ command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; + /** Sender is requesting to update the node operational certificates. */ fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + /** This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. */ fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + /** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */ command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; + /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */ command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1852,6 +1914,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ client cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -1867,6 +1931,8 @@ client cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1877,6 +1943,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1887,6 +1954,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface to a boolean state called StateValue. */ server cluster BooleanState = 69 { info event StateChange = 0 { boolean stateValue = 0; @@ -1901,6 +1969,7 @@ server cluster BooleanState = 69 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for selecting a mode from a list of supported options. */ client cluster ModeSelect = 80 { bitmap ModeSelectFeature : BITMAP32 { kDeponoff = 0x1; @@ -1934,9 +2003,11 @@ client cluster ModeSelect = 80 { INT8U newMode = 0; } + /** On receipt of this command, if the NewMode field matches the Mode field in an entry of the SupportedModes list, the server SHALL set the CurrentMode attribute to the NewMode value, otherwise, the server SHALL respond with an INVALID_COMMAND status response. */ command ChangeToMode(ChangeToModeRequest): DefaultSuccess = 0; } +/** Attributes and commands for selecting a mode from a list of supported options. */ server cluster ModeSelect = 80 { bitmap ModeSelectFeature : BITMAP32 { kDeponoff = 0x1; @@ -1972,6 +2043,7 @@ server cluster ModeSelect = 80 { command ChangeToMode(ChangeToModeRequest): DefaultSuccess = 0; } +/** Provides an interface for controlling and adjusting automatic window coverings. */ server cluster WindowCovering = 258 { enum EndProductType : ENUM8 { kRollerShade = 0; @@ -2111,6 +2183,7 @@ server cluster WindowCovering = 258 { command GoToTiltPercentage(GoToTiltPercentageRequest): DefaultSuccess = 8; } +/** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { enum ControlModeEnum : ENUM8 { kConstantSpeed = 0; @@ -2232,6 +2305,7 @@ server cluster PumpConfigurationAndControl = 512 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { enum SetpointAdjustMode : ENUM8 { kHeat = 0; @@ -2321,6 +2395,7 @@ server cluster Thermostat = 513 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ client cluster ThermostatUserInterfaceConfiguration = 516 { attribute enum8 temperatureDisplayMode = 0; attribute access(write: manage) enum8 keypadLockout = 1; @@ -2333,6 +2408,7 @@ client cluster ThermostatUserInterfaceConfiguration = 516 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ server cluster ThermostatUserInterfaceConfiguration = 516 { attribute enum8 temperatureDisplayMode = 0; attribute access(write: manage) enum8 keypadLockout = 1; @@ -2345,6 +2421,7 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; @@ -2455,6 +2532,7 @@ server cluster ColorControl = 768 { command StepColor(StepColorRequest): DefaultSuccess = 9; } +/** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ server cluster IlluminanceMeasurement = 1024 { enum LightSensorType : ENUM8 { kPhotodiode = 0; @@ -2474,6 +2552,7 @@ server cluster IlluminanceMeasurement = 1024 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ client cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; @@ -2487,6 +2566,7 @@ client cluster TemperatureMeasurement = 1026 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; @@ -2500,6 +2580,7 @@ server cluster TemperatureMeasurement = 1026 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { bitmap PressureMeasurementFeature : BITMAP32 { kExtended = 0x1; @@ -2522,6 +2603,7 @@ server cluster PressureMeasurement = 1027 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -2535,6 +2617,7 @@ server cluster FlowMeasurement = 1028 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ client cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -2548,6 +2631,7 @@ client cluster RelativeHumidityMeasurement = 1029 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -2561,6 +2645,7 @@ server cluster RelativeHumidityMeasurement = 1029 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; @@ -2599,6 +2684,7 @@ server cluster OccupancySensing = 1030 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ client cluster TargetNavigator = 1285 { enum TargetNavigatorStatusEnum : ENUM8 { kSuccess = 0; @@ -2630,9 +2716,11 @@ client cluster TargetNavigator = 1285 { optional CHAR_STRING data = 1; } + /** Upon receipt, this SHALL navigation the UX to the target identified. */ command NavigateTarget(NavigateTargetRequest): NavigateTargetResponse = 0; } +/** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ server cluster TargetNavigator = 1285 { enum TargetNavigatorStatusEnum : ENUM8 { kSuccess = 0; @@ -2667,6 +2755,7 @@ server cluster TargetNavigator = 1285 { command NavigateTarget(NavigateTargetRequest): NavigateTargetResponse = 0; } +/** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ client cluster KeypadInput = 1289 { enum CecKeyCode : ENUM8 { kSelect = 0; @@ -2784,9 +2873,11 @@ client cluster KeypadInput = 1289 { KeypadInputStatusEnum status = 0; } + /** Upon receipt, this SHALL process a keycode as input to the media device. */ command SendKey(SendKeyRequest): SendKeyResponse = 0; } +/** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ server cluster KeypadInput = 1289 { enum CecKeyCode : ENUM8 { kSelect = 0; @@ -2907,6 +2998,7 @@ server cluster KeypadInput = 1289 { command SendKey(SendKeyRequest): SendKeyResponse = 0; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ContentLauncher = 1290 { enum ContentLaunchStatusEnum : ENUM8 { kSuccess = 0; @@ -3008,10 +3100,13 @@ client cluster ContentLauncher = 1290 { optional CHAR_STRING data = 1; } + /** Upon receipt, this SHALL launch the specified content with optional search criteria. */ command LaunchContent(LaunchContentRequest): LauncherResponse = 0; + /** Upon receipt, this SHALL launch content from the specified URL. */ command LaunchURL(LaunchURLRequest): LauncherResponse = 1; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ContentLauncher = 1290 { enum ContentLaunchStatusEnum : ENUM8 { kSuccess = 0; @@ -3117,6 +3212,7 @@ server cluster ContentLauncher = 1290 { command LaunchURL(LaunchURLRequest): LauncherResponse = 1; } +/** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ client cluster ApplicationBasic = 1293 { enum ApplicationStatusEnum : ENUM8 { kStopped = 0; @@ -3146,6 +3242,7 @@ client cluster ApplicationBasic = 1293 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ server cluster ApplicationBasic = 1293 { enum ApplicationStatusEnum : ENUM8 { kStopped = 0; diff --git a/examples/pump-app/pump-common/pump-app.matter b/examples/pump-app/pump-common/pump-app.matter index 7845d40f82df6c..38c46b7f007d04 100644 --- a/examples/pump-app/pump-common/pump-app.matter +++ b/examples/pump-app/pump-common/pump-app.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -83,6 +85,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -181,6 +184,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -199,6 +203,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -217,6 +222,10 @@ server cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -286,6 +295,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -332,6 +344,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -397,11 +410,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -476,6 +493,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -539,6 +557,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -670,6 +689,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -768,6 +788,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -884,6 +905,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -924,6 +946,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1039,6 +1062,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1110,6 +1134,7 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { enum ControlModeEnum : ENUM8 { kConstantSpeed = 0; @@ -1231,6 +1256,7 @@ server cluster PumpConfigurationAndControl = 512 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; @@ -1244,6 +1270,7 @@ server cluster TemperatureMeasurement = 1026 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { bitmap PressureMeasurementFeature : BITMAP32 { kExtended = 0x1; @@ -1266,6 +1293,7 @@ server cluster PressureMeasurement = 1027 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -1279,6 +1307,7 @@ server cluster FlowMeasurement = 1028 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ client cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; diff --git a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter index 5e17389817e1f1..c58e9882c4af3d 100644 --- a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter +++ b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter @@ -1,6 +1,7 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -40,6 +41,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -93,14 +95,21 @@ client cluster OnOff = 6 { int16u offWaitTime = 2; } + /** On receipt of this command, a device SHALL enter its ‘Off’ state. This state is device dependent, but it is recommended that it is used for power off or similar functions. On receipt of the Off command, the OnTime attribute SHALL be set to 0. */ command Off(): DefaultSuccess = 0; + /** On receipt of this command, a device SHALL enter its ‘On’ state. This state is device dependent, but it is recommended that it is used for power on or similar functions. On receipt of the On command, if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. */ command On(): DefaultSuccess = 1; + /** On receipt of this command, if a device is in its ‘Off’ state it SHALL enter its ‘On’ state. Otherwise, if it is in its ‘On’ state it SHALL enter its ‘Off’ state. On receipt of the Toggle command, if the value of the OnOff attribute is equal to FALSE and if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. If the value of the OnOff attribute is equal to TRUE, the OnTime attribute SHALL be set to 0. */ command Toggle(): DefaultSuccess = 2; + /** The OffWithEffect command allows devices to be turned off using enhanced ways of fading. */ command OffWithEffect(OffWithEffectRequest): DefaultSuccess = 64; + /** The OnWithRecallGlobalScene command allows the recall of the settings when the device was turned off. */ command OnWithRecallGlobalScene(): DefaultSuccess = 65; + /** The OnWithTimedOff command allows devices to be turned on for a specific duration with a guarded off duration so that SHOULD the device be subsequently switched off, further OnWithTimedOff commands, received during this time, are prevented from turning the devices back on. */ command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -119,6 +128,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -137,6 +147,10 @@ server cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -206,6 +220,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -252,6 +269,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -317,11 +335,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -396,6 +418,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -459,6 +482,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -590,6 +614,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -688,6 +713,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -804,6 +830,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -844,6 +871,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -959,6 +987,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1030,6 +1059,7 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** An interface for configuring and controlling pumps. */ client cluster PumpConfigurationAndControl = 512 { enum ControlModeEnum : ENUM8 { kConstantSpeed = 0; @@ -1151,6 +1181,7 @@ client cluster PumpConfigurationAndControl = 512 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ client cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; @@ -1164,6 +1195,7 @@ client cluster TemperatureMeasurement = 1026 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ client cluster PressureMeasurement = 1027 { bitmap PressureMeasurementFeature : BITMAP32 { kExtended = 0x1; @@ -1186,6 +1218,7 @@ client cluster PressureMeasurement = 1027 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ client cluster FlowMeasurement = 1028 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; diff --git a/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter b/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter index 231209600fca32..fe23fa32615fc6 100644 --- a/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter +++ b/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -24,6 +25,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -93,6 +98,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -142,6 +150,10 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -153,6 +165,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -185,6 +201,10 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for the units in which values are conveyed in communication to a + user. As such, Nodes that visually or audibly convey measurable values to the user need a + mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { enum TempUnitEnum : ENUM8 { kFahrenheit = 0; @@ -205,6 +225,7 @@ server cluster UnitLocalization = 45 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -268,6 +289,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -400,6 +422,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -436,6 +459,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -540,6 +564,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -560,6 +585,7 @@ server cluster SoftwareDiagnostics = 52 { readonly attribute int16u clusterRevision = 65533; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -630,6 +656,7 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute int16u clusterRevision = 65533; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -668,6 +695,7 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -708,6 +736,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -823,6 +852,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -894,6 +924,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -904,6 +936,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -914,6 +947,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter index eb2d6302c0cedd..eb60771421a415 100644 --- a/examples/thermostat/thermostat-common/thermostat.matter +++ b/examples/thermostat/thermostat-common/thermostat.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ client cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -47,10 +48,13 @@ client cluster Identify = 3 { IdentifyEffectVariant effectVariant = 1; } + /** Command description for Identify */ command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; + /** Command description for TriggerEffect */ command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -96,6 +100,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -160,6 +165,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for scene configuration and manipulation. */ server cluster Scenes = 5 { bitmap ScenesCopyMode : BITMAP8 { kCopyAllScenes = 0x1; @@ -276,6 +282,7 @@ server cluster Scenes = 5 { fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -294,6 +301,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -312,6 +320,10 @@ server cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -381,6 +393,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -430,6 +445,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -495,11 +511,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -574,6 +594,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -585,6 +609,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -617,6 +645,10 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for the units in which values are conveyed in communication to a + user. As such, Nodes that visually or audibly convey measurable values to the user need a + mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { enum TempUnitEnum : ENUM8 { kFahrenheit = 0; @@ -637,6 +669,7 @@ server cluster UnitLocalization = 45 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -700,6 +733,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -838,6 +872,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -874,6 +909,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -978,6 +1014,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -1009,6 +1046,7 @@ server cluster SoftwareDiagnostics = 52 { readonly attribute int16u clusterRevision = 65533; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1171,6 +1209,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1241,6 +1280,7 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute int16u clusterRevision = 65533; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1277,6 +1317,7 @@ server cluster EthernetNetworkDiagnostics = 55 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1317,6 +1358,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1432,6 +1474,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1503,6 +1546,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1513,6 +1558,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1523,6 +1569,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { enum SetpointAdjustMode : ENUM8 { kHeat = 0; @@ -1617,6 +1664,7 @@ server cluster Thermostat = 513 { command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0; } +/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ server cluster ThermostatUserInterfaceConfiguration = 516 { attribute enum8 temperatureDisplayMode = 0; attribute access(write: manage) enum8 keypadLockout = 1; diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter index 7fc27309c83ad8..66e0580ff703c1 100644 --- a/examples/tv-app/tv-common/tv-app.matter +++ b/examples/tv-app/tv-common/tv-app.matter @@ -11,6 +11,7 @@ struct ApplicationStruct { char_string applicationID = 1; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -54,6 +55,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -161,6 +163,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -179,6 +182,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -197,6 +201,7 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -215,6 +220,10 @@ server cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -284,6 +293,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -333,6 +345,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ server cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -403,6 +416,10 @@ server cluster OtaSoftwareUpdateProvider = 41 { command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -414,6 +431,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -446,6 +467,10 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for the units in which values are conveyed in communication to a + user. As such, Nodes that visually or audibly convey measurable values to the user need a + mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { enum TempUnitEnum : ENUM8 { kFahrenheit = 0; @@ -466,6 +491,7 @@ server cluster UnitLocalization = 45 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ client cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -524,11 +550,15 @@ client cluster GeneralCommissioning = 48 { CHAR_STRING debugText = 1; } + /** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */ command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; + /** Set the regulatory configuration to be used during commissioning */ command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; + /** Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. */ fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -592,6 +622,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ client cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -722,14 +753,21 @@ client cluster NetworkCommissioning = 49 { optional INT64U breadcrumb = 2; } + /** Detemine the set of networks the device sees as available. */ command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0; + /** Add or update the credentials for a given Wi-Fi network. */ command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2; + /** Add or update the credentials for a given Thread network. */ command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3; + /** Remove the definition of a given network (including its credentials). */ command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4; + /** Connect to the specified network, using previously-defined credentials. */ command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6; + /** Modify the order in which networks will be presented in the Networks attribute. */ command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -868,6 +906,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -904,6 +943,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -1008,6 +1048,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -1039,6 +1080,7 @@ server cluster SoftwareDiagnostics = 52 { readonly attribute int16u clusterRevision = 65533; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1199,6 +1241,7 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute int16u clusterRevision = 65533; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1269,6 +1312,7 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute int16u clusterRevision = 65533; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1307,6 +1351,7 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1347,6 +1392,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ client cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1452,16 +1498,25 @@ client cluster OperationalCredentials = 62 { OCTET_STRING rootCACertificate = 0; } + /** Sender is requesting attestation information from the receiver. */ command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0; + /** Sender is requesting a device attestation certificate from the receiver. */ command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; + /** Sender is requesting a certificate signing request (CSR) from the receiver. */ command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; + /** Sender is requesting to add the new node operational certificates. */ command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; + /** Sender is requesting to update the node operational certificates. */ fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + /** This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. */ fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + /** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */ command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; + /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */ command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1577,6 +1632,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1648,6 +1704,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1658,6 +1716,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1668,6 +1727,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -1680,6 +1740,7 @@ server cluster RelativeHumidityMeasurement = 1029 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */ server cluster WakeOnLan = 1283 { readonly attribute char_string<32> MACAddress = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1690,6 +1751,7 @@ server cluster WakeOnLan = 1283 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for controlling the current Channel on a device. */ server cluster Channel = 1284 { enum ChannelStatusEnum : ENUM8 { kSuccess = 0; @@ -1754,6 +1816,7 @@ server cluster Channel = 1284 { command SkipChannel(SkipChannelRequest): DefaultSuccess = 3; } +/** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ server cluster TargetNavigator = 1285 { enum TargetNavigatorStatusEnum : ENUM8 { kSuccess = 0; @@ -1788,6 +1851,7 @@ server cluster TargetNavigator = 1285 { command NavigateTarget(NavigateTargetRequest): NavigateTargetResponse = 0; } +/** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ server cluster MediaPlayback = 1286 { enum MediaPlaybackStatusEnum : ENUM8 { kSuccess = 0; @@ -1859,6 +1923,7 @@ server cluster MediaPlayback = 1286 { command Seek(SeekRequest): PlaybackResponse = 11; } +/** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ server cluster MediaInput = 1287 { enum InputTypeEnum : ENUM8 { kInternal = 0; @@ -1910,6 +1975,7 @@ server cluster MediaInput = 1287 { command RenameInput(RenameInputRequest): DefaultSuccess = 3; } +/** This cluster provides an interface for managing low power mode on a device. */ server cluster LowPower = 1288 { readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -1921,6 +1987,7 @@ server cluster LowPower = 1288 { command Sleep(): DefaultSuccess = 0; } +/** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ server cluster KeypadInput = 1289 { enum CecKeyCode : ENUM8 { kSelect = 0; @@ -2041,6 +2108,7 @@ server cluster KeypadInput = 1289 { command SendKey(SendKeyRequest): SendKeyResponse = 0; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ContentLauncher = 1290 { enum ContentLaunchStatusEnum : ENUM8 { kSuccess = 0; @@ -2146,6 +2214,7 @@ server cluster ContentLauncher = 1290 { command LaunchURL(LaunchURLRequest): LauncherResponse = 1; } +/** This cluster provides an interface for controlling the Output on a media device such as a TV. */ server cluster AudioOutput = 1291 { enum OutputTypeEnum : ENUM8 { kHdmi = 0; @@ -2188,6 +2257,7 @@ server cluster AudioOutput = 1291 { command RenameOutput(RenameOutputRequest): DefaultSuccess = 1; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ApplicationLauncher = 1292 { enum ApplicationLauncherStatusEnum : ENUM8 { kSuccess = 0; @@ -2236,6 +2306,7 @@ server cluster ApplicationLauncher = 1292 { command HideApp(HideAppRequest): LauncherResponse = 2; } +/** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ server cluster ApplicationBasic = 1293 { enum ApplicationStatusEnum : ENUM8 { kStopped = 0; @@ -2260,6 +2331,7 @@ server cluster ApplicationBasic = 1293 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ server cluster AccountLogin = 1294 { readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter index 4366a98ca254e2..79f9241b712f60 100644 --- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter +++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -45,6 +46,7 @@ server cluster Identify = 3 { command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -109,6 +111,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for scene configuration and manipulation. */ server cluster Scenes = 5 { bitmap ScenesCopyMode : BITMAP8 { kCopyAllScenes = 0x1; @@ -225,6 +228,7 @@ server cluster Scenes = 5 { fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -278,14 +282,21 @@ client cluster OnOff = 6 { int16u offWaitTime = 2; } + /** On receipt of this command, a device SHALL enter its ‘Off’ state. This state is device dependent, but it is recommended that it is used for power off or similar functions. On receipt of the Off command, the OnTime attribute SHALL be set to 0. */ command Off(): DefaultSuccess = 0; + /** On receipt of this command, a device SHALL enter its ‘On’ state. This state is device dependent, but it is recommended that it is used for power on or similar functions. On receipt of the On command, if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. */ command On(): DefaultSuccess = 1; + /** On receipt of this command, if a device is in its ‘Off’ state it SHALL enter its ‘On’ state. Otherwise, if it is in its ‘On’ state it SHALL enter its ‘Off’ state. On receipt of the Toggle command, if the value of the OnOff attribute is equal to FALSE and if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. If the value of the OnOff attribute is equal to TRUE, the OnTime attribute SHALL be set to 0. */ command Toggle(): DefaultSuccess = 2; + /** The OffWithEffect command allows devices to be turned off using enhanced ways of fading. */ command OffWithEffect(OffWithEffectRequest): DefaultSuccess = 64; + /** The OnWithRecallGlobalScene command allows the recall of the settings when the device was turned off. */ command OnWithRecallGlobalScene(): DefaultSuccess = 65; + /** The OnWithTimedOff command allows devices to be turned on for a specific duration with a guarded off duration so that SHOULD the device be subsequently switched off, further OnWithTimedOff commands, received during this time, are prevented from turning the devices back on. */ command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -333,6 +344,7 @@ server cluster OnOff = 6 { command Toggle(): DefaultSuccess = 2; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ client cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -434,17 +446,28 @@ client cluster LevelControl = 8 { INT16U frequency = 0; } + /** Command description for MoveToLevel */ command MoveToLevel(MoveToLevelRequest): DefaultSuccess = 0; + /** Command description for Move */ command Move(MoveRequest): DefaultSuccess = 1; + /** Command description for Step */ command Step(StepRequest): DefaultSuccess = 2; + /** Command description for Stop */ command Stop(StopRequest): DefaultSuccess = 3; + /** Command description for MoveToLevelWithOnOff */ command MoveToLevelWithOnOff(MoveToLevelWithOnOffRequest): DefaultSuccess = 4; + /** Command description for MoveWithOnOff */ command MoveWithOnOff(MoveWithOnOffRequest): DefaultSuccess = 5; + /** Command description for StepWithOnOff */ command StepWithOnOff(StepWithOnOffRequest): DefaultSuccess = 6; + /** Command description for StopWithOnOff */ command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; + /** Change the currrent frequency to the provided one, or a close + approximation if the exact provided one is not possible. */ command MoveToClosestFrequency(MoveToClosestFrequencyRequest): DefaultSuccess = 8; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -552,6 +575,7 @@ server cluster LevelControl = 8 { command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; } +/** An interface for reading the value of a binary measurement and accessing various characteristics of that measurement. */ server cluster BinaryInputBasic = 15 { attribute boolean outOfService = 81; attribute boolean presentValue = 85; @@ -564,6 +588,7 @@ server cluster BinaryInputBasic = 15 { readonly attribute int16u clusterRevision = 65533; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ client cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -582,6 +607,7 @@ client cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -600,6 +626,7 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -618,6 +645,10 @@ server cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -687,6 +718,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -736,6 +770,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ server cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -806,6 +841,10 @@ server cluster OtaSoftwareUpdateProvider = 41 { command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -817,6 +856,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -849,6 +892,10 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for the units in which values are conveyed in communication to a + user. As such, Nodes that visually or audibly convey measurable values to the user need a + mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { enum TempUnitEnum : ENUM8 { kFahrenheit = 0; @@ -869,6 +916,7 @@ server cluster UnitLocalization = 45 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -932,6 +980,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -1070,6 +1119,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -1106,6 +1156,7 @@ server cluster DiagnosticLogs = 50 { command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -1210,6 +1261,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -1241,6 +1293,7 @@ server cluster SoftwareDiagnostics = 52 { readonly attribute int16u clusterRevision = 65533; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1401,6 +1454,7 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute int16u clusterRevision = 65533; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1471,6 +1525,7 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute int16u clusterRevision = 65533; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1509,6 +1564,9 @@ server cluster EthernetNetworkDiagnostics = 55 { command ResetCounts(): DefaultSuccess = 0; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -1558,6 +1616,7 @@ server cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1598,6 +1657,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1713,6 +1773,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1776,6 +1837,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1786,6 +1849,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1796,6 +1860,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides control of a barrier (garage door). */ server cluster BarrierControl = 259 { readonly attribute enum8 barrierMovingState = 1; readonly attribute bitmap16 barrierSafetyStatus = 2; @@ -1816,6 +1881,7 @@ server cluster BarrierControl = 259 { command BarrierControlStop(): DefaultSuccess = 1; } +/** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */ server cluster WakeOnLan = 1283 { readonly attribute char_string<32> MACAddress = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1826,6 +1892,7 @@ server cluster WakeOnLan = 1283 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for controlling the current Channel on a device. */ client cluster Channel = 1284 { enum ChannelStatusEnum : ENUM8 { kSuccess = 0; @@ -1885,11 +1952,15 @@ client cluster Channel = 1284 { INT16U count = 0; } + /** Change the channel on the media player to the channel case-insensitive exact matching the value passed as an argument. */ command ChangeChannel(ChangeChannelRequest): ChangeChannelResponse = 0; + /** Change the channel on the media plaeyer to the channel with the given Number in the ChannelList attribute. */ command ChangeChannelByNumber(ChangeChannelByNumberRequest): DefaultSuccess = 2; + /** This command provides channel up and channel down functionality, but allows channel index jumps of size Count. When the value of the increase or decrease is larger than the number of channels remaining in the given direction, then the behavior SHALL be to return to the beginning (or end) of the channel list and continue. For example, if the current channel is at index 0 and count value of -1 is given, then the current channel should change to the last channel. */ command SkipChannel(SkipChannelRequest): DefaultSuccess = 3; } +/** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ client cluster TargetNavigator = 1285 { enum TargetNavigatorStatusEnum : ENUM8 { kSuccess = 0; @@ -1921,9 +1992,11 @@ client cluster TargetNavigator = 1285 { optional CHAR_STRING data = 1; } + /** Upon receipt, this SHALL navigation the UX to the target identified. */ command NavigateTarget(NavigateTargetRequest): NavigateTargetResponse = 0; } +/** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ client cluster MediaPlayback = 1286 { enum MediaPlaybackStatusEnum : ENUM8 { kSuccess = 0; @@ -1982,19 +2055,31 @@ client cluster MediaPlayback = 1286 { INT64U position = 0; } + /** Upon receipt, this SHALL play media. */ command Play(): PlaybackResponse = 0; + /** Upon receipt, this SHALL pause media. */ command Pause(): PlaybackResponse = 1; + /** Upon receipt, this SHALL stop media. User experience is context-specific. This will often navigate the user back to the location where media was originally launched. */ command Stop(): PlaybackResponse = 2; + /** Upon receipt, this SHALL Start Over with the current media playback item. */ command StartOver(): PlaybackResponse = 3; + /** Upon receipt, this SHALL cause the handler to be invoked for "Previous". User experience is context-specific. This will often Go back to the previous media playback item. */ command Previous(): PlaybackResponse = 4; + /** Upon receipt, this SHALL cause the handler to be invoked for "Next". User experience is context-specific. This will often Go forward to the next media playback item. */ command Next(): PlaybackResponse = 5; + /** Upon receipt, this SHALL Rewind through media. Different Rewind speeds can be used on the TV based upon the number of sequential calls to this function. This is to avoid needing to define every speed now (multiple fast, slow motion, etc). */ command Rewind(): PlaybackResponse = 6; + /** Upon receipt, this SHALL Advance through media. Different FF speeds can be used on the TV based upon the number of sequential calls to this function. This is to avoid needing to define every speed now (multiple fast, slow motion, etc). */ command FastForward(): PlaybackResponse = 7; + /** Upon receipt, this SHALL Skip forward in the media by the given number of seconds, using the data as follows: */ command SkipForward(SkipForwardRequest): PlaybackResponse = 8; + /** Upon receipt, this SHALL Skip backward in the media by the given number of seconds, using the data as follows: */ command SkipBackward(SkipBackwardRequest): PlaybackResponse = 9; + /** Upon receipt, this SHALL Skip backward in the media by the given number of seconds, using the data as follows: */ command Seek(SeekRequest): PlaybackResponse = 11; } +/** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ client cluster MediaInput = 1287 { enum InputTypeEnum : ENUM8 { kInternal = 0; @@ -2040,12 +2125,17 @@ client cluster MediaInput = 1287 { CHAR_STRING name = 1; } + /** Upon receipt, this SHALL change the input on the media device to the input at a specific index in the Input List. */ command SelectInput(SelectInputRequest): DefaultSuccess = 0; + /** Upon receipt, this SHALL display the active status of the input list on screen. */ command ShowInputStatus(): DefaultSuccess = 1; + /** Upon receipt, this SHALL hide the input list from the screen. */ command HideInputStatus(): DefaultSuccess = 2; + /** Upon receipt, this SHALL rename the input at a specific index in the Input List. Updates to the input name SHALL appear in the TV settings menus. */ command RenameInput(RenameInputRequest): DefaultSuccess = 3; } +/** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ client cluster KeypadInput = 1289 { enum CecKeyCode : ENUM8 { kSelect = 0; @@ -2163,9 +2253,11 @@ client cluster KeypadInput = 1289 { KeypadInputStatusEnum status = 0; } + /** Upon receipt, this SHALL process a keycode as input to the media device. */ command SendKey(SendKeyRequest): SendKeyResponse = 0; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ContentLauncher = 1290 { enum ContentLaunchStatusEnum : ENUM8 { kSuccess = 0; @@ -2267,10 +2359,13 @@ client cluster ContentLauncher = 1290 { optional CHAR_STRING data = 1; } + /** Upon receipt, this SHALL launch the specified content with optional search criteria. */ command LaunchContent(LaunchContentRequest): LauncherResponse = 0; + /** Upon receipt, this SHALL launch content from the specified URL. */ command LaunchURL(LaunchURLRequest): LauncherResponse = 1; } +/** This cluster provides an interface for controlling the Output on a media device such as a TV. */ client cluster AudioOutput = 1291 { enum OutputTypeEnum : ENUM8 { kHdmi = 0; @@ -2309,10 +2404,13 @@ client cluster AudioOutput = 1291 { CHAR_STRING name = 1; } + /** Upon receipt, this SHALL change the output on the media device to the output at a specific index in the Output List. */ command SelectOutput(SelectOutputRequest): DefaultSuccess = 0; + /** Upon receipt, this SHALL rename the output at a specific index in the Output List. Updates to the output name SHALL appear in the TV settings menus. */ command RenameOutput(RenameOutputRequest): DefaultSuccess = 1; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ApplicationLauncher = 1292 { enum ApplicationLauncherStatusEnum : ENUM8 { kSuccess = 0; @@ -2361,11 +2459,15 @@ client cluster ApplicationLauncher = 1292 { optional OCTET_STRING data = 1; } + /** Upon receipt, this SHALL launch the specified app with optional data. The TV Device SHALL launch and bring to foreground the identified application in the command if the application is not already launched and in foreground. The TV Device SHALL update state attribute on the Application Basic cluster of the Endpoint corresponding to the launched application. This command returns a Launch Response. */ command LaunchApp(LaunchAppRequest): LauncherResponse = 0; + /** Upon receipt on a Video Player endpoint this SHALL stop the specified application if it is running. */ command StopApp(StopAppRequest): LauncherResponse = 1; + /** Upon receipt on a Video Player endpoint this SHALL hide the specified application if it is running and visible. */ command HideApp(HideAppRequest): LauncherResponse = 2; } +/** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ client cluster ApplicationBasic = 1293 { enum ApplicationStatusEnum : ENUM8 { kStopped = 0; @@ -2395,6 +2497,7 @@ client cluster ApplicationBasic = 1293 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ client cluster AccountLogin = 1294 { readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -2416,8 +2519,11 @@ client cluster AccountLogin = 1294 { CHAR_STRING setupPIN = 1; } + /** Upon receipt, the Content App checks if the account associated with the client Temp Account Identifier Rotating ID is the same acount that is active on the given Content App. If the accounts are the same, then the Content App includes the Setup PIN in the GetSetupPIN Response. */ timed command GetSetupPIN(GetSetupPINRequest): GetSetupPINResponse = 0; + /** Upon receipt, the Content App checks if the account associated with the client’s Temp Account Identifier (Rotating ID) has a current active Setup PIN with the given value. If the Setup PIN is valid for the user account associated with the Temp Account Identifier, then the Content App MAY make that user account active. */ timed command Login(LoginRequest): DefaultSuccess = 2; + /** The purpose of this command is to instruct the Content App to clear the current user account. This command SHOULD be used by clients of a Content App to indicate the end of a user session. */ timed command Logout(): DefaultSuccess = 3; } diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter index 37dc324e34fe76..9dffeb9e414461 100644 --- a/examples/window-app/common/window-app.matter +++ b/examples/window-app/common/window-app.matter @@ -6,6 +6,7 @@ struct LabelStruct { char_string<16> value = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -51,6 +52,7 @@ server cluster Identify = 3 { command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -115,6 +117,7 @@ server cluster Groups = 4 { fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for scene configuration and manipulation. */ server cluster Scenes = 5 { bitmap ScenesCopyMode : BITMAP8 { kCopyAllScenes = 0x1; @@ -231,6 +234,7 @@ server cluster Scenes = 5 { fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -249,6 +253,10 @@ server cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ server cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -318,6 +326,9 @@ server cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -367,6 +378,7 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -432,11 +444,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -511,6 +527,10 @@ server cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -522,6 +542,10 @@ server cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ server cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -554,6 +578,10 @@ server cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for the units in which values are conveyed in communication to a + user. As such, Nodes that visually or audibly convey measurable values to the user need a + mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { enum TempUnitEnum : ENUM8 { kFahrenheit = 0; @@ -573,6 +601,7 @@ server cluster UnitLocalization = 45 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { enum BatApprovedChemistryEnum : ENUM16 { kUnspecified = 0; @@ -791,6 +820,7 @@ server cluster PowerSource = 47 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -854,6 +884,7 @@ server cluster GeneralCommissioning = 48 { fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -992,6 +1023,7 @@ server cluster NetworkCommissioning = 49 { command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -1096,6 +1128,7 @@ server cluster GeneralDiagnostics = 51 { command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -1129,6 +1162,7 @@ server cluster SoftwareDiagnostics = 52 { command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1291,6 +1325,7 @@ server cluster ThreadNetworkDiagnostics = 53 { command ResetCounts(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1361,6 +1396,7 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute int16u clusterRevision = 65533; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1397,6 +1433,7 @@ server cluster EthernetNetworkDiagnostics = 55 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -1437,6 +1474,7 @@ server cluster AdministratorCommissioning = 60 { timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -1552,6 +1590,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -1623,6 +1662,8 @@ server cluster GroupKeyManagement = 63 { fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ server cluster FixedLabel = 64 { readonly attribute LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1633,6 +1674,7 @@ server cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { attribute access(write: manage) LabelStruct labelList[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1643,6 +1685,7 @@ server cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** Provides an interface for controlling and adjusting automatic window coverings. */ server cluster WindowCovering = 258 { enum EndProductType : ENUM8 { kRollerShade = 0; diff --git a/src/app/zap-templates/partials/idl/command_request_response.zapt b/src/app/zap-templates/partials/idl/command_request_response.zapt index fed6c421c2c581..dcbf51b210ff02 100644 --- a/src/app/zap-templates/partials/idl/command_request_response.zapt +++ b/src/app/zap-templates/partials/idl/command_request_response.zapt @@ -1,6 +1,9 @@ {{#first}} {{/first}} + {{#if description}} + /** {{description}} */ + {{/if}} {{~indent 1~}} {{#if isFabricScoped~}} fabric {{/if~}} {{#if mustUseTimedInvoke~}} timed {{/if~}} diff --git a/src/app/zap-templates/templates/app/MatterIDL.zapt b/src/app/zap-templates/templates/app/MatterIDL.zapt index 6861166ef75195..39dc948f718c88 100644 --- a/src/app/zap-templates/templates/app/MatterIDL.zapt +++ b/src/app/zap-templates/templates/app/MatterIDL.zapt @@ -5,10 +5,9 @@ {{>idl_structure_definition extraIndent=0}} {{/chip_shared_structs}} -{{!TODO: consider #chip_clusters as iteration point as well. -{{! Unsure about the differences}} -{{#all_user_clusters}} - {{~side}} cluster {{asUpperCamelCase name}} = {{code}} { +{{#all_user_clusters~}} +/** {{description}} */ +{{side}} cluster {{asUpperCamelCase name}} = {{code}} { {{#zcl_enums}} enum {{asUpperCamelCase name}} : ENUM{{multiply size 8}} { {{#zcl_enum_items}} diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index 840e4fb3be5a60..a0a33ddd8f8fb4 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -11,6 +11,7 @@ struct ApplicationStruct { char_string applicationID = 1; } +/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ client cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -52,10 +53,13 @@ client cluster Identify = 3 { IdentifyEffectVariant effectVariant = 1; } + /** Command description for Identify */ command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; + /** Command description for TriggerEffect */ command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } +/** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { bitmap GroupsFeature : BITMAP32 { kGroupNames = 0x1; @@ -112,14 +116,21 @@ client cluster Groups = 4 { CHAR_STRING groupName = 1; } + /** Command description for AddGroup */ fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + /** Command description for ViewGroup */ fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + /** Command description for GetGroupMembership */ fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + /** Command description for RemoveGroup */ fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + /** Command description for RemoveAllGroups */ fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + /** Command description for AddGroupIfIdentifying */ fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } +/** Attributes and commands for scene configuration and manipulation. */ client cluster Scenes = 5 { bitmap ScenesCopyMode : BITMAP8 { kCopyAllScenes = 0x1; @@ -270,18 +281,29 @@ client cluster Scenes = 5 { INT8U sceneIdentifierFrom = 2; } + /** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */ fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + /** Retrieves the requested scene entry from its Scene table. */ fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + /** Removes the requested scene entry, corresponding to the value of the GroupID field, from its Scene Table */ fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + /** Remove all scenes, corresponding to the value of the GroupID field, from its Scene Table */ fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + /** Adds the scene entry into its Scene Table along with all extension field sets corresponding to the current state of other clusters on the same endpoint */ fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + /** Set the attributes and corresponding state for each other cluster implemented on the endpoint accordingly to the resquested scene entry in the Scene Table */ fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + /** Get an unused scene identifier when no commissioning tool is in the network, or for a commissioning tool to get the used scene identifiers within a certain group */ fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + /** Allows a scene to be added using a finer scene transition time than the AddScene command. */ fabric command EnhancedAddScene(EnhancedAddSceneRequest): EnhancedAddSceneResponse = 64; + /** Allows a scene to be retrieved using a finer scene transition time than the ViewScene command */ fabric command EnhancedViewScene(EnhancedViewSceneRequest): EnhancedViewSceneResponse = 65; + /** Allows a client to efficiently copy scenes from one group/scene identifier pair to another group/scene identifier pair. */ fabric command CopyScene(CopySceneRequest): CopySceneResponse = 66; } +/** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { enum OnOffDelayedAllOffEffectVariant : ENUM8 { kFadeToOffIn0p8Seconds = 0; @@ -335,14 +357,21 @@ client cluster OnOff = 6 { int16u offWaitTime = 2; } + /** On receipt of this command, a device SHALL enter its ‘Off’ state. This state is device dependent, but it is recommended that it is used for power off or similar functions. On receipt of the Off command, the OnTime attribute SHALL be set to 0. */ command Off(): DefaultSuccess = 0; + /** On receipt of this command, a device SHALL enter its ‘On’ state. This state is device dependent, but it is recommended that it is used for power on or similar functions. On receipt of the On command, if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. */ command On(): DefaultSuccess = 1; + /** On receipt of this command, if a device is in its ‘Off’ state it SHALL enter its ‘On’ state. Otherwise, if it is in its ‘On’ state it SHALL enter its ‘Off’ state. On receipt of the Toggle command, if the value of the OnOff attribute is equal to FALSE and if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. If the value of the OnOff attribute is equal to TRUE, the OnTime attribute SHALL be set to 0. */ command Toggle(): DefaultSuccess = 2; + /** The OffWithEffect command allows devices to be turned off using enhanced ways of fading. */ command OffWithEffect(OffWithEffectRequest): DefaultSuccess = 64; + /** The OnWithRecallGlobalScene command allows the recall of the settings when the device was turned off. */ command OnWithRecallGlobalScene(): DefaultSuccess = 65; + /** The OnWithTimedOff command allows devices to be turned on for a specific duration with a guarded off duration so that SHOULD the device be subsequently switched off, further OnWithTimedOff commands, received during this time, are prevented from turning the devices back on. */ command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } +/** Attributes and commands for configuring On/Off switching devices. */ client cluster OnOffSwitchConfiguration = 7 { readonly attribute enum8 switchType = 0; attribute enum8 switchActions = 16; @@ -354,6 +383,7 @@ client cluster OnOffSwitchConfiguration = 7 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ client cluster LevelControl = 8 { enum MoveMode : ENUM8 { kUp = 0; @@ -455,17 +485,28 @@ client cluster LevelControl = 8 { INT16U frequency = 0; } + /** Command description for MoveToLevel */ command MoveToLevel(MoveToLevelRequest): DefaultSuccess = 0; + /** Command description for Move */ command Move(MoveRequest): DefaultSuccess = 1; + /** Command description for Step */ command Step(StepRequest): DefaultSuccess = 2; + /** Command description for Stop */ command Stop(StopRequest): DefaultSuccess = 3; + /** Command description for MoveToLevelWithOnOff */ command MoveToLevelWithOnOff(MoveToLevelWithOnOffRequest): DefaultSuccess = 4; + /** Command description for MoveWithOnOff */ command MoveWithOnOff(MoveWithOnOffRequest): DefaultSuccess = 5; + /** Command description for StepWithOnOff */ command StepWithOnOff(StepWithOnOffRequest): DefaultSuccess = 6; + /** Command description for StopWithOnOff */ command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; + /** Change the currrent frequency to the provided one, or a close + approximation if the exact provided one is not possible. */ command MoveToClosestFrequency(MoveToClosestFrequencyRequest): DefaultSuccess = 8; } +/** An interface for reading the value of a binary measurement and accessing various characteristics of that measurement. */ client cluster BinaryInputBasic = 15 { attribute char_string<16> activeText = 4; attribute char_string<16> description = 28; @@ -484,6 +525,7 @@ client cluster BinaryInputBasic = 15 { readonly attribute int16u clusterRevision = 65533; } +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ client cluster Descriptor = 29 { struct DeviceTypeStruct { devtype_id deviceType = 0; @@ -502,6 +544,7 @@ client cluster Descriptor = 29 { readonly attribute int16u clusterRevision = 65533; } +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { fabric_scoped struct TargetStruct { optional node_id node = 1; @@ -520,6 +563,10 @@ client cluster Binding = 30 { readonly attribute int16u clusterRevision = 65533; } +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ client cluster AccessControl = 31 { enum AccessControlEntryAuthModeEnum : ENUM8 { kPase = 1; @@ -589,6 +636,7 @@ client cluster AccessControl = 31 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ client cluster Actions = 37 { enum ActionErrorEnum : ENUM8 { kUnknown = 0; @@ -737,20 +785,35 @@ client cluster Actions = 37 { INT32U duration = 2; } + /** This command triggers an action (state change) on the involved endpoints. */ command InstantAction(InstantActionRequest): DefaultSuccess = 0; + /** This command triggers an action (state change) on the involved endpoints, with a specified time to transition from the current state to the new state. */ command InstantActionWithTransition(InstantActionWithTransitionRequest): DefaultSuccess = 1; + /** This command triggers the commencement of an action on the involved endpoints. */ command StartAction(StartActionRequest): DefaultSuccess = 2; + /** This command triggers the commencement of an action (with a duration) on the involved endpoints. */ command StartActionWithDuration(StartActionWithDurationRequest): DefaultSuccess = 3; + /** This command stops the ongoing action on the involved endpoints. */ command StopAction(StopActionRequest): DefaultSuccess = 4; + /** This command pauses an ongoing action. */ command PauseAction(PauseActionRequest): DefaultSuccess = 5; + /** This command pauses an ongoing action with a duration. */ command PauseActionWithDuration(PauseActionWithDurationRequest): DefaultSuccess = 6; + /** This command resumes a previously paused action. */ command ResumeAction(ResumeActionRequest): DefaultSuccess = 7; + /** This command enables a certain action or automation. */ command EnableAction(EnableActionRequest): DefaultSuccess = 8; + /** This command enables a certain action or automation with a duration. */ command EnableActionWithDuration(EnableActionWithDurationRequest): DefaultSuccess = 9; + /** This command disables a certain action or automation. */ command DisableAction(DisableActionRequest): DefaultSuccess = 10; + /** This command disables a certain action or automation with a duration. */ command DisableActionWithDuration(DisableActionWithDurationRequest): DefaultSuccess = 11; } +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ client cluster BasicInformation = 40 { struct CapabilityMinimaStruct { int16u caseSessionsPerFabric = 0; @@ -802,6 +865,7 @@ client cluster BasicInformation = 40 { command MfgSpecificPing(): DefaultSuccess = 0; } +/** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { enum OTAApplyUpdateAction : ENUM8 { kProceed = 0; @@ -867,11 +931,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { INT32U softwareVersion = 1; } + /** Determine availability of a new Software Image */ command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } +/** Provides an interface for downloading and applying OTA software updates */ client cluster OtaSoftwareUpdateRequestor = 42 { enum OTAAnnouncementReason : ENUM8 { kSimpleAnnouncement = 0; @@ -943,9 +1011,14 @@ client cluster OtaSoftwareUpdateRequestor = 42 { endpoint_no endpoint = 4; } + /** Announce the presence of an OTA Provider */ command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ client cluster LocalizationConfiguration = 43 { attribute char_string<35> activeLocale = 0; readonly attribute CHAR_STRING supportedLocales[] = 1; @@ -957,6 +1030,10 @@ client cluster LocalizationConfiguration = 43 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ client cluster TimeFormatLocalization = 44 { enum CalendarTypeEnum : ENUM8 { kBuddhist = 0; @@ -989,6 +1066,10 @@ client cluster TimeFormatLocalization = 44 { readonly attribute int16u clusterRevision = 65533; } +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for the units in which values are conveyed in communication to a + user. As such, Nodes that visually or audibly convey measurable values to the user need a + mechanism by which they can be configured to use a user’s preferred unit. */ client cluster UnitLocalization = 45 { enum TempUnitEnum : ENUM8 { kFahrenheit = 0; @@ -1009,6 +1090,7 @@ client cluster UnitLocalization = 45 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to describe the configuration and capabilities of a Device's power system. */ client cluster PowerSourceConfiguration = 46 { readonly attribute INT8U sources[] = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -1019,6 +1101,7 @@ client cluster PowerSourceConfiguration = 46 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ client cluster PowerSource = 47 { enum BatApprovedChemistryEnum : ENUM16 { kUnspecified = 0; @@ -1274,6 +1357,7 @@ client cluster PowerSource = 47 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster is used to manage global aspects of the Commissioning flow. */ client cluster GeneralCommissioning = 48 { enum CommissioningError : ENUM8 { kOk = 0; @@ -1332,11 +1416,15 @@ client cluster GeneralCommissioning = 48 { CHAR_STRING debugText = 1; } + /** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */ command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; + /** Set the regulatory configuration to be used during commissioning */ command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; + /** Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. */ fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ client cluster NetworkCommissioning = 49 { enum NetworkCommissioningStatus : ENUM8 { kSuccess = 0; @@ -1467,14 +1555,21 @@ client cluster NetworkCommissioning = 49 { optional INT64U breadcrumb = 2; } + /** Detemine the set of networks the device sees as available. */ command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0; + /** Add or update the credentials for a given Wi-Fi network. */ command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2; + /** Add or update the credentials for a given Thread network. */ command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3; + /** Remove the definition of a given network (including its credentials). */ command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4; + /** Connect to the specified network, using previously-defined credentials. */ command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6; + /** Modify the order in which networks will be presented in the Networks attribute. */ command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; } +/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ client cluster DiagnosticLogs = 50 { enum IntentEnum : ENUM8 { kEndUserSupport = 0; @@ -1515,9 +1610,11 @@ client cluster DiagnosticLogs = 50 { optional systime_us timeSinceBoot = 3; } + /** Retrieving diagnostic logs from a Node */ command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ client cluster GeneralDiagnostics = 51 { enum BootReasonEnum : ENUM8 { kUnspecified = 0; @@ -1619,9 +1716,11 @@ client cluster GeneralDiagnostics = 51 { INT64U eventTrigger = 1; } + /** Provide a means for certification tests to trigger some test-plan-specific events */ command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; } +/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ client cluster SoftwareDiagnostics = 52 { bitmap SoftwareDiagnosticsFeature : BITMAP32 { kWaterMarks = 0x1; @@ -1652,9 +1751,11 @@ client cluster SoftwareDiagnostics = 52 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reception of this command SHALL reset the values: The StackFreeMinimum field of the ThreadMetrics attribute, CurrentHeapHighWaterMark attribute. */ command ResetWatermarks(): DefaultSuccess = 0; } +/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ client cluster ThreadNetworkDiagnostics = 53 { enum ConnectionStatusEnum : ENUM8 { kConnected = 0; @@ -1814,9 +1915,11 @@ client cluster ThreadNetworkDiagnostics = 53 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reception of this command SHALL reset the OverrunCount attributes to 0 */ command ResetCounts(): DefaultSuccess = 0; } +/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ client cluster WiFiNetworkDiagnostics = 54 { enum AssociationFailureCauseEnum : ENUM8 { kUnknown = 0; @@ -1886,9 +1989,11 @@ client cluster WiFiNetworkDiagnostics = 54 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reception of this command SHALL reset the Breacon and Packet related count attributes to 0 */ command ResetCounts(): DefaultSuccess = 0; } +/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ client cluster EthernetNetworkDiagnostics = 55 { enum PHYRateEnum : ENUM8 { kRate10M = 0; @@ -1924,9 +2029,14 @@ client cluster EthernetNetworkDiagnostics = 55 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reception of this command SHALL reset the attributes: PacketRxCount, PacketTxCount, TxErrCount, CollisionCount, OverrunCount to 0 */ command ResetCounts(): DefaultSuccess = 0; } +/** This Cluster serves two purposes towards a Node communicating with a Bridge: indicate that the functionality on + the Endpoint where it is placed (and its Parts) is bridged from a non-CHIP technology; and provide a centralized + collection of attributes that the Node MAY collect to aid in conveying information regarding the Bridged Device to a user, + such as the vendor name, the model name, or user-assigned name. */ client cluster BridgedDeviceBasicInformation = 57 { critical event StartUp = 0 { INT32U softwareVersion = 0; @@ -1965,6 +2075,9 @@ client cluster BridgedDeviceBasicInformation = 57 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. +Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. +Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ client cluster Switch = 59 { bitmap SwitchFeature : BITMAP32 { kLatchingSwitch = 0x1; @@ -2015,6 +2128,7 @@ client cluster Switch = 59 { readonly attribute int16u clusterRevision = 65533; } +/** Commands to trigger a Node to allow a new Administrator to commission it. */ client cluster AdministratorCommissioning = 60 { enum CommissioningWindowStatusEnum : ENUM8 { kWindowNotOpen = 0; @@ -2050,11 +2164,15 @@ client cluster AdministratorCommissioning = 60 { INT16U commissioningTimeout = 0; } + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using enhanced commissioning method. */ timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0; + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using basic commissioning method, if the node supports it. */ timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1; + /** This command is used by a current Administrator to instruct a Node to revoke any active Open Commissioning Window or Open Basic Commissioning Window command. */ timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ client cluster OperationalCredentials = 62 { enum CertificateChainTypeEnum : ENUM8 { kDACCertificate = 1; @@ -2160,16 +2278,25 @@ client cluster OperationalCredentials = 62 { OCTET_STRING rootCACertificate = 0; } + /** Sender is requesting attestation information from the receiver. */ command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0; + /** Sender is requesting a device attestation certificate from the receiver. */ command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; + /** Sender is requesting a certificate signing request (CSR) from the receiver. */ command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; + /** Sender is requesting to add the new node operational certificates. */ command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; + /** Sender is requesting to update the node operational certificates. */ fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + /** This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. */ fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + /** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */ command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; + /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */ command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ client cluster GroupKeyManagement = 63 { enum GroupKeySecurityPolicyEnum : ENUM8 { kTrustFirst = 0; @@ -2235,12 +2362,18 @@ client cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } + /** Write a new set of keys for the given key set id. */ fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + /** Read the keys for a given key set id. */ fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + /** Revoke a Root Key from a Group */ fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + /** Return the list of Group Key Sets associated with the accessing fabric */ fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } +/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only +labels. */ client cluster FixedLabel = 64 { struct LabelStruct { char_string<16> label = 0; @@ -2256,6 +2389,7 @@ client cluster FixedLabel = 64 { readonly attribute int16u clusterRevision = 65533; } +/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ client cluster UserLabel = 65 { struct LabelStruct { char_string<16> label = 0; @@ -2271,6 +2405,7 @@ client cluster UserLabel = 65 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface to a boolean state called StateValue. */ client cluster BooleanState = 69 { info event StateChange = 0 { boolean stateValue = 0; @@ -2285,6 +2420,7 @@ client cluster BooleanState = 69 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for selecting a mode from a list of supported options. */ client cluster ModeSelect = 80 { bitmap ModeSelectFeature : BITMAP32 { kDeponoff = 0x1; @@ -2318,9 +2454,11 @@ client cluster ModeSelect = 80 { INT8U newMode = 0; } + /** On receipt of this command, if the NewMode field matches the Mode field in an entry of the SupportedModes list, the server SHALL set the CurrentMode attribute to the NewMode value, otherwise, the server SHALL respond with an INVALID_COMMAND status response. */ command ChangeToMode(ChangeToModeRequest): DefaultSuccess = 0; } +/** An interface to a generic way to secure a door */ client cluster DoorLock = 257 { enum AlarmCodeEnum : ENUM8 { kLockJammed = 0; @@ -2892,26 +3030,45 @@ client cluster DoorLock = 257 { nullable CredentialStruct credential = 0; } + /** This command causes the lock device to lock the door. */ timed command LockDoor(LockDoorRequest): DefaultSuccess = 0; + /** This command causes the lock device to unlock the door. */ timed command UnlockDoor(UnlockDoorRequest): DefaultSuccess = 1; + /** This command causes the lock device to unlock the door with a timeout parameter. */ timed command UnlockWithTimeout(UnlockWithTimeoutRequest): DefaultSuccess = 3; + /** Set a weekly repeating schedule for a specified user. */ command access(invoke: administer) SetWeekDaySchedule(SetWeekDayScheduleRequest): DefaultSuccess = 11; + /** Retrieve the specific weekly schedule for the specific user. */ command access(invoke: administer) GetWeekDaySchedule(GetWeekDayScheduleRequest): GetWeekDayScheduleResponse = 12; + /** Clear the specific weekly schedule or all weekly schedules for the specific user. */ command access(invoke: administer) ClearWeekDaySchedule(ClearWeekDayScheduleRequest): DefaultSuccess = 13; + /** Set a time-specific schedule ID for a specified user. */ command access(invoke: administer) SetYearDaySchedule(SetYearDayScheduleRequest): DefaultSuccess = 14; + /** Returns the year day schedule data for the specified schedule and user indexes. */ command access(invoke: administer) GetYearDaySchedule(GetYearDayScheduleRequest): GetYearDayScheduleResponse = 15; + /** Clears the specific year day schedule or all year day schedules for the specific user. */ command access(invoke: administer) ClearYearDaySchedule(ClearYearDayScheduleRequest): DefaultSuccess = 16; + /** Set the holiday Schedule by specifying local start time and local end time with respect to any Lock Operating Mode. */ command access(invoke: administer) SetHolidaySchedule(SetHolidayScheduleRequest): DefaultSuccess = 17; + /** Get the holiday schedule for the specified index. */ command access(invoke: administer) GetHolidaySchedule(GetHolidayScheduleRequest): GetHolidayScheduleResponse = 18; + /** Clears the holiday schedule or all holiday schedules. */ command access(invoke: administer) ClearHolidaySchedule(ClearHolidayScheduleRequest): DefaultSuccess = 19; + /** Set User into the lock. */ timed command access(invoke: administer) SetUser(SetUserRequest): DefaultSuccess = 26; + /** Retrieve User. */ command access(invoke: administer) GetUser(GetUserRequest): GetUserResponse = 27; + /** Clears a User or all Users. */ timed command access(invoke: administer) ClearUser(ClearUserRequest): DefaultSuccess = 29; + /** Set a credential (e.g. PIN, RFID, Fingerprint, etc.) into the lock for a new user, existing user, or ProgrammingUser. */ timed command access(invoke: administer) SetCredential(SetCredentialRequest): SetCredentialResponse = 34; + /** Retrieve the status of a particular credential (e.g. PIN, RFID, Fingerprint, etc.) by index. */ command access(invoke: administer) GetCredentialStatus(GetCredentialStatusRequest): GetCredentialStatusResponse = 36; + /** Clear one, one type, or all credentials except ProgrammingPIN credential. */ timed command access(invoke: administer) ClearCredential(ClearCredentialRequest): DefaultSuccess = 38; } +/** Provides an interface for controlling and adjusting automatic window coverings. */ client cluster WindowCovering = 258 { enum EndProductType : ENUM8 { kRollerShade = 0; @@ -3046,15 +3203,23 @@ client cluster WindowCovering = 258 { Percent100ths tiltPercent100thsValue = 0; } + /** Moves window covering to InstalledOpenLimitLift and InstalledOpenLimitTilt */ command UpOrOpen(): DefaultSuccess = 0; + /** Moves window covering to InstalledClosedLimitLift and InstalledCloseLimitTilt */ command DownOrClose(): DefaultSuccess = 1; + /** Stop any adjusting of window covering */ command StopMotion(): DefaultSuccess = 2; + /** Go to lift value specified */ command GoToLiftValue(GoToLiftValueRequest): DefaultSuccess = 4; + /** Go to lift percentage specified */ command GoToLiftPercentage(GoToLiftPercentageRequest): DefaultSuccess = 5; + /** Go to tilt value specified */ command GoToTiltValue(GoToTiltValueRequest): DefaultSuccess = 7; + /** Go to tilt percentage specified */ command GoToTiltPercentage(GoToTiltPercentageRequest): DefaultSuccess = 8; } +/** This cluster provides control of a barrier (garage door). */ client cluster BarrierControl = 259 { readonly attribute enum8 barrierMovingState = 1; readonly attribute bitmap16 barrierSafetyStatus = 2; @@ -3077,10 +3242,13 @@ client cluster BarrierControl = 259 { INT8U percentOpen = 0; } + /** Command to instruct a barrier to go to a percent open state. */ command BarrierControlGoToPercent(BarrierControlGoToPercentRequest): DefaultSuccess = 0; + /** Command that instructs the barrier to stop moving. */ command BarrierControlStop(): DefaultSuccess = 1; } +/** An interface for configuring and controlling pumps. */ client cluster PumpConfigurationAndControl = 512 { enum ControlModeEnum : ENUM8 { kConstantSpeed = 0; @@ -3202,6 +3370,7 @@ client cluster PumpConfigurationAndControl = 512 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring and controlling the functionality of a thermostat. */ client cluster Thermostat = 513 { enum SetpointAdjustMode : ENUM8 { kHeat = 0; @@ -3347,12 +3516,17 @@ client cluster Thermostat = 513 { ModeForSequence modeToReturn = 1; } + /** Command description for SetpointRaiseLower */ command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0; + /** Command description for SetWeeklySchedule */ command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1; + /** Command description for GetWeeklySchedule */ command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2; + /** The Clear Weekly Schedule command is used to clear the weekly schedule. */ command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3; } +/** An interface for controlling a fan in a heating/cooling system. */ client cluster FanControl = 514 { enum FanModeSequenceType : ENUM8 { kOffLowMedHigh = 0; @@ -3415,6 +3589,7 @@ client cluster FanControl = 514 { readonly attribute int16u clusterRevision = 65533; } +/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ client cluster ThermostatUserInterfaceConfiguration = 516 { attribute enum8 temperatureDisplayMode = 0; attribute access(write: manage) enum8 keypadLockout = 1; @@ -3427,6 +3602,7 @@ client cluster ThermostatUserInterfaceConfiguration = 516 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for controlling the color properties of a color-capable light. */ client cluster ColorControl = 768 { enum ColorLoopAction : ENUM8 { kDeactivate = 0; @@ -3704,27 +3880,47 @@ client cluster ColorControl = 768 { BITMAP8 optionsOverride = 6; } + /** Move to specified hue. */ command MoveToHue(MoveToHueRequest): DefaultSuccess = 0; + /** Move hue up or down at specified rate. */ command MoveHue(MoveHueRequest): DefaultSuccess = 1; + /** Step hue up or down by specified size at specified rate. */ command StepHue(StepHueRequest): DefaultSuccess = 2; + /** Move to specified saturation. */ command MoveToSaturation(MoveToSaturationRequest): DefaultSuccess = 3; + /** Move saturation up or down at specified rate. */ command MoveSaturation(MoveSaturationRequest): DefaultSuccess = 4; + /** Step saturation up or down by specified size at specified rate. */ command StepSaturation(StepSaturationRequest): DefaultSuccess = 5; + /** Move to hue and saturation. */ command MoveToHueAndSaturation(MoveToHueAndSaturationRequest): DefaultSuccess = 6; + /** Move to specified color. */ command MoveToColor(MoveToColorRequest): DefaultSuccess = 7; + /** Moves the color. */ command MoveColor(MoveColorRequest): DefaultSuccess = 8; + /** Steps the lighting to a specific color. */ command StepColor(StepColorRequest): DefaultSuccess = 9; + /** Move to a specific color temperature. */ command MoveToColorTemperature(MoveToColorTemperatureRequest): DefaultSuccess = 10; + /** Command description for EnhancedMoveToHue */ command EnhancedMoveToHue(EnhancedMoveToHueRequest): DefaultSuccess = 64; + /** Command description for EnhancedMoveHue */ command EnhancedMoveHue(EnhancedMoveHueRequest): DefaultSuccess = 65; + /** Command description for EnhancedStepHue */ command EnhancedStepHue(EnhancedStepHueRequest): DefaultSuccess = 66; + /** Command description for EnhancedMoveToHueAndSaturation */ command EnhancedMoveToHueAndSaturation(EnhancedMoveToHueAndSaturationRequest): DefaultSuccess = 67; + /** Command description for ColorLoopSet */ command ColorLoopSet(ColorLoopSetRequest): DefaultSuccess = 68; + /** Command description for StopMoveStep */ command StopMoveStep(StopMoveStepRequest): DefaultSuccess = 71; + /** Command description for MoveColorTemperature */ command MoveColorTemperature(MoveColorTemperatureRequest): DefaultSuccess = 75; + /** Command description for StepColorTemperature */ command StepColorTemperature(StepColorTemperatureRequest): DefaultSuccess = 76; } +/** Attributes and commands for configuring a lighting ballast. */ client cluster BallastConfiguration = 769 { readonly attribute int8u physicalMinLevel = 0; readonly attribute int8u physicalMaxLevel = 1; @@ -3748,6 +3944,7 @@ client cluster BallastConfiguration = 769 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ client cluster IlluminanceMeasurement = 1024 { enum LightSensorType : ENUM8 { kPhotodiode = 0; @@ -3767,6 +3964,7 @@ client cluster IlluminanceMeasurement = 1024 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ client cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; @@ -3780,6 +3978,7 @@ client cluster TemperatureMeasurement = 1026 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ client cluster PressureMeasurement = 1027 { bitmap PressureMeasurementFeature : BITMAP32 { kExtended = 0x1; @@ -3802,6 +4001,7 @@ client cluster PressureMeasurement = 1027 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ client cluster FlowMeasurement = 1028 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -3815,6 +4015,7 @@ client cluster FlowMeasurement = 1028 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ client cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; @@ -3828,6 +4029,7 @@ client cluster RelativeHumidityMeasurement = 1029 { readonly attribute int16u clusterRevision = 65533; } +/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ client cluster OccupancySensing = 1030 { enum OccupancySensorTypeEnum : ENUM8 { kPir = 0; @@ -3866,6 +4068,7 @@ client cluster OccupancySensing = 1030 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */ client cluster WakeOnLan = 1283 { readonly attribute char_string<32> MACAddress = 0; readonly attribute command_id generatedCommandList[] = 65528; @@ -3876,6 +4079,7 @@ client cluster WakeOnLan = 1283 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides an interface for controlling the current Channel on a device. */ client cluster Channel = 1284 { enum ChannelStatusEnum : ENUM8 { kSuccess = 0; @@ -3935,11 +4139,15 @@ client cluster Channel = 1284 { INT16U count = 0; } + /** Change the channel on the media player to the channel case-insensitive exact matching the value passed as an argument. */ command ChangeChannel(ChangeChannelRequest): ChangeChannelResponse = 0; + /** Change the channel on the media plaeyer to the channel with the given Number in the ChannelList attribute. */ command ChangeChannelByNumber(ChangeChannelByNumberRequest): DefaultSuccess = 2; + /** This command provides channel up and channel down functionality, but allows channel index jumps of size Count. When the value of the increase or decrease is larger than the number of channels remaining in the given direction, then the behavior SHALL be to return to the beginning (or end) of the channel list and continue. For example, if the current channel is at index 0 and count value of -1 is given, then the current channel should change to the last channel. */ command SkipChannel(SkipChannelRequest): DefaultSuccess = 3; } +/** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ client cluster TargetNavigator = 1285 { enum TargetNavigatorStatusEnum : ENUM8 { kSuccess = 0; @@ -3971,9 +4179,11 @@ client cluster TargetNavigator = 1285 { optional CHAR_STRING data = 1; } + /** Upon receipt, this SHALL navigation the UX to the target identified. */ command NavigateTarget(NavigateTargetRequest): NavigateTargetResponse = 0; } +/** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ client cluster MediaPlayback = 1286 { enum MediaPlaybackStatusEnum : ENUM8 { kSuccess = 0; @@ -4032,19 +4242,31 @@ client cluster MediaPlayback = 1286 { INT64U position = 0; } + /** Upon receipt, this SHALL play media. */ command Play(): PlaybackResponse = 0; + /** Upon receipt, this SHALL pause media. */ command Pause(): PlaybackResponse = 1; + /** Upon receipt, this SHALL stop media. User experience is context-specific. This will often navigate the user back to the location where media was originally launched. */ command Stop(): PlaybackResponse = 2; + /** Upon receipt, this SHALL Start Over with the current media playback item. */ command StartOver(): PlaybackResponse = 3; + /** Upon receipt, this SHALL cause the handler to be invoked for "Previous". User experience is context-specific. This will often Go back to the previous media playback item. */ command Previous(): PlaybackResponse = 4; + /** Upon receipt, this SHALL cause the handler to be invoked for "Next". User experience is context-specific. This will often Go forward to the next media playback item. */ command Next(): PlaybackResponse = 5; + /** Upon receipt, this SHALL Rewind through media. Different Rewind speeds can be used on the TV based upon the number of sequential calls to this function. This is to avoid needing to define every speed now (multiple fast, slow motion, etc). */ command Rewind(): PlaybackResponse = 6; + /** Upon receipt, this SHALL Advance through media. Different FF speeds can be used on the TV based upon the number of sequential calls to this function. This is to avoid needing to define every speed now (multiple fast, slow motion, etc). */ command FastForward(): PlaybackResponse = 7; + /** Upon receipt, this SHALL Skip forward in the media by the given number of seconds, using the data as follows: */ command SkipForward(SkipForwardRequest): PlaybackResponse = 8; + /** Upon receipt, this SHALL Skip backward in the media by the given number of seconds, using the data as follows: */ command SkipBackward(SkipBackwardRequest): PlaybackResponse = 9; + /** Upon receipt, this SHALL Skip backward in the media by the given number of seconds, using the data as follows: */ command Seek(SeekRequest): PlaybackResponse = 11; } +/** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ client cluster MediaInput = 1287 { enum InputTypeEnum : ENUM8 { kInternal = 0; @@ -4090,12 +4312,17 @@ client cluster MediaInput = 1287 { CHAR_STRING name = 1; } + /** Upon receipt, this SHALL change the input on the media device to the input at a specific index in the Input List. */ command SelectInput(SelectInputRequest): DefaultSuccess = 0; + /** Upon receipt, this SHALL display the active status of the input list on screen. */ command ShowInputStatus(): DefaultSuccess = 1; + /** Upon receipt, this SHALL hide the input list from the screen. */ command HideInputStatus(): DefaultSuccess = 2; + /** Upon receipt, this SHALL rename the input at a specific index in the Input List. Updates to the input name SHALL appear in the TV settings menus. */ command RenameInput(RenameInputRequest): DefaultSuccess = 3; } +/** This cluster provides an interface for managing low power mode on a device. */ client cluster LowPower = 1288 { readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -4104,9 +4331,11 @@ client cluster LowPower = 1288 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** This command shall put the device into low power mode. */ command Sleep(): DefaultSuccess = 0; } +/** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ client cluster KeypadInput = 1289 { enum CecKeyCode : ENUM8 { kSelect = 0; @@ -4224,9 +4453,11 @@ client cluster KeypadInput = 1289 { KeypadInputStatusEnum status = 0; } + /** Upon receipt, this SHALL process a keycode as input to the media device. */ command SendKey(SendKeyRequest): SendKeyResponse = 0; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ContentLauncher = 1290 { enum ContentLaunchStatusEnum : ENUM8 { kSuccess = 0; @@ -4328,10 +4559,13 @@ client cluster ContentLauncher = 1290 { optional CHAR_STRING data = 1; } + /** Upon receipt, this SHALL launch the specified content with optional search criteria. */ command LaunchContent(LaunchContentRequest): LauncherResponse = 0; + /** Upon receipt, this SHALL launch content from the specified URL. */ command LaunchURL(LaunchURLRequest): LauncherResponse = 1; } +/** This cluster provides an interface for controlling the Output on a media device such as a TV. */ client cluster AudioOutput = 1291 { enum OutputTypeEnum : ENUM8 { kHdmi = 0; @@ -4370,10 +4604,13 @@ client cluster AudioOutput = 1291 { CHAR_STRING name = 1; } + /** Upon receipt, this SHALL change the output on the media device to the output at a specific index in the Output List. */ command SelectOutput(SelectOutputRequest): DefaultSuccess = 0; + /** Upon receipt, this SHALL rename the output at a specific index in the Output List. Updates to the output name SHALL appear in the TV settings menus. */ command RenameOutput(RenameOutputRequest): DefaultSuccess = 1; } +/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ApplicationLauncher = 1292 { enum ApplicationLauncherStatusEnum : ENUM8 { kSuccess = 0; @@ -4422,11 +4659,15 @@ client cluster ApplicationLauncher = 1292 { optional OCTET_STRING data = 1; } + /** Upon receipt, this SHALL launch the specified app with optional data. The TV Device SHALL launch and bring to foreground the identified application in the command if the application is not already launched and in foreground. The TV Device SHALL update state attribute on the Application Basic cluster of the Endpoint corresponding to the launched application. This command returns a Launch Response. */ command LaunchApp(LaunchAppRequest): LauncherResponse = 0; + /** Upon receipt on a Video Player endpoint this SHALL stop the specified application if it is running. */ command StopApp(StopAppRequest): LauncherResponse = 1; + /** Upon receipt on a Video Player endpoint this SHALL hide the specified application if it is running and visible. */ command HideApp(HideAppRequest): LauncherResponse = 2; } +/** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ client cluster ApplicationBasic = 1293 { enum ApplicationStatusEnum : ENUM8 { kStopped = 0; @@ -4456,6 +4697,7 @@ client cluster ApplicationBasic = 1293 { readonly attribute int16u clusterRevision = 65533; } +/** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ client cluster AccountLogin = 1294 { readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -4477,11 +4719,15 @@ client cluster AccountLogin = 1294 { CHAR_STRING setupPIN = 1; } + /** Upon receipt, the Content App checks if the account associated with the client Temp Account Identifier Rotating ID is the same acount that is active on the given Content App. If the accounts are the same, then the Content App includes the Setup PIN in the GetSetupPIN Response. */ timed command GetSetupPIN(GetSetupPINRequest): GetSetupPINResponse = 0; + /** Upon receipt, the Content App checks if the account associated with the client’s Temp Account Identifier (Rotating ID) has a current active Setup PIN with the given value. If the Setup PIN is valid for the user account associated with the Temp Account Identifier, then the Content App MAY make that user account active. */ timed command Login(LoginRequest): DefaultSuccess = 2; + /** The purpose of this command is to instruct the Content App to clear the current user account. This command SHOULD be used by clients of a Content App to indicate the end of a user session. */ timed command Logout(): DefaultSuccess = 3; } +/** Attributes related to the electrical properties of a device. This cluster is used by power outlets and other devices that need to provide instantaneous data as opposed to metrology data which should be retrieved from the metering cluster.. */ client cluster ElectricalMeasurement = 2820 { readonly attribute bitmap32 measurementType = 0; readonly attribute int16s dcVoltage = 256; @@ -4640,10 +4886,13 @@ client cluster ElectricalMeasurement = 2820 { ENUM8 numberOfIntervals = 2; } + /** A function which retrieves the power profiling information from the electrical measurement server. */ command GetProfileInfoCommand(): DefaultSuccess = 0; + /** A function which retrieves an electricity measurement profile from the electricity measurement server for a specific attribute Id requested. */ command GetMeasurementProfileCommand(GetMeasurementProfileCommandRequest): DefaultSuccess = 1; } +/** Client Monitoring allows for ensuring that listed clients meet the required monitoring conditions on the server. */ client cluster ClientMonitoring = 4166 { fabric_scoped struct MonitoringRegistration { node_id clientNodeId = 1; @@ -4672,11 +4921,15 @@ client cluster ClientMonitoring = 4166 { INT64U ICid = 1; } + /** Register a client to the end device */ command access(invoke: manage) RegisterClientMonitoring(RegisterClientMonitoringRequest): DefaultSuccess = 0; + /** Unregister a client from an end device */ command access(invoke: manage) UnregisterClientMonitoring(UnregisterClientMonitoringRequest): DefaultSuccess = 1; + /** Request the end device to stay in Active Mode for an additional ActiveModeThreshold */ command access(invoke: manage) StayAwakeRequest(): DefaultSuccess = 2; } +/** The Test Cluster is meant to validate the generated code */ client cluster UnitTesting = 4294048773 { enum SimpleEnum : ENUM8 { kUnspecified = 0; @@ -5055,27 +5308,70 @@ client cluster UnitTesting = 4294048773 { INT8U arg1 = 0; } + /** Simple command without any parameters and without a specific response */ command Test(): DefaultSuccess = 0; + /** Simple command without any parameters and without a specific response not handled by the server */ command TestNotHandled(): DefaultSuccess = 1; + /** Simple command without any parameters and with a specific response */ command TestSpecific(): TestSpecificResponse = 2; + /** Simple command that should not be added to the server. */ command TestUnknownCommand(): DefaultSuccess = 3; + /** Command that takes two arguments and returns their sum. */ command TestAddArguments(TestAddArgumentsRequest): TestAddArgumentsResponse = 4; + /** Command that takes an argument which is bool */ command TestSimpleArgumentRequest(TestSimpleArgumentRequestRequest): TestSimpleArgumentResponse = 5; + /** Command that takes various arguments that are arrays, including an array of structs which have a list member. */ command TestStructArrayArgumentRequest(TestStructArrayArgumentRequestRequest): TestStructArrayArgumentResponse = 6; + /** Command that takes an argument which is struct. The response echoes the + 'b' field of the single arg. */ command TestStructArgumentRequest(TestStructArgumentRequestRequest): BooleanResponse = 7; + /** Command that takes an argument which is nested struct. The response + echoes the 'b' field of ar1.c. */ command TestNestedStructArgumentRequest(TestNestedStructArgumentRequestRequest): BooleanResponse = 8; + /** Command that takes an argument which is a list of structs. The response + returns false if there is some struct in the list whose 'b' field is + false, and true otherwise (including if the list is empty). */ command TestListStructArgumentRequest(TestListStructArgumentRequestRequest): BooleanResponse = 9; + /** Command that takes an argument which is a list of INT8U. The response + returns false if the list contains a 0 in it, true otherwise (including + if the list is empty). */ command TestListInt8UArgumentRequest(TestListInt8UArgumentRequestRequest): BooleanResponse = 10; + /** Command that takes an argument which is a Nested Struct List. The + response returns false if there is some struct in arg1 (either directly + in arg1.c or in the arg1.d list) whose 'b' field is false, and true + otherwise. */ command TestNestedStructListArgumentRequest(TestNestedStructListArgumentRequestRequest): BooleanResponse = 11; + /** Command that takes an argument which is a list of Nested Struct List. + The response returns false if there is some struct in arg1 (either + directly in as the 'c' field of an entry 'd' list of an entry) whose 'b' + field is false, and true otherwise (including if the list is empty). */ command TestListNestedStructListArgumentRequest(TestListNestedStructListArgumentRequestRequest): BooleanResponse = 12; + /** Command that takes an argument which is a list of INT8U and expects a + response that reverses the list. */ command TestListInt8UReverseRequest(TestListInt8UReverseRequestRequest): TestListInt8UReverseResponse = 13; + /** Command that sends a vendor id and an enum. The server is expected to + echo them back. */ command TestEnumsRequest(TestEnumsRequestRequest): TestEnumsResponse = 14; + /** Command that takes an argument which is nullable and optional. The + response returns a boolean indicating whether the argument was present, + if that's true a boolean indicating whether the argument was null, and + if that' false the argument it received. */ command TestNullableOptionalRequest(TestNullableOptionalRequestRequest): TestNullableOptionalResponse = 15; + /** Command that takes various arguments which can be nullable and/or optional. The + response returns information about which things were received and what + their state was. */ command TestComplexNullableOptionalRequest(TestComplexNullableOptionalRequestRequest): TestComplexNullableOptionalResponse = 16; + /** Command that takes an argument which is a struct. The response echoes + the struct back. */ command SimpleStructEchoRequest(SimpleStructEchoRequestRequest): SimpleStructResponse = 17; + /** Command that just responds with a success status if the timed invoke + conditions are met. */ timed command TimedInvokeRequest(): DefaultSuccess = 18; + /** Command that takes an optional argument which is bool. It responds with a success value if the optional is set to any value. */ command TestSimpleOptionalArgumentRequest(TestSimpleOptionalArgumentRequestRequest): DefaultSuccess = 19; + /** Command that takes identical arguments to the fields of the TestEvent and logs the TestEvent to the buffer. Command returns an event ID as the response. */ command TestEmitTestEventRequest(TestEmitTestEventRequestRequest): TestEmitTestEventResponse = 20; + /** Command that takes identical arguments to the fields of the TestFabricScopedEvent and logs the TestFabricScopedEvent to the buffer. Command returns an event ID as the response. */ command TestEmitTestFabricScopedEventRequest(TestEmitTestFabricScopedEventRequestRequest): TestEmitTestFabricScopedEventResponse = 21; }