From 9f4cbc62ce8415a81b4904cc768b68295f7db246 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Tue, 11 Apr 2023 14:06:50 -0400 Subject: [PATCH] Add optionality to attributes in matter IDL (#26002) * Add optionality to attributes * Update global check * zap regen all * Fix inverted condition * zap regen all * zap regen all * Update check for global logic * Do not filter out optional values in java for delegates and callbacks - use global callbacks * Make eventList not optional for now * Remove extra newline in idl zapt --------- Co-authored-by: Andrei Litvin --- .../all-clusters-app.matter | 8 +- .../bridge-common/bridge-app.matter | 2 +- ...p_rootnode_dimmablelight_bCwGYSDpoe.matter | 18 +- .../rootnode_dimmablelight_bCwGYSDpoe.matter | 18 +- ...tnode_heatingcoolingunit_ncdGai1E5a.matter | 92 +- ...ootnode_onofflightswitch_FsPlMr090Q.matter | 8 +- .../rootnode_thermostat_bm3fb8dhYi.matter | 36 +- .../bridge-common/bridge-app.matter | 2 +- .../light-switch-app.matter | 104 +- .../ota-provider-app.matter | 2 +- .../placeholder/linux/apps/app1/config.matter | 34 +- .../placeholder/linux/apps/app2/config.matter | 32 +- examples/pump-app/pump-common/pump-app.matter | 18 +- .../pump-controller-app.matter | 56 +- examples/tv-app/tv-common/tv-app.matter | 4 +- .../tv-casting-common/tv-casting-app.matter | 68 +- .../matter_idl/generators/java/__init__.py | 3 - .../partials/idl/attribute_definition.zapt | 9 +- .../templates/app/MatterIDL.zapt | 9 +- .../data_model/controller-clusters.matter | 1006 ++++++++--------- 20 files changed, 766 insertions(+), 763 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 22ed2439f87039..44a9d73de933bf 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 @@ -266,10 +266,10 @@ client cluster OnOff = 6 { } readonly attribute boolean onOff = 0; - readonly attribute boolean globalSceneControl = 16384; - attribute int16u onTime = 16385; - attribute int16u offWaitTime = 16386; - attribute access(write: manage) nullable OnOffStartUpOnOff startUpOnOff = 16387; + readonly attribute optional boolean globalSceneControl = 16384; + attribute optional int16u onTime = 16385; + attribute optional int16u offWaitTime = 16386; + attribute access(write: manage) optional nullable OnOffStartUpOnOff startUpOnOff = 16387; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter index e3ee71f576c660..c5f6f776539515 100644 --- a/examples/bridge-app/bridge-common/bridge-app.matter +++ b/examples/bridge-app/bridge-common/bridge-app.matter @@ -298,7 +298,7 @@ client cluster AccessControl = 31 { } attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0; - attribute access(read: administer, write: administer) AccessControlExtensionStruct extension[] = 1; + attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1; readonly attribute int16u subjectsPerAccessControlEntry = 2; readonly attribute int16u targetsPerAccessControlEntry = 3; readonly attribute int16u accessControlEntriesPerFabric = 4; diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter index e742712b3cc339..53052304d1a966 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter @@ -1440,15 +1440,15 @@ client cluster OccupancySensing = 1030 { readonly attribute OccupancyBitmap occupancy = 0; readonly attribute OccupancySensorTypeEnum occupancySensorType = 1; readonly attribute OccupancySensorTypeBitmap occupancySensorTypeBitmap = 2; - attribute access(write: manage) int16u PIROccupiedToUnoccupiedDelay = 16; - attribute access(write: manage) int16u PIRUnoccupiedToOccupiedDelay = 17; - attribute access(write: manage) int8u PIRUnoccupiedToOccupiedThreshold = 18; - attribute access(write: manage) int16u ultrasonicOccupiedToUnoccupiedDelay = 32; - attribute access(write: manage) int16u ultrasonicUnoccupiedToOccupiedDelay = 33; - attribute access(write: manage) int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; - attribute access(write: manage) int16u physicalContactOccupiedToUnoccupiedDelay = 48; - attribute access(write: manage) int16u physicalContactUnoccupiedToOccupiedDelay = 49; - attribute access(write: manage) int8u physicalContactUnoccupiedToOccupiedThreshold = 50; + attribute access(write: manage) optional int16u PIROccupiedToUnoccupiedDelay = 16; + attribute access(write: manage) optional int16u PIRUnoccupiedToOccupiedDelay = 17; + attribute access(write: manage) optional int8u PIRUnoccupiedToOccupiedThreshold = 18; + attribute access(write: manage) optional int16u ultrasonicOccupiedToUnoccupiedDelay = 32; + attribute access(write: manage) optional int16u ultrasonicUnoccupiedToOccupiedDelay = 33; + attribute access(write: manage) optional int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; + attribute access(write: manage) optional int16u physicalContactOccupiedToUnoccupiedDelay = 48; + attribute access(write: manage) optional int16u physicalContactUnoccupiedToOccupiedDelay = 49; + attribute access(write: manage) optional int8u physicalContactUnoccupiedToOccupiedThreshold = 50; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter index cf95bc39d39043..73d480c465be44 100644 --- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter @@ -1304,15 +1304,15 @@ client cluster OccupancySensing = 1030 { readonly attribute OccupancyBitmap occupancy = 0; readonly attribute OccupancySensorTypeEnum occupancySensorType = 1; readonly attribute OccupancySensorTypeBitmap occupancySensorTypeBitmap = 2; - attribute access(write: manage) int16u PIROccupiedToUnoccupiedDelay = 16; - attribute access(write: manage) int16u PIRUnoccupiedToOccupiedDelay = 17; - attribute access(write: manage) int8u PIRUnoccupiedToOccupiedThreshold = 18; - attribute access(write: manage) int16u ultrasonicOccupiedToUnoccupiedDelay = 32; - attribute access(write: manage) int16u ultrasonicUnoccupiedToOccupiedDelay = 33; - attribute access(write: manage) int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; - attribute access(write: manage) int16u physicalContactOccupiedToUnoccupiedDelay = 48; - attribute access(write: manage) int16u physicalContactUnoccupiedToOccupiedDelay = 49; - attribute access(write: manage) int8u physicalContactUnoccupiedToOccupiedThreshold = 50; + attribute access(write: manage) optional int16u PIROccupiedToUnoccupiedDelay = 16; + attribute access(write: manage) optional int16u PIRUnoccupiedToOccupiedDelay = 17; + attribute access(write: manage) optional int8u PIRUnoccupiedToOccupiedThreshold = 18; + attribute access(write: manage) optional int16u ultrasonicOccupiedToUnoccupiedDelay = 32; + attribute access(write: manage) optional int16u ultrasonicUnoccupiedToOccupiedDelay = 33; + attribute access(write: manage) optional int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; + attribute access(write: manage) optional int16u physicalContactOccupiedToUnoccupiedDelay = 48; + attribute access(write: manage) optional int16u physicalContactUnoccupiedToOccupiedDelay = 49; + attribute access(write: manage) optional int8u physicalContactUnoccupiedToOccupiedThreshold = 50; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter index 8ffe51f5faa9dc..4a768a2adeeb62 100644 --- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter +++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter @@ -1342,54 +1342,54 @@ client cluster Thermostat = 513 { } readonly attribute nullable int16s localTemperature = 0; - readonly attribute nullable int16s outdoorTemperature = 1; - readonly attribute bitmap8 occupancy = 2; - readonly attribute int16s absMinHeatSetpointLimit = 3; - readonly attribute int16s absMaxHeatSetpointLimit = 4; - readonly attribute int16s absMinCoolSetpointLimit = 5; - readonly attribute int16s absMaxCoolSetpointLimit = 6; - readonly attribute int8u PICoolingDemand = 7; - readonly attribute int8u PIHeatingDemand = 8; - attribute access(write: manage) bitmap8 HVACSystemTypeConfiguration = 9; - attribute access(write: manage) int8s localTemperatureCalibration = 16; - attribute int16s occupiedCoolingSetpoint = 17; - attribute int16s occupiedHeatingSetpoint = 18; - attribute int16s unoccupiedCoolingSetpoint = 19; - attribute int16s unoccupiedHeatingSetpoint = 20; - attribute access(write: manage) int16s minHeatSetpointLimit = 21; - attribute access(write: manage) int16s maxHeatSetpointLimit = 22; - attribute access(write: manage) int16s minCoolSetpointLimit = 23; - attribute access(write: manage) int16s maxCoolSetpointLimit = 24; - attribute access(write: manage) int8s minSetpointDeadBand = 25; - attribute access(write: manage) bitmap8 remoteSensing = 26; + readonly attribute optional nullable int16s outdoorTemperature = 1; + readonly attribute optional bitmap8 occupancy = 2; + readonly attribute optional int16s absMinHeatSetpointLimit = 3; + readonly attribute optional int16s absMaxHeatSetpointLimit = 4; + readonly attribute optional int16s absMinCoolSetpointLimit = 5; + readonly attribute optional int16s absMaxCoolSetpointLimit = 6; + readonly attribute optional int8u PICoolingDemand = 7; + readonly attribute optional int8u PIHeatingDemand = 8; + attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9; + attribute access(write: manage) optional int8s localTemperatureCalibration = 16; + attribute optional int16s occupiedCoolingSetpoint = 17; + attribute optional int16s occupiedHeatingSetpoint = 18; + attribute optional int16s unoccupiedCoolingSetpoint = 19; + attribute optional int16s unoccupiedHeatingSetpoint = 20; + attribute access(write: manage) optional int16s minHeatSetpointLimit = 21; + attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22; + attribute access(write: manage) optional int16s minCoolSetpointLimit = 23; + attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24; + attribute access(write: manage) optional int8s minSetpointDeadBand = 25; + attribute access(write: manage) optional bitmap8 remoteSensing = 26; attribute access(write: manage) ThermostatControlSequence controlSequenceOfOperation = 27; attribute access(write: manage) enum8 systemMode = 28; - readonly attribute enum8 thermostatRunningMode = 30; - readonly attribute enum8 startOfWeek = 32; - readonly attribute int8u numberOfWeeklyTransitions = 33; - readonly attribute int8u numberOfDailyTransitions = 34; - attribute access(write: manage) enum8 temperatureSetpointHold = 35; - attribute access(write: manage) nullable int16u temperatureSetpointHoldDuration = 36; - attribute access(write: manage) bitmap8 thermostatProgrammingOperationMode = 37; - readonly attribute bitmap16 thermostatRunningState = 41; - readonly attribute enum8 setpointChangeSource = 48; - readonly attribute nullable int16s setpointChangeAmount = 49; - readonly attribute epoch_s setpointChangeSourceTimestamp = 50; - attribute access(write: manage) nullable int8u occupiedSetback = 52; - readonly attribute nullable int8u occupiedSetbackMin = 53; - readonly attribute nullable int8u occupiedSetbackMax = 54; - attribute access(write: manage) nullable int8u unoccupiedSetback = 55; - readonly attribute nullable int8u unoccupiedSetbackMin = 56; - readonly attribute nullable int8u unoccupiedSetbackMax = 57; - attribute access(write: manage) int8u emergencyHeatDelta = 58; - attribute access(write: manage) enum8 ACType = 64; - attribute access(write: manage) int16u ACCapacity = 65; - attribute access(write: manage) enum8 ACRefrigerantType = 66; - attribute access(write: manage) enum8 ACCompressorType = 67; - attribute access(write: manage) bitmap32 ACErrorCode = 68; - attribute access(write: manage) enum8 ACLouverPosition = 69; - readonly attribute nullable int16s ACCoilTemperature = 70; - attribute access(write: manage) enum8 ACCapacityformat = 71; + readonly attribute optional enum8 thermostatRunningMode = 30; + readonly attribute optional enum8 startOfWeek = 32; + readonly attribute optional int8u numberOfWeeklyTransitions = 33; + readonly attribute optional int8u numberOfDailyTransitions = 34; + attribute access(write: manage) optional enum8 temperatureSetpointHold = 35; + attribute access(write: manage) optional nullable int16u temperatureSetpointHoldDuration = 36; + attribute access(write: manage) optional bitmap8 thermostatProgrammingOperationMode = 37; + readonly attribute optional bitmap16 thermostatRunningState = 41; + readonly attribute optional enum8 setpointChangeSource = 48; + readonly attribute optional nullable int16s setpointChangeAmount = 49; + readonly attribute optional epoch_s setpointChangeSourceTimestamp = 50; + attribute access(write: manage) optional nullable int8u occupiedSetback = 52; + readonly attribute optional nullable int8u occupiedSetbackMin = 53; + readonly attribute optional nullable int8u occupiedSetbackMax = 54; + attribute access(write: manage) optional nullable int8u unoccupiedSetback = 55; + readonly attribute optional nullable int8u unoccupiedSetbackMin = 56; + readonly attribute optional nullable int8u unoccupiedSetbackMax = 57; + attribute access(write: manage) optional int8u emergencyHeatDelta = 58; + attribute access(write: manage) optional enum8 ACType = 64; + attribute access(write: manage) optional int16u ACCapacity = 65; + attribute access(write: manage) optional enum8 ACRefrigerantType = 66; + attribute access(write: manage) optional enum8 ACCompressorType = 67; + attribute access(write: manage) optional bitmap32 ACErrorCode = 68; + attribute access(write: manage) optional enum8 ACLouverPosition = 69; + readonly attribute optional nullable int16s ACCoilTemperature = 70; + attribute access(write: manage) optional enum8 ACCapacityformat = 71; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter index 241092e2f71717..f863037c5acdbc 100644 --- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter +++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter @@ -138,10 +138,10 @@ client cluster OnOff = 6 { } readonly attribute boolean onOff = 0; - readonly attribute boolean globalSceneControl = 16384; - attribute int16u onTime = 16385; - attribute int16u offWaitTime = 16386; - attribute access(write: manage) nullable OnOffStartUpOnOff startUpOnOff = 16387; + readonly attribute optional boolean globalSceneControl = 16384; + attribute optional int16u onTime = 16385; + attribute optional int16u offWaitTime = 16386; + attribute access(write: manage) optional nullable OnOffStartUpOnOff startUpOnOff = 16387; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter index 9866cd0f31401a..ed59c723066774 100644 --- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter +++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter @@ -1283,13 +1283,13 @@ client cluster FanControl = 514 { attribute FanModeSequenceType fanModeSequence = 1; attribute nullable int8u percentSetting = 2; readonly attribute int8u percentCurrent = 3; - readonly attribute int8u speedMax = 4; - attribute nullable int8u speedSetting = 5; - readonly attribute int8u speedCurrent = 6; - readonly attribute bitmap8 rockSupport = 7; - attribute bitmap8 rockSetting = 8; - readonly attribute bitmap8 windSupport = 9; - attribute bitmap8 windSetting = 10; + readonly attribute optional int8u speedMax = 4; + attribute optional nullable int8u speedSetting = 5; + readonly attribute optional int8u speedCurrent = 6; + readonly attribute optional bitmap8 rockSupport = 7; + attribute optional bitmap8 rockSetting = 8; + readonly attribute optional bitmap8 windSupport = 9; + attribute optional bitmap8 windSetting = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1315,7 +1315,7 @@ client cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; readonly attribute nullable int16s maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1329,7 +1329,7 @@ client cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1360,15 +1360,15 @@ client cluster OccupancySensing = 1030 { readonly attribute OccupancyBitmap occupancy = 0; readonly attribute OccupancySensorTypeEnum occupancySensorType = 1; readonly attribute OccupancySensorTypeBitmap occupancySensorTypeBitmap = 2; - attribute access(write: manage) int16u PIROccupiedToUnoccupiedDelay = 16; - attribute access(write: manage) int16u PIRUnoccupiedToOccupiedDelay = 17; - attribute access(write: manage) int8u PIRUnoccupiedToOccupiedThreshold = 18; - attribute access(write: manage) int16u ultrasonicOccupiedToUnoccupiedDelay = 32; - attribute access(write: manage) int16u ultrasonicUnoccupiedToOccupiedDelay = 33; - attribute access(write: manage) int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; - attribute access(write: manage) int16u physicalContactOccupiedToUnoccupiedDelay = 48; - attribute access(write: manage) int16u physicalContactUnoccupiedToOccupiedDelay = 49; - attribute access(write: manage) int8u physicalContactUnoccupiedToOccupiedThreshold = 50; + attribute access(write: manage) optional int16u PIROccupiedToUnoccupiedDelay = 16; + attribute access(write: manage) optional int16u PIRUnoccupiedToOccupiedDelay = 17; + attribute access(write: manage) optional int8u PIRUnoccupiedToOccupiedThreshold = 18; + attribute access(write: manage) optional int16u ultrasonicOccupiedToUnoccupiedDelay = 32; + attribute access(write: manage) optional int16u ultrasonicUnoccupiedToOccupiedDelay = 33; + attribute access(write: manage) optional int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; + attribute access(write: manage) optional int16u physicalContactOccupiedToUnoccupiedDelay = 48; + attribute access(write: manage) optional int16u physicalContactUnoccupiedToOccupiedDelay = 49; + attribute access(write: manage) optional int8u physicalContactUnoccupiedToOccupiedThreshold = 50; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; diff --git a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter index 01a6e33e868002..6413f0f34d914b 100644 --- a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter +++ b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter @@ -298,7 +298,7 @@ client cluster AccessControl = 31 { } attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0; - attribute access(read: administer, write: administer) AccessControlExtensionStruct extension[] = 1; + attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1; readonly attribute int16u subjectsPerAccessControlEntry = 2; readonly attribute int16u targetsPerAccessControlEntry = 3; readonly attribute int16u accessControlEntriesPerFabric = 4; 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 f34688d755e63b..2a8f9eeb4749f2 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 @@ -190,7 +190,7 @@ client cluster Scenes = 5 { readonly attribute group_id currentGroup = 2; readonly attribute boolean sceneValid = 3; readonly attribute bitmap8 nameSupport = 4; - readonly attribute nullable node_id lastConfiguredBy = 5; + readonly attribute optional nullable node_id lastConfiguredBy = 5; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -370,10 +370,10 @@ client cluster OnOff = 6 { } readonly attribute boolean onOff = 0; - readonly attribute boolean globalSceneControl = 16384; - attribute int16u onTime = 16385; - attribute int16u offWaitTime = 16386; - attribute access(write: manage) nullable OnOffStartUpOnOff startUpOnOff = 16387; + readonly attribute optional boolean globalSceneControl = 16384; + attribute optional int16u onTime = 16385; + attribute optional int16u offWaitTime = 16386; + attribute access(write: manage) optional nullable OnOffStartUpOnOff startUpOnOff = 16387; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1798,58 +1798,58 @@ client cluster ColorControl = 768 { kUpdateStartHue = 0x8; } - readonly attribute int8u currentHue = 0; - readonly attribute int8u currentSaturation = 1; - readonly attribute int16u remainingTime = 2; - readonly attribute int16u currentX = 3; - readonly attribute int16u currentY = 4; - readonly attribute enum8 driftCompensation = 5; - readonly attribute char_string<254> compensationText = 6; - readonly attribute int16u colorTemperatureMireds = 7; + readonly attribute optional int8u currentHue = 0; + readonly attribute optional int8u currentSaturation = 1; + readonly attribute optional int16u remainingTime = 2; + readonly attribute optional int16u currentX = 3; + readonly attribute optional int16u currentY = 4; + readonly attribute optional enum8 driftCompensation = 5; + readonly attribute optional char_string<254> compensationText = 6; + readonly attribute optional int16u colorTemperatureMireds = 7; readonly attribute enum8 colorMode = 8; attribute bitmap8 options = 15; readonly attribute nullable int8u numberOfPrimaries = 16; - readonly attribute int16u primary1X = 17; - readonly attribute int16u primary1Y = 18; - readonly attribute nullable int8u primary1Intensity = 19; - readonly attribute int16u primary2X = 21; - readonly attribute int16u primary2Y = 22; - readonly attribute nullable int8u primary2Intensity = 23; - readonly attribute int16u primary3X = 25; - readonly attribute int16u primary3Y = 26; - readonly attribute nullable int8u primary3Intensity = 27; - readonly attribute int16u primary4X = 32; - readonly attribute int16u primary4Y = 33; - readonly attribute nullable int8u primary4Intensity = 34; - readonly attribute int16u primary5X = 36; - readonly attribute int16u primary5Y = 37; - readonly attribute nullable int8u primary5Intensity = 38; - readonly attribute int16u primary6X = 40; - readonly attribute int16u primary6Y = 41; - readonly attribute nullable int8u primary6Intensity = 42; - attribute access(write: manage) int16u whitePointX = 48; - attribute access(write: manage) int16u whitePointY = 49; - attribute access(write: manage) int16u colorPointRX = 50; - attribute access(write: manage) int16u colorPointRY = 51; - attribute access(write: manage) nullable int8u colorPointRIntensity = 52; - attribute access(write: manage) int16u colorPointGX = 54; - attribute access(write: manage) int16u colorPointGY = 55; - attribute access(write: manage) nullable int8u colorPointGIntensity = 56; - attribute access(write: manage) int16u colorPointBX = 58; - attribute access(write: manage) int16u colorPointBY = 59; - attribute access(write: manage) nullable int8u colorPointBIntensity = 60; - readonly attribute int16u enhancedCurrentHue = 16384; + readonly attribute optional int16u primary1X = 17; + readonly attribute optional int16u primary1Y = 18; + readonly attribute optional nullable int8u primary1Intensity = 19; + readonly attribute optional int16u primary2X = 21; + readonly attribute optional int16u primary2Y = 22; + readonly attribute optional nullable int8u primary2Intensity = 23; + readonly attribute optional int16u primary3X = 25; + readonly attribute optional int16u primary3Y = 26; + readonly attribute optional nullable int8u primary3Intensity = 27; + readonly attribute optional int16u primary4X = 32; + readonly attribute optional int16u primary4Y = 33; + readonly attribute optional nullable int8u primary4Intensity = 34; + readonly attribute optional int16u primary5X = 36; + readonly attribute optional int16u primary5Y = 37; + readonly attribute optional nullable int8u primary5Intensity = 38; + readonly attribute optional int16u primary6X = 40; + readonly attribute optional int16u primary6Y = 41; + readonly attribute optional nullable int8u primary6Intensity = 42; + attribute access(write: manage) optional int16u whitePointX = 48; + attribute access(write: manage) optional int16u whitePointY = 49; + attribute access(write: manage) optional int16u colorPointRX = 50; + attribute access(write: manage) optional int16u colorPointRY = 51; + attribute access(write: manage) optional nullable int8u colorPointRIntensity = 52; + attribute access(write: manage) optional int16u colorPointGX = 54; + attribute access(write: manage) optional int16u colorPointGY = 55; + attribute access(write: manage) optional nullable int8u colorPointGIntensity = 56; + attribute access(write: manage) optional int16u colorPointBX = 58; + attribute access(write: manage) optional int16u colorPointBY = 59; + attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60; + readonly attribute optional int16u enhancedCurrentHue = 16384; readonly attribute enum8 enhancedColorMode = 16385; - readonly attribute int8u colorLoopActive = 16386; - readonly attribute int8u colorLoopDirection = 16387; - readonly attribute int16u colorLoopTime = 16388; - readonly attribute int16u colorLoopStartEnhancedHue = 16389; - readonly attribute int16u colorLoopStoredEnhancedHue = 16390; + readonly attribute optional int8u colorLoopActive = 16386; + readonly attribute optional int8u colorLoopDirection = 16387; + readonly attribute optional int16u colorLoopTime = 16388; + readonly attribute optional int16u colorLoopStartEnhancedHue = 16389; + readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390; readonly attribute bitmap16 colorCapabilities = 16394; - readonly attribute int16u colorTempPhysicalMinMireds = 16395; - readonly attribute int16u colorTempPhysicalMaxMireds = 16396; - readonly attribute int16u coupleColorTempToLevelMinMireds = 16397; - attribute access(write: manage) nullable int16u startUpColorTemperatureMireds = 16400; + readonly attribute optional int16u colorTempPhysicalMinMireds = 16395; + readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396; + readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397; + attribute access(write: manage) optional nullable int16u startUpColorTemperatureMireds = 16400; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; 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 f5a55f78910ec9..3edbdc3a313251 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 @@ -86,7 +86,7 @@ client cluster AccessControl = 31 { } attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0; - attribute access(read: administer, write: administer) AccessControlExtensionStruct extension[] = 1; + attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1; readonly attribute int16u subjectsPerAccessControlEntry = 2; readonly attribute int16u targetsPerAccessControlEntry = 3; readonly attribute int16u accessControlEntriesPerFabric = 4; diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter index 15cf0d03e782e2..4c382a43a7f48a 100644 --- a/examples/placeholder/linux/apps/app1/config.matter +++ b/examples/placeholder/linux/apps/app1/config.matter @@ -266,10 +266,10 @@ client cluster OnOff = 6 { } readonly attribute boolean onOff = 0; - readonly attribute boolean globalSceneControl = 16384; - attribute int16u onTime = 16385; - attribute int16u offWaitTime = 16386; - attribute access(write: manage) nullable OnOffStartUpOnOff startUpOnOff = 16387; + readonly attribute optional boolean globalSceneControl = 16384; + attribute optional int16u onTime = 16385; + attribute optional int16u offWaitTime = 16386; + attribute access(write: manage) optional nullable OnOffStartUpOnOff startUpOnOff = 16387; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -767,7 +767,7 @@ client cluster UnitLocalization = 45 { kTemperatureUnit = 0x1; } - attribute TempUnitEnum temperatureUnit = 0; + attribute optional TempUnitEnum temperatureUnit = 0; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1617,7 +1617,7 @@ client cluster Switch = 59 { readonly attribute int8u numberOfPositions = 0; readonly attribute int8u currentPosition = 1; - readonly attribute int8u multiPressMax = 2; + readonly attribute optional int8u multiPressMax = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2029,8 +2029,8 @@ client cluster ModeSelect = 80 { readonly attribute nullable enum16 standardNamespace = 1; readonly attribute ModeOptionStruct supportedModes[] = 2; readonly attribute int8u currentMode = 3; - attribute nullable int8u startUpMode = 4; - attribute nullable int8u onMode = 5; + attribute optional nullable int8u startUpMode = 4; + attribute optional nullable int8u onMode = 5; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2438,7 +2438,7 @@ server cluster Thermostat = 513 { client cluster ThermostatUserInterfaceConfiguration = 516 { attribute enum8 temperatureDisplayMode = 0; attribute access(write: manage) enum8 keypadLockout = 1; - attribute access(write: manage) enum8 scheduleProgrammingVisibility = 2; + attribute access(write: manage) optional enum8 scheduleProgrammingVisibility = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2596,7 +2596,7 @@ client cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; readonly attribute nullable int16s maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2661,7 +2661,7 @@ client cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2737,7 +2737,7 @@ client cluster TargetNavigator = 1285 { } readonly attribute TargetInfoStruct targetList[] = 0; - readonly attribute int8u currentTarget = 1; + readonly attribute optional int8u currentTarget = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3113,8 +3113,8 @@ client cluster ContentLauncher = 1290 { optional StyleInformationStruct waterMark = 5; } - readonly attribute CHAR_STRING acceptHeader[] = 0; - attribute bitmap32 supportedStreamingProtocols = 1; + readonly attribute optional CHAR_STRING acceptHeader[] = 0; + attribute optional bitmap32 supportedStreamingProtocols = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3265,10 +3265,10 @@ client cluster ApplicationBasic = 1293 { char_string applicationID = 1; } - readonly attribute char_string<32> vendorName = 0; - readonly attribute vendor_id vendorID = 1; + readonly attribute optional char_string<32> vendorName = 0; + readonly attribute optional vendor_id vendorID = 1; readonly attribute char_string<32> applicationName = 2; - readonly attribute int16u productID = 3; + readonly attribute optional int16u productID = 3; readonly attribute ApplicationStruct application = 4; readonly attribute ApplicationStatusEnum status = 5; readonly attribute char_string<32> applicationVersion = 6; diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter index 24f3b000f018d0..2aa3e240a7ab50 100644 --- a/examples/placeholder/linux/apps/app2/config.matter +++ b/examples/placeholder/linux/apps/app2/config.matter @@ -266,10 +266,10 @@ client cluster OnOff = 6 { } readonly attribute boolean onOff = 0; - readonly attribute boolean globalSceneControl = 16384; - attribute int16u onTime = 16385; - attribute int16u offWaitTime = 16386; - attribute access(write: manage) nullable OnOffStartUpOnOff startUpOnOff = 16387; + readonly attribute optional boolean globalSceneControl = 16384; + attribute optional int16u onTime = 16385; + attribute optional int16u offWaitTime = 16386; + attribute access(write: manage) optional nullable OnOffStartUpOnOff startUpOnOff = 16387; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1578,7 +1578,7 @@ client cluster Switch = 59 { readonly attribute int8u numberOfPositions = 0; readonly attribute int8u currentPosition = 1; - readonly attribute int8u multiPressMax = 2; + readonly attribute optional int8u multiPressMax = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1990,8 +1990,8 @@ client cluster ModeSelect = 80 { readonly attribute nullable enum16 standardNamespace = 1; readonly attribute ModeOptionStruct supportedModes[] = 2; readonly attribute int8u currentMode = 3; - attribute nullable int8u startUpMode = 4; - attribute nullable int8u onMode = 5; + attribute optional nullable int8u startUpMode = 4; + attribute optional nullable int8u onMode = 5; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2399,7 +2399,7 @@ server cluster Thermostat = 513 { client cluster ThermostatUserInterfaceConfiguration = 516 { attribute enum8 temperatureDisplayMode = 0; attribute access(write: manage) enum8 keypadLockout = 1; - attribute access(write: manage) enum8 scheduleProgrammingVisibility = 2; + attribute access(write: manage) optional enum8 scheduleProgrammingVisibility = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2557,7 +2557,7 @@ client cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; readonly attribute nullable int16s maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2622,7 +2622,7 @@ client cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2698,7 +2698,7 @@ client cluster TargetNavigator = 1285 { } readonly attribute TargetInfoStruct targetList[] = 0; - readonly attribute int8u currentTarget = 1; + readonly attribute optional int8u currentTarget = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3074,8 +3074,8 @@ client cluster ContentLauncher = 1290 { optional StyleInformationStruct waterMark = 5; } - readonly attribute CHAR_STRING acceptHeader[] = 0; - attribute bitmap32 supportedStreamingProtocols = 1; + readonly attribute optional CHAR_STRING acceptHeader[] = 0; + attribute optional bitmap32 supportedStreamingProtocols = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3226,10 +3226,10 @@ client cluster ApplicationBasic = 1293 { char_string applicationID = 1; } - readonly attribute char_string<32> vendorName = 0; - readonly attribute vendor_id vendorID = 1; + readonly attribute optional char_string<32> vendorName = 0; + readonly attribute optional vendor_id vendorID = 1; readonly attribute char_string<32> applicationName = 2; - readonly attribute int16u productID = 3; + readonly attribute optional int16u productID = 3; readonly attribute ApplicationStruct application = 4; readonly attribute ApplicationStatusEnum status = 5; readonly attribute char_string<32> applicationVersion = 6; diff --git a/examples/pump-app/pump-common/pump-app.matter b/examples/pump-app/pump-common/pump-app.matter index 54dae44c7c2857..e45f1165bfa75f 100644 --- a/examples/pump-app/pump-common/pump-app.matter +++ b/examples/pump-app/pump-common/pump-app.matter @@ -1329,15 +1329,15 @@ client cluster OccupancySensing = 1030 { readonly attribute OccupancyBitmap occupancy = 0; readonly attribute OccupancySensorTypeEnum occupancySensorType = 1; readonly attribute OccupancySensorTypeBitmap occupancySensorTypeBitmap = 2; - attribute access(write: manage) int16u PIROccupiedToUnoccupiedDelay = 16; - attribute access(write: manage) int16u PIRUnoccupiedToOccupiedDelay = 17; - attribute access(write: manage) int8u PIRUnoccupiedToOccupiedThreshold = 18; - attribute access(write: manage) int16u ultrasonicOccupiedToUnoccupiedDelay = 32; - attribute access(write: manage) int16u ultrasonicUnoccupiedToOccupiedDelay = 33; - attribute access(write: manage) int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; - attribute access(write: manage) int16u physicalContactOccupiedToUnoccupiedDelay = 48; - attribute access(write: manage) int16u physicalContactUnoccupiedToOccupiedDelay = 49; - attribute access(write: manage) int8u physicalContactUnoccupiedToOccupiedThreshold = 50; + attribute access(write: manage) optional int16u PIROccupiedToUnoccupiedDelay = 16; + attribute access(write: manage) optional int16u PIRUnoccupiedToOccupiedDelay = 17; + attribute access(write: manage) optional int8u PIRUnoccupiedToOccupiedThreshold = 18; + attribute access(write: manage) optional int16u ultrasonicOccupiedToUnoccupiedDelay = 32; + attribute access(write: manage) optional int16u ultrasonicUnoccupiedToOccupiedDelay = 33; + attribute access(write: manage) optional int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; + attribute access(write: manage) optional int16u physicalContactOccupiedToUnoccupiedDelay = 48; + attribute access(write: manage) optional int16u physicalContactUnoccupiedToOccupiedDelay = 49; + attribute access(write: manage) optional int8u physicalContactUnoccupiedToOccupiedThreshold = 50; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; 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 037120c80920ce..e41f06c1e2dc3f 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 @@ -73,10 +73,10 @@ client cluster OnOff = 6 { } readonly attribute boolean onOff = 0; - readonly attribute boolean globalSceneControl = 16384; - attribute int16u onTime = 16385; - attribute int16u offWaitTime = 16386; - attribute access(write: manage) nullable OnOffStartUpOnOff startUpOnOff = 16387; + readonly attribute optional boolean globalSceneControl = 16384; + attribute optional int16u onTime = 16385; + attribute optional int16u offWaitTime = 16386; + attribute access(write: manage) optional nullable OnOffStartUpOnOff startUpOnOff = 16387; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1153,26 +1153,26 @@ client cluster PumpConfigurationAndControl = 512 { readonly attribute nullable int16s maxPressure = 0; readonly attribute nullable int16u maxSpeed = 1; readonly attribute nullable int16u maxFlow = 2; - readonly attribute nullable int16s minConstPressure = 3; - readonly attribute nullable int16s maxConstPressure = 4; - readonly attribute nullable int16s minCompPressure = 5; - readonly attribute nullable int16s maxCompPressure = 6; - readonly attribute nullable int16u minConstSpeed = 7; - readonly attribute nullable int16u maxConstSpeed = 8; - readonly attribute nullable int16u minConstFlow = 9; - readonly attribute nullable int16u maxConstFlow = 10; - readonly attribute nullable int16s minConstTemp = 11; - readonly attribute nullable int16s maxConstTemp = 12; - readonly attribute PumpStatusBitmap pumpStatus = 16; + readonly attribute optional nullable int16s minConstPressure = 3; + readonly attribute optional nullable int16s maxConstPressure = 4; + readonly attribute optional nullable int16s minCompPressure = 5; + readonly attribute optional nullable int16s maxCompPressure = 6; + readonly attribute optional nullable int16u minConstSpeed = 7; + readonly attribute optional nullable int16u maxConstSpeed = 8; + readonly attribute optional nullable int16u minConstFlow = 9; + readonly attribute optional nullable int16u maxConstFlow = 10; + readonly attribute optional nullable int16s minConstTemp = 11; + readonly attribute optional nullable int16s maxConstTemp = 12; + readonly attribute optional PumpStatusBitmap pumpStatus = 16; readonly attribute OperationModeEnum effectiveOperationMode = 17; readonly attribute ControlModeEnum effectiveControlMode = 18; readonly attribute nullable int16s capacity = 19; - readonly attribute nullable int16u speed = 20; - attribute access(write: manage) nullable int24u lifetimeRunningHours = 21; - readonly attribute nullable int24u power = 22; - attribute access(write: manage) nullable int32u lifetimeEnergyConsumed = 23; + readonly attribute optional nullable int16u speed = 20; + attribute access(write: manage) optional nullable int24u lifetimeRunningHours = 21; + readonly attribute optional nullable int24u power = 22; + attribute access(write: manage) optional nullable int32u lifetimeEnergyConsumed = 23; attribute access(write: manage) OperationModeEnum operationMode = 32; - attribute access(write: manage) ControlModeEnum controlMode = 33; + attribute access(write: manage) optional ControlModeEnum controlMode = 33; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1186,7 +1186,7 @@ client cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; readonly attribute nullable int16s maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1204,12 +1204,12 @@ client cluster PressureMeasurement = 1027 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; readonly attribute nullable int16s maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; - readonly attribute nullable int16s scaledValue = 16; - readonly attribute nullable int16s minScaledValue = 17; - readonly attribute nullable int16s maxScaledValue = 18; - readonly attribute int16u scaledTolerance = 19; - readonly attribute int8s scale = 20; + readonly attribute optional int16u tolerance = 3; + readonly attribute optional nullable int16s scaledValue = 16; + readonly attribute optional nullable int16s minScaledValue = 17; + readonly attribute optional nullable int16s maxScaledValue = 18; + readonly attribute optional int16u scaledTolerance = 19; + readonly attribute optional int8s scale = 20; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1223,7 +1223,7 @@ client cluster FlowMeasurement = 1028 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter index 5749402b494025..1e41a51bb46186 100644 --- a/examples/tv-app/tv-common/tv-app.matter +++ b/examples/tv-app/tv-common/tv-app.matter @@ -689,8 +689,8 @@ client cluster NetworkCommissioning = 49 { readonly attribute access(read: administer) int8u maxNetworks = 0; readonly attribute access(read: administer) NetworkInfo networks[] = 1; - readonly attribute int8u scanMaxTimeSeconds = 2; - readonly attribute int8u connectMaxTimeSeconds = 3; + readonly attribute optional int8u scanMaxTimeSeconds = 2; + readonly attribute optional int8u connectMaxTimeSeconds = 3; attribute access(write: administer) boolean interfaceEnabled = 4; readonly attribute access(read: administer) nullable NetworkCommissioningStatus lastNetworkingStatus = 5; readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6; 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 c84fc7c0acd2b1..17f0d76851cc67 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 @@ -143,10 +143,10 @@ client cluster OnOff = 6 { } readonly attribute boolean onOff = 0; - readonly attribute boolean globalSceneControl = 16384; - attribute int16u onTime = 16385; - attribute int16u offWaitTime = 16386; - attribute access(write: manage) nullable OnOffStartUpOnOff startUpOnOff = 16387; + readonly attribute optional boolean globalSceneControl = 16384; + attribute optional int16u onTime = 16385; + attribute optional int16u offWaitTime = 16386; + attribute access(write: manage) optional nullable OnOffStartUpOnOff startUpOnOff = 16387; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -203,19 +203,19 @@ client cluster LevelControl = 8 { } readonly attribute nullable int8u currentLevel = 0; - readonly attribute int16u remainingTime = 1; - readonly attribute int8u minLevel = 2; - readonly attribute int8u maxLevel = 3; - readonly attribute int16u currentFrequency = 4; - readonly attribute int16u minFrequency = 5; - readonly attribute int16u maxFrequency = 6; + readonly attribute optional int16u remainingTime = 1; + readonly attribute optional int8u minLevel = 2; + readonly attribute optional int8u maxLevel = 3; + readonly attribute optional int16u currentFrequency = 4; + readonly attribute optional int16u minFrequency = 5; + readonly attribute optional int16u maxFrequency = 6; attribute LevelControlOptions options = 15; - attribute int16u onOffTransitionTime = 16; + attribute optional int16u onOffTransitionTime = 16; attribute nullable int8u onLevel = 17; - attribute nullable int16u onTransitionTime = 18; - attribute nullable int16u offTransitionTime = 19; - attribute nullable int8u defaultMoveRate = 20; - attribute access(write: manage) nullable int8u startUpCurrentLevel = 16384; + attribute optional nullable int16u onTransitionTime = 18; + attribute optional nullable int16u offTransitionTime = 19; + attribute optional nullable int8u defaultMoveRate = 20; + attribute access(write: manage) optional nullable int8u startUpCurrentLevel = 16384; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1262,7 +1262,7 @@ server cluster FixedLabel = 64 { /** 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 optional char_string<32> MACAddress = 0; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1303,9 +1303,9 @@ client cluster Channel = 1284 { LineupInfoTypeEnum lineupInfoType = 3; } - readonly attribute ChannelInfoStruct channelList[] = 0; - readonly attribute nullable LineupInfoStruct lineup = 1; - readonly attribute nullable ChannelInfoStruct currentChannel = 2; + readonly attribute optional ChannelInfoStruct channelList[] = 0; + readonly attribute optional nullable LineupInfoStruct lineup = 1; + readonly attribute optional nullable ChannelInfoStruct currentChannel = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1353,7 +1353,7 @@ client cluster TargetNavigator = 1285 { } readonly attribute TargetInfoStruct targetList[] = 0; - readonly attribute int8u currentTarget = 1; + readonly attribute optional int8u currentTarget = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1404,12 +1404,12 @@ client cluster MediaPlayback = 1286 { } readonly attribute PlaybackStateEnum currentState = 0; - readonly attribute nullable epoch_us startTime = 1; - readonly attribute nullable int64u duration = 2; - readonly attribute nullable PlaybackPositionStruct sampledPosition = 3; - readonly attribute single playbackSpeed = 4; - readonly attribute nullable int64u seekRangeEnd = 5; - readonly attribute nullable int64u seekRangeStart = 6; + readonly attribute optional nullable epoch_us startTime = 1; + readonly attribute optional nullable int64u duration = 2; + readonly attribute optional nullable PlaybackPositionStruct sampledPosition = 3; + readonly attribute optional single playbackSpeed = 4; + readonly attribute optional nullable int64u seekRangeEnd = 5; + readonly attribute optional nullable int64u seekRangeStart = 6; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1725,8 +1725,8 @@ client cluster ContentLauncher = 1290 { optional StyleInformationStruct waterMark = 5; } - readonly attribute CHAR_STRING acceptHeader[] = 0; - attribute bitmap32 supportedStreamingProtocols = 1; + readonly attribute optional CHAR_STRING acceptHeader[] = 0; + attribute optional bitmap32 supportedStreamingProtocols = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1779,7 +1779,7 @@ client cluster AudioOutput = 1291 { } readonly attribute OutputInfoStruct outputList[] = 0; - readonly attribute int8u currentOutput = 1; + readonly attribute optional int8u currentOutput = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1824,8 +1824,8 @@ client cluster ApplicationLauncher = 1292 { optional endpoint_no endpoint = 1; } - readonly attribute INT16U catalogList[] = 0; - attribute nullable ApplicationEPStruct currentApp = 1; + readonly attribute optional INT16U catalogList[] = 0; + attribute optional nullable ApplicationEPStruct currentApp = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1873,10 +1873,10 @@ client cluster ApplicationBasic = 1293 { char_string applicationID = 1; } - readonly attribute char_string<32> vendorName = 0; - readonly attribute vendor_id vendorID = 1; + readonly attribute optional char_string<32> vendorName = 0; + readonly attribute optional vendor_id vendorID = 1; readonly attribute char_string<32> applicationName = 2; - readonly attribute int16u productID = 3; + readonly attribute optional int16u productID = 3; readonly attribute ApplicationStruct application = 4; readonly attribute ApplicationStatusEnum status = 5; readonly attribute char_string<32> applicationVersion = 6; diff --git a/scripts/py_matter_idl/matter_idl/generators/java/__init__.py b/scripts/py_matter_idl/matter_idl/generators/java/__init__.py index 7bf11f76949574..21726a7c7baebe 100644 --- a/scripts/py_matter_idl/matter_idl/generators/java/__init__.py +++ b/scripts/py_matter_idl/matter_idl/generators/java/__init__.py @@ -97,9 +97,6 @@ def FieldToGlobalName(field: Field, context: TypeLookupContext) -> Union[str, No if FieldQuality.NULLABLE & field.qualities: return None - if FieldQuality.OPTIONAL & field.qualities: - return None - return _UnderlyingType(field, context) diff --git a/src/app/zap-templates/partials/idl/attribute_definition.zapt b/src/app/zap-templates/partials/idl/attribute_definition.zapt index 4a43ea95ef082f..2fee7aa0e79320 100644 --- a/src/app/zap-templates/partials/idl/attribute_definition.zapt +++ b/src/app/zap-templates/partials/idl/attribute_definition.zapt @@ -12,16 +12,19 @@ {{~#chip_access_elements entity="attribute"~}} {{~#first~}}access({{~/first~}} {{~#not_first~}}, {{/not_first~}} - {{operation}}: {{role}} + {{operation}}: {{role}} {{~#last}}) {{/last~}} {{~/chip_access_elements~}} + {{#if isOptional~}} + optional {{!marker to place a space even with whitespace removal~}} + {{~/if~}} {{~#if isNullable~}} nullable {{!marker to place a space even with whitespace removal~}} {{~/if~}} {{type}} {{~#unless isArray~}} {{~#if (isString type)~}} - {{~#if maxLength~}} - <{{maxLength}}> + {{~#if maxLength~}} + <{{maxLength}}> {{~/if~}} {{~/if~}} {{/unless}} {{asLowerCamelCase name~}} diff --git a/src/app/zap-templates/templates/app/MatterIDL.zapt b/src/app/zap-templates/templates/app/MatterIDL.zapt index 61e2ffaf3d876c..7cb1d55149d14f 100644 --- a/src/app/zap-templates/templates/app/MatterIDL.zapt +++ b/src/app/zap-templates/templates/app/MatterIDL.zapt @@ -40,7 +40,7 @@ {{~#chip_access_elements entity="event"~}} {{~#first~}}access({{~/first~}} {{~#not_first~}}, {{/not_first~}} - {{operation}}: {{role}} + {{operation}}: {{role}} {{~#last}}) {{/last~}} {{~/chip_access_elements~}} {{asUpperCamelCase name}} = {{code}} { @@ -53,7 +53,9 @@ {{/zcl_events}} {{#if (is_client side)}} {{#zcl_attributes_server}} + {{#if clusterRef}} {{! ensure indent }}{{>idl_attribute_definition}} + {{/if}} {{/zcl_attributes_server}} {{~else}} @@ -63,17 +65,18 @@ {{/unless}} {{/enabled_attributes_for_cluster_and_side~}} + {{~/if}} {{~!--Global attributes: spec 7.13 describes these as mandatory --}} + {{~!TODO(26053): global attributes are marked as optional, + hence the exclusion above and re-add here.}} readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; - {{~/if}} {{!--Open:Generating command request structs for all incoming commands into server side--~}} {{#if (is_server side)}} - {{#all_incoming_commands_for_cluster name side}} {{~>idl_command_request_struct}} {{/all_incoming_commands_for_cluster}} diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index a0a33ddd8f8fb4..a728b838846eca 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -155,7 +155,7 @@ client cluster Scenes = 5 { readonly attribute group_id currentGroup = 2; readonly attribute boolean sceneValid = 3; readonly attribute bitmap8 nameSupport = 4; - readonly attribute nullable node_id lastConfiguredBy = 5; + readonly attribute optional nullable node_id lastConfiguredBy = 5; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -335,10 +335,10 @@ client cluster OnOff = 6 { } readonly attribute boolean onOff = 0; - readonly attribute boolean globalSceneControl = 16384; - attribute int16u onTime = 16385; - attribute int16u offWaitTime = 16386; - attribute access(write: manage) nullable OnOffStartUpOnOff startUpOnOff = 16387; + readonly attribute optional boolean globalSceneControl = 16384; + attribute optional int16u onTime = 16385; + attribute optional int16u offWaitTime = 16386; + attribute access(write: manage) optional nullable OnOffStartUpOnOff startUpOnOff = 16387; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -407,19 +407,19 @@ client cluster LevelControl = 8 { } readonly attribute nullable int8u currentLevel = 0; - readonly attribute int16u remainingTime = 1; - readonly attribute int8u minLevel = 2; - readonly attribute int8u maxLevel = 3; - readonly attribute int16u currentFrequency = 4; - readonly attribute int16u minFrequency = 5; - readonly attribute int16u maxFrequency = 6; + readonly attribute optional int16u remainingTime = 1; + readonly attribute optional int8u minLevel = 2; + readonly attribute optional int8u maxLevel = 3; + readonly attribute optional int16u currentFrequency = 4; + readonly attribute optional int16u minFrequency = 5; + readonly attribute optional int16u maxFrequency = 6; attribute LevelControlOptions options = 15; - attribute int16u onOffTransitionTime = 16; + attribute optional int16u onOffTransitionTime = 16; attribute nullable int8u onLevel = 17; - attribute nullable int16u onTransitionTime = 18; - attribute nullable int16u offTransitionTime = 19; - attribute nullable int8u defaultMoveRate = 20; - attribute access(write: manage) nullable int8u startUpCurrentLevel = 16384; + attribute optional nullable int16u onTransitionTime = 18; + attribute optional nullable int16u offTransitionTime = 19; + attribute optional nullable int8u defaultMoveRate = 20; + attribute access(write: manage) optional nullable int8u startUpCurrentLevel = 16384; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -508,15 +508,15 @@ client cluster LevelControl = 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; - attribute char_string<16> inactiveText = 46; + attribute optional char_string<16> activeText = 4; + attribute optional char_string<16> description = 28; + attribute optional char_string<16> inactiveText = 46; attribute boolean outOfService = 81; - readonly attribute enum8 polarity = 84; + readonly attribute optional enum8 polarity = 84; attribute boolean presentValue = 85; - attribute enum8 reliability = 103; + attribute optional enum8 reliability = 103; readonly attribute bitmap8 statusFlags = 111; - readonly attribute int32u applicationType = 256; + readonly attribute optional int32u applicationType = 256; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -624,7 +624,7 @@ client cluster AccessControl = 31 { } attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0; - attribute access(read: administer, write: administer) AccessControlExtensionStruct extension[] = 1; + attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1; readonly attribute int16u subjectsPerAccessControlEntry = 2; readonly attribute int16u targetsPerAccessControlEntry = 3; readonly attribute int16u accessControlEntriesPerFabric = 4; @@ -712,7 +712,7 @@ client cluster Actions = 37 { readonly attribute ActionStruct actionList[] = 0; readonly attribute EndpointListStruct endpointLists[] = 1; - readonly attribute long_char_string<512> setupURL = 2; + readonly attribute optional long_char_string<512> setupURL = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -846,14 +846,14 @@ client cluster BasicInformation = 40 { readonly attribute char_string<64> hardwareVersionString = 8; readonly attribute int32u softwareVersion = 9; readonly attribute char_string<64> softwareVersionString = 10; - readonly attribute char_string<16> manufacturingDate = 11; - readonly attribute char_string<32> partNumber = 12; - readonly attribute long_char_string<256> productURL = 13; - readonly attribute char_string<64> productLabel = 14; - readonly attribute char_string<32> serialNumber = 15; - attribute access(write: manage) boolean localConfigDisabled = 16; - readonly attribute boolean reachable = 17; - readonly attribute char_string<32> uniqueID = 18; + readonly attribute optional char_string<16> manufacturingDate = 11; + readonly attribute optional char_string<32> partNumber = 12; + readonly attribute optional long_char_string<256> productURL = 13; + readonly attribute optional char_string<64> productLabel = 14; + readonly attribute optional char_string<32> serialNumber = 15; + attribute access(write: manage) optional boolean localConfigDisabled = 16; + readonly attribute optional boolean reachable = 17; + readonly attribute optional char_string<32> uniqueID = 18; readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -1056,8 +1056,8 @@ client cluster TimeFormatLocalization = 44 { } attribute HourFormatEnum hourFormat = 0; - attribute CalendarTypeEnum activeCalendarType = 1; - readonly attribute CalendarTypeEnum supportedCalendarTypes[] = 2; + attribute optional CalendarTypeEnum activeCalendarType = 1; + readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1081,7 +1081,7 @@ client cluster UnitLocalization = 45 { kTemperatureUnit = 0x1; } - attribute TempUnitEnum temperatureUnit = 0; + attribute optional TempUnitEnum temperatureUnit = 0; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1321,34 +1321,34 @@ client cluster PowerSource = 47 { readonly attribute PowerSourceStatusEnum status = 0; readonly attribute int8u order = 1; readonly attribute char_string<60> description = 2; - readonly attribute nullable int32u wiredAssessedInputVoltage = 3; - readonly attribute nullable int16u wiredAssessedInputFrequency = 4; - readonly attribute WiredCurrentTypeEnum wiredCurrentType = 5; - readonly attribute nullable int32u wiredAssessedCurrent = 6; - readonly attribute int32u wiredNominalVoltage = 7; - readonly attribute int32u wiredMaximumCurrent = 8; - readonly attribute boolean wiredPresent = 9; - readonly attribute WiredFaultEnum activeWiredFaults[] = 10; - readonly attribute nullable int32u batVoltage = 11; - readonly attribute nullable int8u batPercentRemaining = 12; - readonly attribute nullable int32u batTimeRemaining = 13; - readonly attribute BatChargeLevelEnum batChargeLevel = 14; - readonly attribute boolean batReplacementNeeded = 15; - readonly attribute BatReplaceabilityEnum batReplaceability = 16; - readonly attribute boolean batPresent = 17; - readonly attribute BatFaultEnum activeBatFaults[] = 18; - readonly attribute char_string<60> batReplacementDescription = 19; - readonly attribute BatCommonDesignationEnum batCommonDesignation = 20; - readonly attribute char_string<20> batANSIDesignation = 21; - readonly attribute char_string<20> batIECDesignation = 22; - readonly attribute BatApprovedChemistryEnum batApprovedChemistry = 23; - readonly attribute int32u batCapacity = 24; - readonly attribute int8u batQuantity = 25; - readonly attribute BatChargeStateEnum batChargeState = 26; - readonly attribute nullable int32u batTimeToFullCharge = 27; - readonly attribute boolean batFunctionalWhileCharging = 28; - readonly attribute nullable int32u batChargingCurrent = 29; - readonly attribute BatChargeFaultEnum activeBatChargeFaults[] = 30; + readonly attribute optional nullable int32u wiredAssessedInputVoltage = 3; + readonly attribute optional nullable int16u wiredAssessedInputFrequency = 4; + readonly attribute optional WiredCurrentTypeEnum wiredCurrentType = 5; + readonly attribute optional nullable int32u wiredAssessedCurrent = 6; + readonly attribute optional int32u wiredNominalVoltage = 7; + readonly attribute optional int32u wiredMaximumCurrent = 8; + readonly attribute optional boolean wiredPresent = 9; + readonly attribute optional WiredFaultEnum activeWiredFaults[] = 10; + readonly attribute optional nullable int32u batVoltage = 11; + readonly attribute optional nullable int8u batPercentRemaining = 12; + readonly attribute optional nullable int32u batTimeRemaining = 13; + readonly attribute optional BatChargeLevelEnum batChargeLevel = 14; + readonly attribute optional boolean batReplacementNeeded = 15; + readonly attribute optional BatReplaceabilityEnum batReplaceability = 16; + readonly attribute optional boolean batPresent = 17; + readonly attribute optional BatFaultEnum activeBatFaults[] = 18; + readonly attribute optional char_string<60> batReplacementDescription = 19; + readonly attribute optional BatCommonDesignationEnum batCommonDesignation = 20; + readonly attribute optional char_string<20> batANSIDesignation = 21; + readonly attribute optional char_string<20> batIECDesignation = 22; + readonly attribute optional BatApprovedChemistryEnum batApprovedChemistry = 23; + readonly attribute optional int32u batCapacity = 24; + readonly attribute optional int8u batQuantity = 25; + readonly attribute optional BatChargeStateEnum batChargeState = 26; + readonly attribute optional nullable int32u batTimeToFullCharge = 27; + readonly attribute optional boolean batFunctionalWhileCharging = 28; + readonly attribute optional nullable int32u batChargingCurrent = 29; + readonly attribute optional BatChargeFaultEnum activeBatChargeFaults[] = 30; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1491,8 +1491,8 @@ client cluster NetworkCommissioning = 49 { readonly attribute access(read: administer) int8u maxNetworks = 0; readonly attribute access(read: administer) NetworkInfo networks[] = 1; - readonly attribute int8u scanMaxTimeSeconds = 2; - readonly attribute int8u connectMaxTimeSeconds = 3; + readonly attribute optional int8u scanMaxTimeSeconds = 2; + readonly attribute optional int8u connectMaxTimeSeconds = 3; attribute access(write: administer) boolean interfaceEnabled = 4; readonly attribute access(read: administer) nullable NetworkCommissioningStatus lastNetworkingStatus = 5; readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6; @@ -1697,12 +1697,12 @@ client cluster GeneralDiagnostics = 51 { readonly attribute NetworkInterface networkInterfaces[] = 0; readonly attribute int16u rebootCount = 1; - readonly attribute int64u upTime = 2; - readonly attribute int32u totalOperationalHours = 3; - readonly attribute BootReasonEnum bootReason = 4; - readonly attribute HardwareFaultEnum activeHardwareFaults[] = 5; - readonly attribute RadioFaultEnum activeRadioFaults[] = 6; - readonly attribute NetworkFaultEnum activeNetworkFaults[] = 7; + readonly attribute optional int64u upTime = 2; + readonly attribute optional int32u totalOperationalHours = 3; + readonly attribute optional BootReasonEnum bootReason = 4; + readonly attribute optional HardwareFaultEnum activeHardwareFaults[] = 5; + readonly attribute optional RadioFaultEnum activeRadioFaults[] = 6; + readonly attribute optional NetworkFaultEnum activeNetworkFaults[] = 7; readonly attribute boolean testEventTriggersEnabled = 8; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -1740,10 +1740,10 @@ client cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetricsStruct threadMetrics[] = 0; - readonly attribute int64u currentHeapFree = 1; - readonly attribute int64u currentHeapUsed = 2; - readonly attribute int64u currentHeapHighWatermark = 3; + readonly attribute optional ThreadMetricsStruct threadMetrics[] = 0; + readonly attribute optional int64u currentHeapFree = 1; + readonly attribute optional int64u currentHeapUsed = 2; + readonly attribute optional int64u currentHeapHighWatermark = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1851,7 +1851,7 @@ client cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int16u panId = 3; readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; - readonly attribute int64u overrunCount = 6; + readonly attribute optional int64u overrunCount = 6; readonly attribute NeighborTable neighborTable[] = 7; readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; @@ -1859,51 +1859,51 @@ client cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int8u dataVersion = 11; readonly attribute nullable int8u stableDataVersion = 12; readonly attribute nullable int8u leaderRouterId = 13; - readonly attribute int16u detachedRoleCount = 14; - readonly attribute int16u childRoleCount = 15; - readonly attribute int16u routerRoleCount = 16; - readonly attribute int16u leaderRoleCount = 17; - readonly attribute int16u attachAttemptCount = 18; - readonly attribute int16u partitionIdChangeCount = 19; - readonly attribute int16u betterPartitionAttachAttemptCount = 20; - readonly attribute int16u parentChangeCount = 21; - readonly attribute int32u txTotalCount = 22; - readonly attribute int32u txUnicastCount = 23; - readonly attribute int32u txBroadcastCount = 24; - readonly attribute int32u txAckRequestedCount = 25; - readonly attribute int32u txAckedCount = 26; - readonly attribute int32u txNoAckRequestedCount = 27; - readonly attribute int32u txDataCount = 28; - readonly attribute int32u txDataPollCount = 29; - readonly attribute int32u txBeaconCount = 30; - readonly attribute int32u txBeaconRequestCount = 31; - readonly attribute int32u txOtherCount = 32; - readonly attribute int32u txRetryCount = 33; - readonly attribute int32u txDirectMaxRetryExpiryCount = 34; - readonly attribute int32u txIndirectMaxRetryExpiryCount = 35; - readonly attribute int32u txErrCcaCount = 36; - readonly attribute int32u txErrAbortCount = 37; - readonly attribute int32u txErrBusyChannelCount = 38; - readonly attribute int32u rxTotalCount = 39; - readonly attribute int32u rxUnicastCount = 40; - readonly attribute int32u rxBroadcastCount = 41; - readonly attribute int32u rxDataCount = 42; - readonly attribute int32u rxDataPollCount = 43; - readonly attribute int32u rxBeaconCount = 44; - readonly attribute int32u rxBeaconRequestCount = 45; - readonly attribute int32u rxOtherCount = 46; - readonly attribute int32u rxAddressFilteredCount = 47; - readonly attribute int32u rxDestAddrFilteredCount = 48; - readonly attribute int32u rxDuplicatedCount = 49; - readonly attribute int32u rxErrNoFrameCount = 50; - readonly attribute int32u rxErrUnknownNeighborCount = 51; - readonly attribute int32u rxErrInvalidSrcAddrCount = 52; - readonly attribute int32u rxErrSecCount = 53; - readonly attribute int32u rxErrFcsCount = 54; - readonly attribute int32u rxErrOtherCount = 55; - readonly attribute nullable int64u activeTimestamp = 56; - readonly attribute nullable int64u pendingTimestamp = 57; - readonly attribute nullable int32u delay = 58; + readonly attribute optional int16u detachedRoleCount = 14; + readonly attribute optional int16u childRoleCount = 15; + readonly attribute optional int16u routerRoleCount = 16; + readonly attribute optional int16u leaderRoleCount = 17; + readonly attribute optional int16u attachAttemptCount = 18; + readonly attribute optional int16u partitionIdChangeCount = 19; + readonly attribute optional int16u betterPartitionAttachAttemptCount = 20; + readonly attribute optional int16u parentChangeCount = 21; + readonly attribute optional int32u txTotalCount = 22; + readonly attribute optional int32u txUnicastCount = 23; + readonly attribute optional int32u txBroadcastCount = 24; + readonly attribute optional int32u txAckRequestedCount = 25; + readonly attribute optional int32u txAckedCount = 26; + readonly attribute optional int32u txNoAckRequestedCount = 27; + readonly attribute optional int32u txDataCount = 28; + readonly attribute optional int32u txDataPollCount = 29; + readonly attribute optional int32u txBeaconCount = 30; + readonly attribute optional int32u txBeaconRequestCount = 31; + readonly attribute optional int32u txOtherCount = 32; + readonly attribute optional int32u txRetryCount = 33; + readonly attribute optional int32u txDirectMaxRetryExpiryCount = 34; + readonly attribute optional int32u txIndirectMaxRetryExpiryCount = 35; + readonly attribute optional int32u txErrCcaCount = 36; + readonly attribute optional int32u txErrAbortCount = 37; + readonly attribute optional int32u txErrBusyChannelCount = 38; + readonly attribute optional int32u rxTotalCount = 39; + readonly attribute optional int32u rxUnicastCount = 40; + readonly attribute optional int32u rxBroadcastCount = 41; + readonly attribute optional int32u rxDataCount = 42; + readonly attribute optional int32u rxDataPollCount = 43; + readonly attribute optional int32u rxBeaconCount = 44; + readonly attribute optional int32u rxBeaconRequestCount = 45; + readonly attribute optional int32u rxOtherCount = 46; + readonly attribute optional int32u rxAddressFilteredCount = 47; + readonly attribute optional int32u rxDestAddrFilteredCount = 48; + readonly attribute optional int32u rxDuplicatedCount = 49; + readonly attribute optional int32u rxErrNoFrameCount = 50; + readonly attribute optional int32u rxErrUnknownNeighborCount = 51; + readonly attribute optional int32u rxErrInvalidSrcAddrCount = 52; + readonly attribute optional int32u rxErrSecCount = 53; + readonly attribute optional int32u rxErrFcsCount = 54; + readonly attribute optional int32u rxErrOtherCount = 55; + readonly attribute optional nullable int64u activeTimestamp = 56; + readonly attribute optional nullable int64u pendingTimestamp = 57; + readonly attribute optional nullable int32u delay = 58; readonly attribute nullable SecurityPolicy securityPolicy = 59; readonly attribute nullable octet_string<4> channelPage0Mask = 60; readonly attribute nullable OperationalDatasetComponents operationalDatasetComponents = 61; @@ -1974,14 +1974,14 @@ client cluster WiFiNetworkDiagnostics = 54 { readonly attribute nullable WiFiVersionEnum wiFiVersion = 2; readonly attribute nullable int16u channelNumber = 3; readonly attribute nullable int8s rssi = 4; - readonly attribute nullable int32u beaconLostCount = 5; - readonly attribute nullable int32u beaconRxCount = 6; - readonly attribute nullable int32u packetMulticastRxCount = 7; - readonly attribute nullable int32u packetMulticastTxCount = 8; - readonly attribute nullable int32u packetUnicastRxCount = 9; - readonly attribute nullable int32u packetUnicastTxCount = 10; - readonly attribute nullable int64u currentMaxRate = 11; - readonly attribute nullable int64u overrunCount = 12; + readonly attribute optional nullable int32u beaconLostCount = 5; + readonly attribute optional nullable int32u beaconRxCount = 6; + readonly attribute optional nullable int32u packetMulticastRxCount = 7; + readonly attribute optional nullable int32u packetMulticastTxCount = 8; + readonly attribute optional nullable int32u packetUnicastRxCount = 9; + readonly attribute optional nullable int32u packetUnicastTxCount = 10; + readonly attribute optional nullable int64u currentMaxRate = 11; + readonly attribute optional nullable int64u overrunCount = 12; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2013,15 +2013,15 @@ client cluster EthernetNetworkDiagnostics = 55 { kErrorCounts = 0x2; } - readonly attribute nullable PHYRateEnum PHYRate = 0; - readonly attribute nullable boolean fullDuplex = 1; - readonly attribute int64u packetRxCount = 2; - readonly attribute int64u packetTxCount = 3; - readonly attribute int64u txErrCount = 4; - readonly attribute int64u collisionCount = 5; - readonly attribute int64u overrunCount = 6; - readonly attribute nullable boolean carrierDetect = 7; - readonly attribute int64u timeSinceReset = 8; + readonly attribute optional nullable PHYRateEnum PHYRate = 0; + readonly attribute optional nullable boolean fullDuplex = 1; + readonly attribute optional int64u packetRxCount = 2; + readonly attribute optional int64u packetTxCount = 3; + readonly attribute optional int64u txErrCount = 4; + readonly attribute optional int64u collisionCount = 5; + readonly attribute optional int64u overrunCount = 6; + readonly attribute optional nullable boolean carrierDetect = 7; + readonly attribute optional int64u timeSinceReset = 8; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2052,21 +2052,21 @@ client cluster BridgedDeviceBasicInformation = 57 { boolean reachableNewValue = 0; } - readonly attribute char_string<32> vendorName = 1; - readonly attribute vendor_id vendorID = 2; - readonly attribute char_string<32> productName = 3; - attribute char_string<32> nodeLabel = 5; - readonly attribute int16u hardwareVersion = 7; - readonly attribute char_string<64> hardwareVersionString = 8; - readonly attribute int32u softwareVersion = 9; - readonly attribute char_string<64> softwareVersionString = 10; - readonly attribute char_string<16> manufacturingDate = 11; - readonly attribute char_string<32> partNumber = 12; - readonly attribute long_char_string<256> productURL = 13; - readonly attribute char_string<64> productLabel = 14; - readonly attribute char_string<32> serialNumber = 15; + readonly attribute optional char_string<32> vendorName = 1; + readonly attribute optional vendor_id vendorID = 2; + readonly attribute optional char_string<32> productName = 3; + attribute optional char_string<32> nodeLabel = 5; + readonly attribute optional int16u hardwareVersion = 7; + readonly attribute optional char_string<64> hardwareVersionString = 8; + readonly attribute optional int32u softwareVersion = 9; + readonly attribute optional char_string<64> softwareVersionString = 10; + readonly attribute optional char_string<16> manufacturingDate = 11; + readonly attribute optional char_string<32> partNumber = 12; + readonly attribute optional long_char_string<256> productURL = 13; + readonly attribute optional char_string<64> productLabel = 14; + readonly attribute optional char_string<32> serialNumber = 15; readonly attribute boolean reachable = 17; - readonly attribute char_string<32> uniqueID = 18; + readonly attribute optional char_string<32> uniqueID = 18; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2119,7 +2119,7 @@ client cluster Switch = 59 { readonly attribute int8u numberOfPositions = 0; readonly attribute int8u currentPosition = 1; - readonly attribute int8u multiPressMax = 2; + readonly attribute optional int8u multiPressMax = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2441,8 +2441,8 @@ client cluster ModeSelect = 80 { readonly attribute nullable enum16 standardNamespace = 1; readonly attribute ModeOptionStruct supportedModes[] = 2; readonly attribute int8u currentMode = 3; - attribute nullable int8u startUpMode = 4; - attribute nullable int8u onMode = 5; + attribute optional nullable int8u startUpMode = 4; + attribute optional nullable int8u onMode = 5; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2836,39 +2836,39 @@ client cluster DoorLock = 257 { readonly attribute nullable DlLockState lockState = 0; readonly attribute DlLockType lockType = 1; readonly attribute boolean actuatorEnabled = 2; - readonly attribute nullable DoorStateEnum doorState = 3; - attribute access(write: manage) int32u doorOpenEvents = 4; - attribute access(write: manage) int32u doorClosedEvents = 5; - attribute access(write: manage) int16u openPeriod = 6; - readonly attribute int16u numberOfTotalUsersSupported = 17; - readonly attribute int16u numberOfPINUsersSupported = 18; - readonly attribute int16u numberOfRFIDUsersSupported = 19; - readonly attribute int8u numberOfWeekDaySchedulesSupportedPerUser = 20; - readonly attribute int8u numberOfYearDaySchedulesSupportedPerUser = 21; - readonly attribute int8u numberOfHolidaySchedulesSupported = 22; - readonly attribute int8u maxPINCodeLength = 23; - readonly attribute int8u minPINCodeLength = 24; - readonly attribute int8u maxRFIDCodeLength = 25; - readonly attribute int8u minRFIDCodeLength = 26; - readonly attribute DlCredentialRuleMask credentialRulesSupport = 27; - readonly attribute int8u numberOfCredentialsSupportedPerUser = 28; - attribute access(write: manage) char_string<3> language = 33; - attribute access(write: manage) int8u LEDSettings = 34; + readonly attribute optional nullable DoorStateEnum doorState = 3; + attribute access(write: manage) optional int32u doorOpenEvents = 4; + attribute access(write: manage) optional int32u doorClosedEvents = 5; + attribute access(write: manage) optional int16u openPeriod = 6; + readonly attribute optional int16u numberOfTotalUsersSupported = 17; + readonly attribute optional int16u numberOfPINUsersSupported = 18; + readonly attribute optional int16u numberOfRFIDUsersSupported = 19; + readonly attribute optional int8u numberOfWeekDaySchedulesSupportedPerUser = 20; + readonly attribute optional int8u numberOfYearDaySchedulesSupportedPerUser = 21; + readonly attribute optional int8u numberOfHolidaySchedulesSupported = 22; + readonly attribute optional int8u maxPINCodeLength = 23; + readonly attribute optional int8u minPINCodeLength = 24; + readonly attribute optional int8u maxRFIDCodeLength = 25; + readonly attribute optional int8u minRFIDCodeLength = 26; + readonly attribute optional DlCredentialRuleMask credentialRulesSupport = 27; + readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28; + attribute access(write: manage) optional char_string<3> language = 33; + attribute access(write: manage) optional int8u LEDSettings = 34; attribute access(write: manage) int32u autoRelockTime = 35; - attribute access(write: manage) int8u soundVolume = 36; + attribute access(write: manage) optional int8u soundVolume = 36; attribute access(write: manage) OperatingModeEnum operatingMode = 37; readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38; - readonly attribute DlDefaultConfigurationRegister defaultConfigurationRegister = 39; - attribute access(write: administer) boolean enableLocalProgramming = 40; - attribute access(write: manage) boolean enableOneTouchLocking = 41; - attribute access(write: manage) boolean enableInsideStatusLED = 42; - attribute access(write: manage) boolean enablePrivacyModeButton = 43; - attribute access(write: administer) DlLocalProgrammingFeatures localProgrammingFeatures = 44; - attribute access(write: administer) int8u wrongCodeEntryLimit = 48; - attribute access(write: administer) int8u userCodeTemporaryDisableTime = 49; - attribute access(write: administer) boolean sendPINOverTheAir = 50; - attribute access(write: administer) boolean requirePINforRemoteOperation = 51; - attribute access(write: administer) int16u expiringUserTimeout = 53; + readonly attribute optional DlDefaultConfigurationRegister defaultConfigurationRegister = 39; + attribute access(write: administer) optional boolean enableLocalProgramming = 40; + attribute access(write: manage) optional boolean enableOneTouchLocking = 41; + attribute access(write: manage) optional boolean enableInsideStatusLED = 42; + attribute access(write: manage) optional boolean enablePrivacyModeButton = 43; + attribute access(write: administer) optional DlLocalProgrammingFeatures localProgrammingFeatures = 44; + attribute access(write: administer) optional int8u wrongCodeEntryLimit = 48; + attribute access(write: administer) optional int8u userCodeTemporaryDisableTime = 49; + attribute access(write: administer) optional boolean sendPINOverTheAir = 50; + attribute access(write: administer) optional boolean requirePINforRemoteOperation = 51; + attribute access(write: administer) optional int16u expiringUserTimeout = 53; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3159,27 +3159,27 @@ client cluster WindowCovering = 258 { } readonly attribute Type type = 0; - readonly attribute int16u physicalClosedLimitLift = 1; - readonly attribute int16u physicalClosedLimitTilt = 2; - readonly attribute nullable int16u currentPositionLift = 3; - readonly attribute nullable int16u currentPositionTilt = 4; - readonly attribute int16u numberOfActuationsLift = 5; - readonly attribute int16u numberOfActuationsTilt = 6; + readonly attribute optional int16u physicalClosedLimitLift = 1; + readonly attribute optional int16u physicalClosedLimitTilt = 2; + readonly attribute optional nullable int16u currentPositionLift = 3; + readonly attribute optional nullable int16u currentPositionTilt = 4; + readonly attribute optional int16u numberOfActuationsLift = 5; + readonly attribute optional int16u numberOfActuationsTilt = 6; readonly attribute ConfigStatus configStatus = 7; - readonly attribute nullable Percent currentPositionLiftPercentage = 8; - readonly attribute nullable Percent currentPositionTiltPercentage = 9; + readonly attribute optional nullable Percent currentPositionLiftPercentage = 8; + readonly attribute optional nullable Percent currentPositionTiltPercentage = 9; readonly attribute OperationalStatus operationalStatus = 10; - readonly attribute nullable Percent100ths targetPositionLiftPercent100ths = 11; - readonly attribute nullable Percent100ths targetPositionTiltPercent100ths = 12; + readonly attribute optional nullable Percent100ths targetPositionLiftPercent100ths = 11; + readonly attribute optional nullable Percent100ths targetPositionTiltPercent100ths = 12; readonly attribute EndProductType endProductType = 13; - readonly attribute nullable Percent100ths currentPositionLiftPercent100ths = 14; - readonly attribute nullable Percent100ths currentPositionTiltPercent100ths = 15; - readonly attribute int16u installedOpenLimitLift = 16; - readonly attribute int16u installedClosedLimitLift = 17; - readonly attribute int16u installedOpenLimitTilt = 18; - readonly attribute int16u installedClosedLimitTilt = 19; + readonly attribute optional nullable Percent100ths currentPositionLiftPercent100ths = 14; + readonly attribute optional nullable Percent100ths currentPositionTiltPercent100ths = 15; + readonly attribute optional int16u installedOpenLimitLift = 16; + readonly attribute optional int16u installedClosedLimitLift = 17; + readonly attribute optional int16u installedOpenLimitTilt = 18; + readonly attribute optional int16u installedClosedLimitTilt = 19; attribute access(write: manage) Mode mode = 23; - readonly attribute SafetyStatus safetyStatus = 26; + readonly attribute optional SafetyStatus safetyStatus = 26; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3224,12 +3224,12 @@ client cluster BarrierControl = 259 { readonly attribute enum8 barrierMovingState = 1; readonly attribute bitmap16 barrierSafetyStatus = 2; readonly attribute bitmap8 barrierCapabilities = 3; - attribute int16u barrierOpenEvents = 4; - attribute int16u barrierCloseEvents = 5; - attribute int16u barrierCommandOpenEvents = 6; - attribute int16u barrierCommandCloseEvents = 7; - attribute int16u barrierOpenPeriod = 8; - attribute int16u barrierClosePeriod = 9; + attribute optional int16u barrierOpenEvents = 4; + attribute optional int16u barrierCloseEvents = 5; + attribute optional int16u barrierCommandOpenEvents = 6; + attribute optional int16u barrierCommandCloseEvents = 7; + attribute optional int16u barrierOpenPeriod = 8; + attribute optional int16u barrierClosePeriod = 9; readonly attribute int8u barrierPosition = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -3342,26 +3342,26 @@ client cluster PumpConfigurationAndControl = 512 { readonly attribute nullable int16s maxPressure = 0; readonly attribute nullable int16u maxSpeed = 1; readonly attribute nullable int16u maxFlow = 2; - readonly attribute nullable int16s minConstPressure = 3; - readonly attribute nullable int16s maxConstPressure = 4; - readonly attribute nullable int16s minCompPressure = 5; - readonly attribute nullable int16s maxCompPressure = 6; - readonly attribute nullable int16u minConstSpeed = 7; - readonly attribute nullable int16u maxConstSpeed = 8; - readonly attribute nullable int16u minConstFlow = 9; - readonly attribute nullable int16u maxConstFlow = 10; - readonly attribute nullable int16s minConstTemp = 11; - readonly attribute nullable int16s maxConstTemp = 12; - readonly attribute PumpStatusBitmap pumpStatus = 16; + readonly attribute optional nullable int16s minConstPressure = 3; + readonly attribute optional nullable int16s maxConstPressure = 4; + readonly attribute optional nullable int16s minCompPressure = 5; + readonly attribute optional nullable int16s maxCompPressure = 6; + readonly attribute optional nullable int16u minConstSpeed = 7; + readonly attribute optional nullable int16u maxConstSpeed = 8; + readonly attribute optional nullable int16u minConstFlow = 9; + readonly attribute optional nullable int16u maxConstFlow = 10; + readonly attribute optional nullable int16s minConstTemp = 11; + readonly attribute optional nullable int16s maxConstTemp = 12; + readonly attribute optional PumpStatusBitmap pumpStatus = 16; readonly attribute OperationModeEnum effectiveOperationMode = 17; readonly attribute ControlModeEnum effectiveControlMode = 18; readonly attribute nullable int16s capacity = 19; - readonly attribute nullable int16u speed = 20; - attribute access(write: manage) nullable int24u lifetimeRunningHours = 21; - readonly attribute nullable int24u power = 22; - attribute access(write: manage) nullable int32u lifetimeEnergyConsumed = 23; + readonly attribute optional nullable int16u speed = 20; + attribute access(write: manage) optional nullable int24u lifetimeRunningHours = 21; + readonly attribute optional nullable int24u power = 22; + attribute access(write: manage) optional nullable int32u lifetimeEnergyConsumed = 23; attribute access(write: manage) OperationModeEnum operationMode = 32; - attribute access(write: manage) ControlModeEnum controlMode = 33; + attribute access(write: manage) optional ControlModeEnum controlMode = 33; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3437,54 +3437,54 @@ client cluster Thermostat = 513 { } readonly attribute nullable int16s localTemperature = 0; - readonly attribute nullable int16s outdoorTemperature = 1; - readonly attribute bitmap8 occupancy = 2; - readonly attribute int16s absMinHeatSetpointLimit = 3; - readonly attribute int16s absMaxHeatSetpointLimit = 4; - readonly attribute int16s absMinCoolSetpointLimit = 5; - readonly attribute int16s absMaxCoolSetpointLimit = 6; - readonly attribute int8u PICoolingDemand = 7; - readonly attribute int8u PIHeatingDemand = 8; - attribute access(write: manage) bitmap8 HVACSystemTypeConfiguration = 9; - attribute access(write: manage) int8s localTemperatureCalibration = 16; - attribute int16s occupiedCoolingSetpoint = 17; - attribute int16s occupiedHeatingSetpoint = 18; - attribute int16s unoccupiedCoolingSetpoint = 19; - attribute int16s unoccupiedHeatingSetpoint = 20; - attribute access(write: manage) int16s minHeatSetpointLimit = 21; - attribute access(write: manage) int16s maxHeatSetpointLimit = 22; - attribute access(write: manage) int16s minCoolSetpointLimit = 23; - attribute access(write: manage) int16s maxCoolSetpointLimit = 24; - attribute access(write: manage) int8s minSetpointDeadBand = 25; - attribute access(write: manage) bitmap8 remoteSensing = 26; + readonly attribute optional nullable int16s outdoorTemperature = 1; + readonly attribute optional bitmap8 occupancy = 2; + readonly attribute optional int16s absMinHeatSetpointLimit = 3; + readonly attribute optional int16s absMaxHeatSetpointLimit = 4; + readonly attribute optional int16s absMinCoolSetpointLimit = 5; + readonly attribute optional int16s absMaxCoolSetpointLimit = 6; + readonly attribute optional int8u PICoolingDemand = 7; + readonly attribute optional int8u PIHeatingDemand = 8; + attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9; + attribute access(write: manage) optional int8s localTemperatureCalibration = 16; + attribute optional int16s occupiedCoolingSetpoint = 17; + attribute optional int16s occupiedHeatingSetpoint = 18; + attribute optional int16s unoccupiedCoolingSetpoint = 19; + attribute optional int16s unoccupiedHeatingSetpoint = 20; + attribute access(write: manage) optional int16s minHeatSetpointLimit = 21; + attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22; + attribute access(write: manage) optional int16s minCoolSetpointLimit = 23; + attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24; + attribute access(write: manage) optional int8s minSetpointDeadBand = 25; + attribute access(write: manage) optional bitmap8 remoteSensing = 26; attribute access(write: manage) ThermostatControlSequence controlSequenceOfOperation = 27; attribute access(write: manage) enum8 systemMode = 28; - readonly attribute enum8 thermostatRunningMode = 30; - readonly attribute enum8 startOfWeek = 32; - readonly attribute int8u numberOfWeeklyTransitions = 33; - readonly attribute int8u numberOfDailyTransitions = 34; - attribute access(write: manage) enum8 temperatureSetpointHold = 35; - attribute access(write: manage) nullable int16u temperatureSetpointHoldDuration = 36; - attribute access(write: manage) bitmap8 thermostatProgrammingOperationMode = 37; - readonly attribute bitmap16 thermostatRunningState = 41; - readonly attribute enum8 setpointChangeSource = 48; - readonly attribute nullable int16s setpointChangeAmount = 49; - readonly attribute epoch_s setpointChangeSourceTimestamp = 50; - attribute access(write: manage) nullable int8u occupiedSetback = 52; - readonly attribute nullable int8u occupiedSetbackMin = 53; - readonly attribute nullable int8u occupiedSetbackMax = 54; - attribute access(write: manage) nullable int8u unoccupiedSetback = 55; - readonly attribute nullable int8u unoccupiedSetbackMin = 56; - readonly attribute nullable int8u unoccupiedSetbackMax = 57; - attribute access(write: manage) int8u emergencyHeatDelta = 58; - attribute access(write: manage) enum8 ACType = 64; - attribute access(write: manage) int16u ACCapacity = 65; - attribute access(write: manage) enum8 ACRefrigerantType = 66; - attribute access(write: manage) enum8 ACCompressorType = 67; - attribute access(write: manage) bitmap32 ACErrorCode = 68; - attribute access(write: manage) enum8 ACLouverPosition = 69; - readonly attribute nullable int16s ACCoilTemperature = 70; - attribute access(write: manage) enum8 ACCapacityformat = 71; + readonly attribute optional enum8 thermostatRunningMode = 30; + readonly attribute optional enum8 startOfWeek = 32; + readonly attribute optional int8u numberOfWeeklyTransitions = 33; + readonly attribute optional int8u numberOfDailyTransitions = 34; + attribute access(write: manage) optional enum8 temperatureSetpointHold = 35; + attribute access(write: manage) optional nullable int16u temperatureSetpointHoldDuration = 36; + attribute access(write: manage) optional bitmap8 thermostatProgrammingOperationMode = 37; + readonly attribute optional bitmap16 thermostatRunningState = 41; + readonly attribute optional enum8 setpointChangeSource = 48; + readonly attribute optional nullable int16s setpointChangeAmount = 49; + readonly attribute optional epoch_s setpointChangeSourceTimestamp = 50; + attribute access(write: manage) optional nullable int8u occupiedSetback = 52; + readonly attribute optional nullable int8u occupiedSetbackMin = 53; + readonly attribute optional nullable int8u occupiedSetbackMax = 54; + attribute access(write: manage) optional nullable int8u unoccupiedSetback = 55; + readonly attribute optional nullable int8u unoccupiedSetbackMin = 56; + readonly attribute optional nullable int8u unoccupiedSetbackMax = 57; + attribute access(write: manage) optional int8u emergencyHeatDelta = 58; + attribute access(write: manage) optional enum8 ACType = 64; + attribute access(write: manage) optional int16u ACCapacity = 65; + attribute access(write: manage) optional enum8 ACRefrigerantType = 66; + attribute access(write: manage) optional enum8 ACCompressorType = 67; + attribute access(write: manage) optional bitmap32 ACErrorCode = 68; + attribute access(write: manage) optional enum8 ACLouverPosition = 69; + readonly attribute optional nullable int16s ACCoilTemperature = 70; + attribute access(write: manage) optional enum8 ACCapacityformat = 71; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3574,13 +3574,13 @@ client cluster FanControl = 514 { attribute FanModeSequenceType fanModeSequence = 1; attribute nullable int8u percentSetting = 2; readonly attribute int8u percentCurrent = 3; - readonly attribute int8u speedMax = 4; - attribute nullable int8u speedSetting = 5; - readonly attribute int8u speedCurrent = 6; - readonly attribute bitmap8 rockSupport = 7; - attribute bitmap8 rockSetting = 8; - readonly attribute bitmap8 windSupport = 9; - attribute bitmap8 windSetting = 10; + readonly attribute optional int8u speedMax = 4; + attribute optional nullable int8u speedSetting = 5; + readonly attribute optional int8u speedCurrent = 6; + readonly attribute optional bitmap8 rockSupport = 7; + attribute optional bitmap8 rockSetting = 8; + readonly attribute optional bitmap8 windSupport = 9; + attribute optional bitmap8 windSetting = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3593,7 +3593,7 @@ client cluster FanControl = 514 { client cluster ThermostatUserInterfaceConfiguration = 516 { attribute enum8 temperatureDisplayMode = 0; attribute access(write: manage) enum8 keypadLockout = 1; - attribute access(write: manage) enum8 scheduleProgrammingVisibility = 2; + attribute access(write: manage) optional enum8 scheduleProgrammingVisibility = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3673,58 +3673,58 @@ client cluster ColorControl = 768 { kUpdateStartHue = 0x8; } - readonly attribute int8u currentHue = 0; - readonly attribute int8u currentSaturation = 1; - readonly attribute int16u remainingTime = 2; - readonly attribute int16u currentX = 3; - readonly attribute int16u currentY = 4; - readonly attribute enum8 driftCompensation = 5; - readonly attribute char_string<254> compensationText = 6; - readonly attribute int16u colorTemperatureMireds = 7; + readonly attribute optional int8u currentHue = 0; + readonly attribute optional int8u currentSaturation = 1; + readonly attribute optional int16u remainingTime = 2; + readonly attribute optional int16u currentX = 3; + readonly attribute optional int16u currentY = 4; + readonly attribute optional enum8 driftCompensation = 5; + readonly attribute optional char_string<254> compensationText = 6; + readonly attribute optional int16u colorTemperatureMireds = 7; readonly attribute enum8 colorMode = 8; attribute bitmap8 options = 15; readonly attribute nullable int8u numberOfPrimaries = 16; - readonly attribute int16u primary1X = 17; - readonly attribute int16u primary1Y = 18; - readonly attribute nullable int8u primary1Intensity = 19; - readonly attribute int16u primary2X = 21; - readonly attribute int16u primary2Y = 22; - readonly attribute nullable int8u primary2Intensity = 23; - readonly attribute int16u primary3X = 25; - readonly attribute int16u primary3Y = 26; - readonly attribute nullable int8u primary3Intensity = 27; - readonly attribute int16u primary4X = 32; - readonly attribute int16u primary4Y = 33; - readonly attribute nullable int8u primary4Intensity = 34; - readonly attribute int16u primary5X = 36; - readonly attribute int16u primary5Y = 37; - readonly attribute nullable int8u primary5Intensity = 38; - readonly attribute int16u primary6X = 40; - readonly attribute int16u primary6Y = 41; - readonly attribute nullable int8u primary6Intensity = 42; - attribute access(write: manage) int16u whitePointX = 48; - attribute access(write: manage) int16u whitePointY = 49; - attribute access(write: manage) int16u colorPointRX = 50; - attribute access(write: manage) int16u colorPointRY = 51; - attribute access(write: manage) nullable int8u colorPointRIntensity = 52; - attribute access(write: manage) int16u colorPointGX = 54; - attribute access(write: manage) int16u colorPointGY = 55; - attribute access(write: manage) nullable int8u colorPointGIntensity = 56; - attribute access(write: manage) int16u colorPointBX = 58; - attribute access(write: manage) int16u colorPointBY = 59; - attribute access(write: manage) nullable int8u colorPointBIntensity = 60; - readonly attribute int16u enhancedCurrentHue = 16384; + readonly attribute optional int16u primary1X = 17; + readonly attribute optional int16u primary1Y = 18; + readonly attribute optional nullable int8u primary1Intensity = 19; + readonly attribute optional int16u primary2X = 21; + readonly attribute optional int16u primary2Y = 22; + readonly attribute optional nullable int8u primary2Intensity = 23; + readonly attribute optional int16u primary3X = 25; + readonly attribute optional int16u primary3Y = 26; + readonly attribute optional nullable int8u primary3Intensity = 27; + readonly attribute optional int16u primary4X = 32; + readonly attribute optional int16u primary4Y = 33; + readonly attribute optional nullable int8u primary4Intensity = 34; + readonly attribute optional int16u primary5X = 36; + readonly attribute optional int16u primary5Y = 37; + readonly attribute optional nullable int8u primary5Intensity = 38; + readonly attribute optional int16u primary6X = 40; + readonly attribute optional int16u primary6Y = 41; + readonly attribute optional nullable int8u primary6Intensity = 42; + attribute access(write: manage) optional int16u whitePointX = 48; + attribute access(write: manage) optional int16u whitePointY = 49; + attribute access(write: manage) optional int16u colorPointRX = 50; + attribute access(write: manage) optional int16u colorPointRY = 51; + attribute access(write: manage) optional nullable int8u colorPointRIntensity = 52; + attribute access(write: manage) optional int16u colorPointGX = 54; + attribute access(write: manage) optional int16u colorPointGY = 55; + attribute access(write: manage) optional nullable int8u colorPointGIntensity = 56; + attribute access(write: manage) optional int16u colorPointBX = 58; + attribute access(write: manage) optional int16u colorPointBY = 59; + attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60; + readonly attribute optional int16u enhancedCurrentHue = 16384; readonly attribute enum8 enhancedColorMode = 16385; - readonly attribute int8u colorLoopActive = 16386; - readonly attribute int8u colorLoopDirection = 16387; - readonly attribute int16u colorLoopTime = 16388; - readonly attribute int16u colorLoopStartEnhancedHue = 16389; - readonly attribute int16u colorLoopStoredEnhancedHue = 16390; + readonly attribute optional int8u colorLoopActive = 16386; + readonly attribute optional int8u colorLoopDirection = 16387; + readonly attribute optional int16u colorLoopTime = 16388; + readonly attribute optional int16u colorLoopStartEnhancedHue = 16389; + readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390; readonly attribute bitmap16 colorCapabilities = 16394; - readonly attribute int16u colorTempPhysicalMinMireds = 16395; - readonly attribute int16u colorTempPhysicalMaxMireds = 16396; - readonly attribute int16u coupleColorTempToLevelMinMireds = 16397; - attribute access(write: manage) nullable int16u startUpColorTemperatureMireds = 16400; + readonly attribute optional int16u colorTempPhysicalMinMireds = 16395; + readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396; + readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397; + attribute access(write: manage) optional nullable int16u startUpColorTemperatureMireds = 16400; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3924,18 +3924,18 @@ client cluster ColorControl = 768 { client cluster BallastConfiguration = 769 { readonly attribute int8u physicalMinLevel = 0; readonly attribute int8u physicalMaxLevel = 1; - readonly attribute bitmap8 ballastStatus = 2; + readonly attribute optional bitmap8 ballastStatus = 2; attribute int8u minLevel = 16; attribute int8u maxLevel = 17; - attribute nullable int8u intrinsicBallastFactor = 20; - attribute nullable int8u ballastFactorAdjustment = 21; + attribute optional nullable int8u intrinsicBallastFactor = 20; + attribute optional nullable int8u ballastFactorAdjustment = 21; readonly attribute int8u lampQuantity = 32; - attribute char_string<16> lampType = 48; - attribute char_string<16> lampManufacturer = 49; - attribute nullable int24u lampRatedHours = 50; - attribute nullable int24u lampBurnHours = 51; - attribute bitmap8 lampAlarmMode = 52; - attribute nullable int24u lampBurnHoursTripPoint = 53; + attribute optional char_string<16> lampType = 48; + attribute optional char_string<16> lampManufacturer = 49; + attribute optional nullable int24u lampRatedHours = 50; + attribute optional nullable int24u lampBurnHours = 51; + attribute optional bitmap8 lampAlarmMode = 52; + attribute optional nullable int24u lampBurnHoursTripPoint = 53; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3954,8 +3954,8 @@ client cluster IlluminanceMeasurement = 1024 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; - readonly attribute nullable enum8 lightSensorType = 4; + readonly attribute optional int16u tolerance = 3; + readonly attribute optional nullable enum8 lightSensorType = 4; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3969,7 +3969,7 @@ client cluster TemperatureMeasurement = 1026 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; readonly attribute nullable int16s maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3987,12 +3987,12 @@ client cluster PressureMeasurement = 1027 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; readonly attribute nullable int16s maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; - readonly attribute nullable int16s scaledValue = 16; - readonly attribute nullable int16s minScaledValue = 17; - readonly attribute nullable int16s maxScaledValue = 18; - readonly attribute int16u scaledTolerance = 19; - readonly attribute int8s scale = 20; + readonly attribute optional int16u tolerance = 3; + readonly attribute optional nullable int16s scaledValue = 16; + readonly attribute optional nullable int16s minScaledValue = 17; + readonly attribute optional nullable int16s maxScaledValue = 18; + readonly attribute optional int16u scaledTolerance = 19; + readonly attribute optional int8s scale = 20; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4006,7 +4006,7 @@ client cluster FlowMeasurement = 1028 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4020,7 +4020,7 @@ client cluster RelativeHumidityMeasurement = 1029 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4051,15 +4051,15 @@ client cluster OccupancySensing = 1030 { readonly attribute OccupancyBitmap occupancy = 0; readonly attribute OccupancySensorTypeEnum occupancySensorType = 1; readonly attribute OccupancySensorTypeBitmap occupancySensorTypeBitmap = 2; - attribute access(write: manage) int16u PIROccupiedToUnoccupiedDelay = 16; - attribute access(write: manage) int16u PIRUnoccupiedToOccupiedDelay = 17; - attribute access(write: manage) int8u PIRUnoccupiedToOccupiedThreshold = 18; - attribute access(write: manage) int16u ultrasonicOccupiedToUnoccupiedDelay = 32; - attribute access(write: manage) int16u ultrasonicUnoccupiedToOccupiedDelay = 33; - attribute access(write: manage) int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; - attribute access(write: manage) int16u physicalContactOccupiedToUnoccupiedDelay = 48; - attribute access(write: manage) int16u physicalContactUnoccupiedToOccupiedDelay = 49; - attribute access(write: manage) int8u physicalContactUnoccupiedToOccupiedThreshold = 50; + attribute access(write: manage) optional int16u PIROccupiedToUnoccupiedDelay = 16; + attribute access(write: manage) optional int16u PIRUnoccupiedToOccupiedDelay = 17; + attribute access(write: manage) optional int8u PIRUnoccupiedToOccupiedThreshold = 18; + attribute access(write: manage) optional int16u ultrasonicOccupiedToUnoccupiedDelay = 32; + attribute access(write: manage) optional int16u ultrasonicUnoccupiedToOccupiedDelay = 33; + attribute access(write: manage) optional int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; + attribute access(write: manage) optional int16u physicalContactOccupiedToUnoccupiedDelay = 48; + attribute access(write: manage) optional int16u physicalContactUnoccupiedToOccupiedDelay = 49; + attribute access(write: manage) optional int8u physicalContactUnoccupiedToOccupiedThreshold = 50; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4070,7 +4070,7 @@ client cluster OccupancySensing = 1030 { /** 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 optional char_string<32> MACAddress = 0; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4111,9 +4111,9 @@ client cluster Channel = 1284 { LineupInfoTypeEnum lineupInfoType = 3; } - readonly attribute ChannelInfoStruct channelList[] = 0; - readonly attribute nullable LineupInfoStruct lineup = 1; - readonly attribute nullable ChannelInfoStruct currentChannel = 2; + readonly attribute optional ChannelInfoStruct channelList[] = 0; + readonly attribute optional nullable LineupInfoStruct lineup = 1; + readonly attribute optional nullable ChannelInfoStruct currentChannel = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4161,7 +4161,7 @@ client cluster TargetNavigator = 1285 { } readonly attribute TargetInfoStruct targetList[] = 0; - readonly attribute int8u currentTarget = 1; + readonly attribute optional int8u currentTarget = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4212,12 +4212,12 @@ client cluster MediaPlayback = 1286 { } readonly attribute PlaybackStateEnum currentState = 0; - readonly attribute nullable epoch_us startTime = 1; - readonly attribute nullable int64u duration = 2; - readonly attribute nullable PlaybackPositionStruct sampledPosition = 3; - readonly attribute single playbackSpeed = 4; - readonly attribute nullable int64u seekRangeEnd = 5; - readonly attribute nullable int64u seekRangeStart = 6; + readonly attribute optional nullable epoch_us startTime = 1; + readonly attribute optional nullable int64u duration = 2; + readonly attribute optional nullable PlaybackPositionStruct sampledPosition = 3; + readonly attribute optional single playbackSpeed = 4; + readonly attribute optional nullable int64u seekRangeEnd = 5; + readonly attribute optional nullable int64u seekRangeStart = 6; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4533,8 +4533,8 @@ client cluster ContentLauncher = 1290 { optional StyleInformationStruct waterMark = 5; } - readonly attribute CHAR_STRING acceptHeader[] = 0; - attribute bitmap32 supportedStreamingProtocols = 1; + readonly attribute optional CHAR_STRING acceptHeader[] = 0; + attribute optional bitmap32 supportedStreamingProtocols = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4587,7 +4587,7 @@ client cluster AudioOutput = 1291 { } readonly attribute OutputInfoStruct outputList[] = 0; - readonly attribute int8u currentOutput = 1; + readonly attribute optional int8u currentOutput = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4632,8 +4632,8 @@ client cluster ApplicationLauncher = 1292 { optional endpoint_no endpoint = 1; } - readonly attribute INT16U catalogList[] = 0; - attribute nullable ApplicationEPStruct currentApp = 1; + readonly attribute optional INT16U catalogList[] = 0; + attribute optional nullable ApplicationEPStruct currentApp = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4681,10 +4681,10 @@ client cluster ApplicationBasic = 1293 { char_string applicationID = 1; } - readonly attribute char_string<32> vendorName = 0; - readonly attribute vendor_id vendorID = 1; + readonly attribute optional char_string<32> vendorName = 0; + readonly attribute optional vendor_id vendorID = 1; readonly attribute char_string<32> applicationName = 2; - readonly attribute int16u productID = 3; + readonly attribute optional int16u productID = 3; readonly attribute ApplicationStruct application = 4; readonly attribute ApplicationStatusEnum status = 5; readonly attribute char_string<32> applicationVersion = 6; @@ -4729,134 +4729,134 @@ client cluster AccountLogin = 1294 { /** 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; - readonly attribute int16s dcVoltageMin = 257; - readonly attribute int16s dcVoltageMax = 258; - readonly attribute int16s dcCurrent = 259; - readonly attribute int16s dcCurrentMin = 260; - readonly attribute int16s dcCurrentMax = 261; - readonly attribute int16s dcPower = 262; - readonly attribute int16s dcPowerMin = 263; - readonly attribute int16s dcPowerMax = 264; - readonly attribute int16u dcVoltageMultiplier = 512; - readonly attribute int16u dcVoltageDivisor = 513; - readonly attribute int16u dcCurrentMultiplier = 514; - readonly attribute int16u dcCurrentDivisor = 515; - readonly attribute int16u dcPowerMultiplier = 516; - readonly attribute int16u dcPowerDivisor = 517; - readonly attribute int16u acFrequency = 768; - readonly attribute int16u acFrequencyMin = 769; - readonly attribute int16u acFrequencyMax = 770; - readonly attribute int16u neutralCurrent = 771; - readonly attribute int32s totalActivePower = 772; - readonly attribute int32s totalReactivePower = 773; - readonly attribute int32u totalApparentPower = 774; - readonly attribute int16s measured1stHarmonicCurrent = 775; - readonly attribute int16s measured3rdHarmonicCurrent = 776; - readonly attribute int16s measured5thHarmonicCurrent = 777; - readonly attribute int16s measured7thHarmonicCurrent = 778; - readonly attribute int16s measured9thHarmonicCurrent = 779; - readonly attribute int16s measured11thHarmonicCurrent = 780; - readonly attribute int16s measuredPhase1stHarmonicCurrent = 781; - readonly attribute int16s measuredPhase3rdHarmonicCurrent = 782; - readonly attribute int16s measuredPhase5thHarmonicCurrent = 783; - readonly attribute int16s measuredPhase7thHarmonicCurrent = 784; - readonly attribute int16s measuredPhase9thHarmonicCurrent = 785; - readonly attribute int16s measuredPhase11thHarmonicCurrent = 786; - readonly attribute int16u acFrequencyMultiplier = 1024; - readonly attribute int16u acFrequencyDivisor = 1025; - readonly attribute int32u powerMultiplier = 1026; - readonly attribute int32u powerDivisor = 1027; - readonly attribute int8s harmonicCurrentMultiplier = 1028; - readonly attribute int8s phaseHarmonicCurrentMultiplier = 1029; - readonly attribute int16s instantaneousVoltage = 1280; - readonly attribute int16u instantaneousLineCurrent = 1281; - readonly attribute int16s instantaneousActiveCurrent = 1282; - readonly attribute int16s instantaneousReactiveCurrent = 1283; - readonly attribute int16s instantaneousPower = 1284; - readonly attribute int16u rmsVoltage = 1285; - readonly attribute int16u rmsVoltageMin = 1286; - readonly attribute int16u rmsVoltageMax = 1287; - readonly attribute int16u rmsCurrent = 1288; - readonly attribute int16u rmsCurrentMin = 1289; - readonly attribute int16u rmsCurrentMax = 1290; - readonly attribute int16s activePower = 1291; - readonly attribute int16s activePowerMin = 1292; - readonly attribute int16s activePowerMax = 1293; - readonly attribute int16s reactivePower = 1294; - readonly attribute int16u apparentPower = 1295; - readonly attribute int8s powerFactor = 1296; - attribute int16u averageRmsVoltageMeasurementPeriod = 1297; - attribute int16u averageRmsUnderVoltageCounter = 1299; - attribute int16u rmsExtremeOverVoltagePeriod = 1300; - attribute int16u rmsExtremeUnderVoltagePeriod = 1301; - attribute int16u rmsVoltageSagPeriod = 1302; - attribute int16u rmsVoltageSwellPeriod = 1303; - readonly attribute int16u acVoltageMultiplier = 1536; - readonly attribute int16u acVoltageDivisor = 1537; - readonly attribute int16u acCurrentMultiplier = 1538; - readonly attribute int16u acCurrentDivisor = 1539; - readonly attribute int16u acPowerMultiplier = 1540; - readonly attribute int16u acPowerDivisor = 1541; - attribute bitmap8 overloadAlarmsMask = 1792; - readonly attribute int16s voltageOverload = 1793; - readonly attribute int16s currentOverload = 1794; - attribute bitmap16 acOverloadAlarmsMask = 2048; - readonly attribute int16s acVoltageOverload = 2049; - readonly attribute int16s acCurrentOverload = 2050; - readonly attribute int16s acActivePowerOverload = 2051; - readonly attribute int16s acReactivePowerOverload = 2052; - readonly attribute int16s averageRmsOverVoltage = 2053; - readonly attribute int16s averageRmsUnderVoltage = 2054; - readonly attribute int16s rmsExtremeOverVoltage = 2055; - readonly attribute int16s rmsExtremeUnderVoltage = 2056; - readonly attribute int16s rmsVoltageSag = 2057; - readonly attribute int16s rmsVoltageSwell = 2058; - readonly attribute int16u lineCurrentPhaseB = 2305; - readonly attribute int16s activeCurrentPhaseB = 2306; - readonly attribute int16s reactiveCurrentPhaseB = 2307; - readonly attribute int16u rmsVoltagePhaseB = 2309; - readonly attribute int16u rmsVoltageMinPhaseB = 2310; - readonly attribute int16u rmsVoltageMaxPhaseB = 2311; - readonly attribute int16u rmsCurrentPhaseB = 2312; - readonly attribute int16u rmsCurrentMinPhaseB = 2313; - readonly attribute int16u rmsCurrentMaxPhaseB = 2314; - readonly attribute int16s activePowerPhaseB = 2315; - readonly attribute int16s activePowerMinPhaseB = 2316; - readonly attribute int16s activePowerMaxPhaseB = 2317; - readonly attribute int16s reactivePowerPhaseB = 2318; - readonly attribute int16u apparentPowerPhaseB = 2319; - readonly attribute int8s powerFactorPhaseB = 2320; - readonly attribute int16u averageRmsVoltageMeasurementPeriodPhaseB = 2321; - readonly attribute int16u averageRmsOverVoltageCounterPhaseB = 2322; - readonly attribute int16u averageRmsUnderVoltageCounterPhaseB = 2323; - readonly attribute int16u rmsExtremeOverVoltagePeriodPhaseB = 2324; - readonly attribute int16u rmsExtremeUnderVoltagePeriodPhaseB = 2325; - readonly attribute int16u rmsVoltageSagPeriodPhaseB = 2326; - readonly attribute int16u rmsVoltageSwellPeriodPhaseB = 2327; - readonly attribute int16u lineCurrentPhaseC = 2561; - readonly attribute int16s activeCurrentPhaseC = 2562; - readonly attribute int16s reactiveCurrentPhaseC = 2563; - readonly attribute int16u rmsVoltagePhaseC = 2565; - readonly attribute int16u rmsVoltageMinPhaseC = 2566; - readonly attribute int16u rmsVoltageMaxPhaseC = 2567; - readonly attribute int16u rmsCurrentPhaseC = 2568; - readonly attribute int16u rmsCurrentMinPhaseC = 2569; - readonly attribute int16u rmsCurrentMaxPhaseC = 2570; - readonly attribute int16s activePowerPhaseC = 2571; - readonly attribute int16s activePowerMinPhaseC = 2572; - readonly attribute int16s activePowerMaxPhaseC = 2573; - readonly attribute int16s reactivePowerPhaseC = 2574; - readonly attribute int16u apparentPowerPhaseC = 2575; - readonly attribute int8s powerFactorPhaseC = 2576; - readonly attribute int16u averageRmsVoltageMeasurementPeriodPhaseC = 2577; - readonly attribute int16u averageRmsOverVoltageCounterPhaseC = 2578; - readonly attribute int16u averageRmsUnderVoltageCounterPhaseC = 2579; - readonly attribute int16u rmsExtremeOverVoltagePeriodPhaseC = 2580; - readonly attribute int16u rmsExtremeUnderVoltagePeriodPhaseC = 2581; - readonly attribute int16u rmsVoltageSagPeriodPhaseC = 2582; - readonly attribute int16u rmsVoltageSwellPeriodPhaseC = 2583; + readonly attribute optional bitmap32 measurementType = 0; + readonly attribute optional int16s dcVoltage = 256; + readonly attribute optional int16s dcVoltageMin = 257; + readonly attribute optional int16s dcVoltageMax = 258; + readonly attribute optional int16s dcCurrent = 259; + readonly attribute optional int16s dcCurrentMin = 260; + readonly attribute optional int16s dcCurrentMax = 261; + readonly attribute optional int16s dcPower = 262; + readonly attribute optional int16s dcPowerMin = 263; + readonly attribute optional int16s dcPowerMax = 264; + readonly attribute optional int16u dcVoltageMultiplier = 512; + readonly attribute optional int16u dcVoltageDivisor = 513; + readonly attribute optional int16u dcCurrentMultiplier = 514; + readonly attribute optional int16u dcCurrentDivisor = 515; + readonly attribute optional int16u dcPowerMultiplier = 516; + readonly attribute optional int16u dcPowerDivisor = 517; + readonly attribute optional int16u acFrequency = 768; + readonly attribute optional int16u acFrequencyMin = 769; + readonly attribute optional int16u acFrequencyMax = 770; + readonly attribute optional int16u neutralCurrent = 771; + readonly attribute optional int32s totalActivePower = 772; + readonly attribute optional int32s totalReactivePower = 773; + readonly attribute optional int32u totalApparentPower = 774; + readonly attribute optional int16s measured1stHarmonicCurrent = 775; + readonly attribute optional int16s measured3rdHarmonicCurrent = 776; + readonly attribute optional int16s measured5thHarmonicCurrent = 777; + readonly attribute optional int16s measured7thHarmonicCurrent = 778; + readonly attribute optional int16s measured9thHarmonicCurrent = 779; + readonly attribute optional int16s measured11thHarmonicCurrent = 780; + readonly attribute optional int16s measuredPhase1stHarmonicCurrent = 781; + readonly attribute optional int16s measuredPhase3rdHarmonicCurrent = 782; + readonly attribute optional int16s measuredPhase5thHarmonicCurrent = 783; + readonly attribute optional int16s measuredPhase7thHarmonicCurrent = 784; + readonly attribute optional int16s measuredPhase9thHarmonicCurrent = 785; + readonly attribute optional int16s measuredPhase11thHarmonicCurrent = 786; + readonly attribute optional int16u acFrequencyMultiplier = 1024; + readonly attribute optional int16u acFrequencyDivisor = 1025; + readonly attribute optional int32u powerMultiplier = 1026; + readonly attribute optional int32u powerDivisor = 1027; + readonly attribute optional int8s harmonicCurrentMultiplier = 1028; + readonly attribute optional int8s phaseHarmonicCurrentMultiplier = 1029; + readonly attribute optional int16s instantaneousVoltage = 1280; + readonly attribute optional int16u instantaneousLineCurrent = 1281; + readonly attribute optional int16s instantaneousActiveCurrent = 1282; + readonly attribute optional int16s instantaneousReactiveCurrent = 1283; + readonly attribute optional int16s instantaneousPower = 1284; + readonly attribute optional int16u rmsVoltage = 1285; + readonly attribute optional int16u rmsVoltageMin = 1286; + readonly attribute optional int16u rmsVoltageMax = 1287; + readonly attribute optional int16u rmsCurrent = 1288; + readonly attribute optional int16u rmsCurrentMin = 1289; + readonly attribute optional int16u rmsCurrentMax = 1290; + readonly attribute optional int16s activePower = 1291; + readonly attribute optional int16s activePowerMin = 1292; + readonly attribute optional int16s activePowerMax = 1293; + readonly attribute optional int16s reactivePower = 1294; + readonly attribute optional int16u apparentPower = 1295; + readonly attribute optional int8s powerFactor = 1296; + attribute optional int16u averageRmsVoltageMeasurementPeriod = 1297; + attribute optional int16u averageRmsUnderVoltageCounter = 1299; + attribute optional int16u rmsExtremeOverVoltagePeriod = 1300; + attribute optional int16u rmsExtremeUnderVoltagePeriod = 1301; + attribute optional int16u rmsVoltageSagPeriod = 1302; + attribute optional int16u rmsVoltageSwellPeriod = 1303; + readonly attribute optional int16u acVoltageMultiplier = 1536; + readonly attribute optional int16u acVoltageDivisor = 1537; + readonly attribute optional int16u acCurrentMultiplier = 1538; + readonly attribute optional int16u acCurrentDivisor = 1539; + readonly attribute optional int16u acPowerMultiplier = 1540; + readonly attribute optional int16u acPowerDivisor = 1541; + attribute optional bitmap8 overloadAlarmsMask = 1792; + readonly attribute optional int16s voltageOverload = 1793; + readonly attribute optional int16s currentOverload = 1794; + attribute optional bitmap16 acOverloadAlarmsMask = 2048; + readonly attribute optional int16s acVoltageOverload = 2049; + readonly attribute optional int16s acCurrentOverload = 2050; + readonly attribute optional int16s acActivePowerOverload = 2051; + readonly attribute optional int16s acReactivePowerOverload = 2052; + readonly attribute optional int16s averageRmsOverVoltage = 2053; + readonly attribute optional int16s averageRmsUnderVoltage = 2054; + readonly attribute optional int16s rmsExtremeOverVoltage = 2055; + readonly attribute optional int16s rmsExtremeUnderVoltage = 2056; + readonly attribute optional int16s rmsVoltageSag = 2057; + readonly attribute optional int16s rmsVoltageSwell = 2058; + readonly attribute optional int16u lineCurrentPhaseB = 2305; + readonly attribute optional int16s activeCurrentPhaseB = 2306; + readonly attribute optional int16s reactiveCurrentPhaseB = 2307; + readonly attribute optional int16u rmsVoltagePhaseB = 2309; + readonly attribute optional int16u rmsVoltageMinPhaseB = 2310; + readonly attribute optional int16u rmsVoltageMaxPhaseB = 2311; + readonly attribute optional int16u rmsCurrentPhaseB = 2312; + readonly attribute optional int16u rmsCurrentMinPhaseB = 2313; + readonly attribute optional int16u rmsCurrentMaxPhaseB = 2314; + readonly attribute optional int16s activePowerPhaseB = 2315; + readonly attribute optional int16s activePowerMinPhaseB = 2316; + readonly attribute optional int16s activePowerMaxPhaseB = 2317; + readonly attribute optional int16s reactivePowerPhaseB = 2318; + readonly attribute optional int16u apparentPowerPhaseB = 2319; + readonly attribute optional int8s powerFactorPhaseB = 2320; + readonly attribute optional int16u averageRmsVoltageMeasurementPeriodPhaseB = 2321; + readonly attribute optional int16u averageRmsOverVoltageCounterPhaseB = 2322; + readonly attribute optional int16u averageRmsUnderVoltageCounterPhaseB = 2323; + readonly attribute optional int16u rmsExtremeOverVoltagePeriodPhaseB = 2324; + readonly attribute optional int16u rmsExtremeUnderVoltagePeriodPhaseB = 2325; + readonly attribute optional int16u rmsVoltageSagPeriodPhaseB = 2326; + readonly attribute optional int16u rmsVoltageSwellPeriodPhaseB = 2327; + readonly attribute optional int16u lineCurrentPhaseC = 2561; + readonly attribute optional int16s activeCurrentPhaseC = 2562; + readonly attribute optional int16s reactiveCurrentPhaseC = 2563; + readonly attribute optional int16u rmsVoltagePhaseC = 2565; + readonly attribute optional int16u rmsVoltageMinPhaseC = 2566; + readonly attribute optional int16u rmsVoltageMaxPhaseC = 2567; + readonly attribute optional int16u rmsCurrentPhaseC = 2568; + readonly attribute optional int16u rmsCurrentMinPhaseC = 2569; + readonly attribute optional int16u rmsCurrentMaxPhaseC = 2570; + readonly attribute optional int16s activePowerPhaseC = 2571; + readonly attribute optional int16s activePowerMinPhaseC = 2572; + readonly attribute optional int16s activePowerMaxPhaseC = 2573; + readonly attribute optional int16s reactivePowerPhaseC = 2574; + readonly attribute optional int16u apparentPowerPhaseC = 2575; + readonly attribute optional int8s powerFactorPhaseC = 2576; + readonly attribute optional int16u averageRmsVoltageMeasurementPeriodPhaseC = 2577; + readonly attribute optional int16u averageRmsOverVoltageCounterPhaseC = 2578; + readonly attribute optional int16u averageRmsUnderVoltageCounterPhaseC = 2579; + readonly attribute optional int16u rmsExtremeOverVoltagePeriodPhaseC = 2580; + readonly attribute optional int16u rmsExtremeUnderVoltagePeriodPhaseC = 2581; + readonly attribute optional int16u rmsVoltageSagPeriodPhaseC = 2582; + readonly attribute optional int16u rmsVoltageSwellPeriodPhaseC = 2583; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -5094,7 +5094,7 @@ client cluster UnitTesting = 4294048773 { timedwrite attribute boolean timedWriteBoolean = 48; attribute boolean generalErrorBoolean = 49; attribute boolean clusterErrorBoolean = 50; - attribute boolean unsupported = 255; + attribute optional boolean unsupported = 255; attribute nullable boolean nullableBoolean = 16384; attribute nullable Bitmap8MaskMap nullableBitmap8 = 16385; attribute nullable Bitmap16MaskMap nullableBitmap16 = 16386; @@ -5128,7 +5128,7 @@ client cluster UnitTesting = 4294048773 { attribute nullable int8s nullableRangeRestrictedInt8s = 16423; attribute nullable int16u nullableRangeRestrictedInt16u = 16424; attribute nullable int16s nullableRangeRestrictedInt16s = 16425; - attribute int8u writeOnlyInt8u = 16426; + attribute optional int8u writeOnlyInt8u = 16426; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530;