diff --git a/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter b/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter index 2c0e078adfd933..308a0f58d69d7b 100644 --- a/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter +++ b/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter @@ -2,8 +2,9 @@ // It is for view/code review purposes only. /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ -server cluster Identify = 3 { - enum EffectIdentifierEnum : ENUM8 { +cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; kOkay = 2; @@ -12,11 +13,11 @@ server cluster Identify = 3 { kStopEffect = 255; } - enum EffectVariantEnum : ENUM8 { + enum EffectVariantEnum : enum8 { kDefault = 0; } - enum IdentifyTypeEnum : ENUM8 { + enum IdentifyTypeEnum : enum8 { kNone = 0; kLightOutput = 1; kVisibleIndicator = 2; @@ -35,7 +36,7 @@ server cluster Identify = 3 { readonly attribute int16u clusterRevision = 65533; request struct IdentifyRequest { - INT16U identifyTime = 0; + int16u identifyTime = 0; } request struct TriggerEffectRequest { @@ -43,13 +44,16 @@ server cluster Identify = 3 { EffectVariantEnum effectVariant = 1; } + /** Command description for Identify */ command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; + /** Command description for TriggerEffect */ command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ -server cluster Descriptor = 29 { - bitmap Feature : BITMAP32 { +cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -66,9 +70,10 @@ server cluster Descriptor = 29 { } readonly attribute DeviceTypeStruct deviceTypeList[] = 0; - readonly attribute CLUSTER_ID serverList[] = 1; - readonly attribute CLUSTER_ID clientList[] = 2; - readonly attribute ENDPOINT_NO partsList[] = 3; + readonly attribute cluster_id serverList[] = 1; + readonly attribute cluster_id clientList[] = 2; + readonly attribute endpoint_no partsList[] = 3; + readonly attribute optional SemanticTagStruct tagList[] = 4; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -81,14 +86,15 @@ server cluster Descriptor = 29 { Node's Access Control List (ACL), which codifies the rules used to manage and enforce Access Control for the Node's endpoints and their associated cluster instances. */ -server cluster AccessControl = 31 { - enum AccessControlEntryAuthModeEnum : ENUM8 { +cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; kGroup = 3; } - enum AccessControlEntryPrivilegeEnum : ENUM8 { + enum AccessControlEntryPrivilegeEnum : enum8 { kView = 1; kProxyView = 2; kOperate = 3; @@ -96,7 +102,7 @@ server cluster AccessControl = 31 { kAdminister = 5; } - enum ChangeTypeEnum : ENUM8 { + enum ChangeTypeEnum : enum8 { kChanged = 0; kAdded = 1; kRemoved = 2; @@ -123,7 +129,7 @@ server cluster AccessControl = 31 { fabric_sensitive info event access(read: administer) AccessControlEntryChanged = 0 { nullable node_id adminNodeID = 1; - nullable INT16U adminPasscodeID = 2; + nullable int16u adminPasscodeID = 2; ChangeTypeEnum changeType = 3; nullable AccessControlEntryStruct latestValue = 4; fabric_idx fabricIndex = 254; @@ -131,14 +137,14 @@ server cluster AccessControl = 31 { fabric_sensitive info event access(read: administer) AccessControlExtensionChanged = 1 { nullable node_id adminNodeID = 1; - nullable INT16U adminPasscodeID = 2; + nullable int16u adminPasscodeID = 2; ChangeTypeEnum changeType = 3; nullable AccessControlExtensionStruct latestValue = 4; fabric_idx fabricIndex = 254; } 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; @@ -153,8 +159,9 @@ server cluster AccessControl = 31 { /** This cluster provides attributes and events for determining basic information about Nodes, which supports both Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ -server cluster BasicInformation = 40 { - enum ColorEnum : ENUM8 { +cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; kGreen = 2; @@ -178,7 +185,7 @@ server cluster BasicInformation = 40 { kGold = 20; } - enum ProductFinishEnum : ENUM8 { + enum ProductFinishEnum : enum8 { kOther = 0; kMatte = 1; kSatin = 2; @@ -198,7 +205,7 @@ server cluster BasicInformation = 40 { } critical event StartUp = 0 { - INT32U softwareVersion = 0; + int32u softwareVersion = 0; } critical event ShutDown = 1 { @@ -223,39 +230,44 @@ server 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 optional ProductAppearanceStruct productAppearance = 20; + readonly attribute int32u specificationVersion = 21; + readonly attribute int16u maxPathsPerInvoke = 22; 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; + command MfgSpecificPing(): DefaultSuccess = 0; } /** Provides an interface for providing OTA software updates */ -client cluster OtaSoftwareUpdateProvider = 41 { - enum OTAApplyUpdateAction : ENUM8 { +cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; kDiscontinue = 2; } - enum OTADownloadProtocol : ENUM8 { + enum DownloadProtocolEnum : enum8 { kBDXSynchronous = 0; kBDXAsynchronous = 1; kHTTPS = 2; kVendorSpecific = 3; } - enum OTAQueryStatus : ENUM8 { + enum StatusEnum : enum8 { kUpdateAvailable = 0; kBusy = 1; kNotAvailable = 2; @@ -271,39 +283,39 @@ client cluster OtaSoftwareUpdateProvider = 41 { request struct QueryImageRequest { vendor_id vendorID = 0; - INT16U productID = 1; - INT32U softwareVersion = 2; - OTADownloadProtocol protocolsSupported[] = 3; - optional INT16U hardwareVersion = 4; - optional CHAR_STRING<2> location = 5; - optional BOOLEAN requestorCanConsent = 6; - optional OCTET_STRING<512> metadataForProvider = 7; + int16u productID = 1; + int32u softwareVersion = 2; + DownloadProtocolEnum protocolsSupported[] = 3; + optional int16u hardwareVersion = 4; + optional char_string<2> location = 5; + optional boolean requestorCanConsent = 6; + optional octet_string<512> metadataForProvider = 7; } response struct QueryImageResponse = 1 { - OTAQueryStatus status = 0; - optional INT32U delayedActionTime = 1; - optional CHAR_STRING<256> imageURI = 2; - optional INT32U softwareVersion = 3; - optional CHAR_STRING<64> softwareVersionString = 4; - optional OCTET_STRING<32> updateToken = 5; - optional BOOLEAN userConsentNeeded = 6; - optional OCTET_STRING<512> metadataForRequestor = 7; + StatusEnum status = 0; + optional int32u delayedActionTime = 1; + optional char_string<256> imageURI = 2; + optional int32u softwareVersion = 3; + optional char_string<64> softwareVersionString = 4; + optional octet_string<32> updateToken = 5; + optional boolean userConsentNeeded = 6; + optional octet_string<512> metadataForRequestor = 7; } request struct ApplyUpdateRequestRequest { - OCTET_STRING<32> updateToken = 0; - INT32U newVersion = 1; + octet_string<32> updateToken = 0; + int32u newVersion = 1; } response struct ApplyUpdateResponse = 3 { - OTAApplyUpdateAction action = 0; - INT32U delayedActionTime = 1; + ApplyUpdateActionEnum action = 0; + int32u delayedActionTime = 1; } request struct NotifyUpdateAppliedRequest { - OCTET_STRING<32> updateToken = 0; - INT32U softwareVersion = 1; + octet_string<32> updateToken = 0; + int32u softwareVersion = 1; } /** Determine availability of a new Software Image */ @@ -315,14 +327,15 @@ client cluster OtaSoftwareUpdateProvider = 41 { } /** Provides an interface for downloading and applying OTA software updates */ -server cluster OtaSoftwareUpdateRequestor = 42 { - enum OTAAnnouncementReason : ENUM8 { +cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; kUrgentUpdateAvailable = 2; } - enum OTAChangeReasonEnum : ENUM8 { + enum ChangeReasonEnum : enum8 { kUnknown = 0; kSuccess = 1; kFailure = 2; @@ -330,7 +343,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { kDelayByProvider = 4; } - enum OTAUpdateStateEnum : ENUM8 { + enum UpdateStateEnum : enum8 { kUnknown = 0; kIdle = 1; kQuerying = 2; @@ -349,27 +362,27 @@ server cluster OtaSoftwareUpdateRequestor = 42 { } info event StateTransition = 0 { - OTAUpdateStateEnum previousState = 0; - OTAUpdateStateEnum newState = 1; - OTAChangeReasonEnum reason = 2; - nullable INT32U targetSoftwareVersion = 3; + UpdateStateEnum previousState = 0; + UpdateStateEnum newState = 1; + ChangeReasonEnum reason = 2; + nullable int32u targetSoftwareVersion = 3; } critical event VersionApplied = 1 { - INT32U softwareVersion = 0; - INT16U productID = 1; + int32u softwareVersion = 0; + int16u productID = 1; } info event DownloadError = 2 { - INT32U softwareVersion = 0; - INT64U bytesDownloaded = 1; - nullable INT8U progressPercent = 2; - nullable INT64S platformCode = 3; + int32u softwareVersion = 0; + int64u bytesDownloaded = 1; + nullable int8u progressPercent = 2; + nullable int64s platformCode = 3; } - attribute ProviderLocation defaultOTAProviders[] = 0; + attribute access(write: administer) ProviderLocation defaultOTAProviders[] = 0; readonly attribute boolean updatePossible = 1; - readonly attribute OTAUpdateStateEnum updateState = 2; + readonly attribute UpdateStateEnum updateState = 2; readonly attribute nullable int8u updateStateProgress = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -381,17 +394,19 @@ server cluster OtaSoftwareUpdateRequestor = 42 { request struct AnnounceOTAProviderRequest { node_id providerNodeID = 0; vendor_id vendorID = 1; - OTAAnnouncementReason announcementReason = 2; - optional OCTET_STRING<512> metadataForNode = 3; + AnnouncementReasonEnum announcementReason = 2; + optional octet_string<512> metadataForNode = 3; endpoint_no endpoint = 4; } + /** Announce the presence of an OTA Provider */ command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } /** This cluster is used to manage global aspects of the Commissioning flow. */ -server cluster GeneralCommissioning = 48 { - enum CommissioningErrorEnum : ENUM8 { +cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; kInvalidAuthentication = 2; @@ -399,7 +414,7 @@ server cluster GeneralCommissioning = 48 { kBusyWithOtherAdmin = 4; } - enum RegulatoryLocationTypeEnum : ENUM8 { + enum RegulatoryLocationTypeEnum : enum8 { kIndoor = 0; kOutdoor = 1; kIndoorOutdoor = 2; @@ -423,39 +438,43 @@ server cluster GeneralCommissioning = 48 { readonly attribute int16u clusterRevision = 65533; request struct ArmFailSafeRequest { - INT16U expiryLengthSeconds = 0; - INT64U breadcrumb = 1; + int16u expiryLengthSeconds = 0; + int64u breadcrumb = 1; } + response struct ArmFailSafeResponse = 1 { + CommissioningErrorEnum errorCode = 0; + char_string<128> debugText = 1; + } request struct SetRegulatoryConfigRequest { RegulatoryLocationTypeEnum newRegulatoryConfig = 0; - CHAR_STRING countryCode = 1; - INT64U breadcrumb = 2; + char_string<2> countryCode = 1; + int64u breadcrumb = 2; } - response struct ArmFailSafeResponse = 1 { - CommissioningErrorEnum errorCode = 0; - CHAR_STRING debugText = 1; - } response struct SetRegulatoryConfigResponse = 3 { CommissioningErrorEnum errorCode = 0; - CHAR_STRING debugText = 1; + char_string debugText = 1; } response struct CommissioningCompleteResponse = 5 { CommissioningErrorEnum errorCode = 0; - CHAR_STRING debugText = 1; + char_string debugText = 1; } + /** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */ command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; + /** Set the regulatory configuration to be used during commissioning */ command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; + /** Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. */ fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ -server cluster NetworkCommissioning = 49 { - enum NetworkCommissioningStatusEnum : ENUM8 { +cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; kBoundsExceeded = 2; @@ -471,7 +490,7 @@ server cluster NetworkCommissioning = 49 { kUnknownError = 12; } - enum WiFiBandEnum : ENUM8 { + enum WiFiBandEnum : enum8 { k2G4 = 0; k3G65 = 1; k5G = 2; @@ -480,23 +499,34 @@ server cluster NetworkCommissioning = 49 { k1G = 5; } - bitmap Feature : BITMAP32 { + bitmap Feature : bitmap32 { kWiFiNetworkInterface = 0x1; kThreadNetworkInterface = 0x2; kEthernetNetworkInterface = 0x4; + kPerDeviceCredentials = 0x8; } - bitmap WiFiSecurityBitmap : BITMAP8 { + bitmap ThreadCapabilitiesBitmap : bitmap16 { + kIsBorderRouterCapable = 0x1; + kIsRouterCapable = 0x2; + kIsSleepyEndDeviceCapable = 0x4; + kIsFullThreadDevice = 0x8; + kIsSynchronizedSleepyEndDeviceCapable = 0x10; + } + bitmap WiFiSecurityBitmap : bitmap8 { kUnencrypted = 0x1; kWEP = 0x2; kWPAPersonal = 0x4; kWPA2Personal = 0x8; kWPA3Personal = 0x10; + kWPA3MatterPDC = 0x20; } struct NetworkInfoStruct { octet_string<32> networkID = 0; boolean connected = 1; + optional nullable octet_string<20> networkIdentifier = 2; + optional nullable octet_string<20> clientIdentifier = 3; } struct ThreadInterfaceScanResultStruct { @@ -521,12 +551,15 @@ server cluster NetworkCommissioning = 49 { readonly attribute access(read: administer) int8u maxNetworks = 0; readonly attribute access(read: administer) NetworkInfoStruct 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 NetworkCommissioningStatusEnum lastNetworkingStatus = 5; readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6; readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7; + readonly attribute optional WiFiBandEnum supportedWiFiBands[] = 8; + readonly attribute optional ThreadCapabilitiesBitmap supportedThreadFeatures = 9; + readonly attribute optional int16u threadVersion = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -535,66 +568,86 @@ server cluster NetworkCommissioning = 49 { readonly attribute int16u clusterRevision = 65533; request struct ScanNetworksRequest { - optional nullable OCTET_STRING<32> ssid = 0; - optional INT64U breadcrumb = 1; + optional nullable octet_string<32> ssid = 0; + optional int64u breadcrumb = 1; } + response struct ScanNetworksResponse = 1 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string debugText = 1; + optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2; + optional ThreadInterfaceScanResultStruct threadScanResults[] = 3; + } request struct AddOrUpdateThreadNetworkRequest { - OCTET_STRING<254> operationalDataset = 0; - optional INT64U breadcrumb = 1; + octet_string<254> operationalDataset = 0; + optional int64u breadcrumb = 1; } request struct RemoveNetworkRequest { - OCTET_STRING<32> networkID = 0; - optional INT64U breadcrumb = 1; + octet_string<32> networkID = 0; + optional int64u breadcrumb = 1; } - request struct ConnectNetworkRequest { - OCTET_STRING<32> networkID = 0; - optional INT64U breadcrumb = 1; + response struct NetworkConfigResponse = 5 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string<512> debugText = 1; + optional int8u networkIndex = 2; + optional octet_string<140> clientIdentity = 3; + optional octet_string<64> possessionSignature = 4; } - request struct ReorderNetworkRequest { - OCTET_STRING<32> networkID = 0; - INT8U networkIndex = 1; - optional INT64U breadcrumb = 2; + request struct ConnectNetworkRequest { + octet_string<32> networkID = 0; + optional int64u breadcrumb = 1; } - response struct ScanNetworksResponse = 1 { + response struct ConnectNetworkResponse = 7 { NetworkCommissioningStatusEnum networkingStatus = 0; - optional CHAR_STRING debugText = 1; - optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2; - optional ThreadInterfaceScanResultStruct threadScanResults[] = 3; + optional char_string debugText = 1; + nullable int32s errorValue = 2; } - response struct NetworkConfigResponse = 5 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional CHAR_STRING<512> debugText = 1; - optional INT8U networkIndex = 2; + request struct ReorderNetworkRequest { + octet_string<32> networkID = 0; + int8u networkIndex = 1; + optional int64u breadcrumb = 2; } - response struct ConnectNetworkResponse = 7 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional CHAR_STRING debugText = 1; - nullable INT32S errorValue = 2; + request struct QueryIdentityRequest { + octet_string<20> keyIdentifier = 0; + optional octet_string<32> possessionNonce = 1; + } + response struct QueryIdentityResponse = 10 { + octet_string<140> identity = 0; + optional octet_string<64> possessionSignature = 1; } + /** Detemine the set of networks the device sees as available. */ command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0; + /** Add or update the credentials for a given Wi-Fi network. */ + command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2; + /** Add or update the credentials for a given Thread network. */ command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3; + /** Remove the definition of a given network (including its credentials). */ command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4; + /** Connect to the specified network, using previously-defined credentials. */ command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6; + /** Modify the order in which networks will be presented in the Networks attribute. */ command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; + /** Retrieve details about and optionally proof of possession of a network client identity. */ + command access(invoke: administer) QueryIdentity(QueryIdentityRequest): QueryIdentityResponse = 9; } /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ -server cluster DiagnosticLogs = 50 { - enum IntentEnum : ENUM8 { +cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; kCrashLogs = 2; } - enum StatusEnum : ENUM8 { + enum StatusEnum : enum8 { kSuccess = 0; kExhausted = 1; kNoLogs = 2; @@ -602,7 +655,7 @@ server cluster DiagnosticLogs = 50 { kDenied = 4; } - enum TransferProtocolEnum : ENUM8 { + enum TransferProtocolEnum : enum8 { kResponsePayload = 0; kBDX = 1; } @@ -617,22 +670,24 @@ server cluster DiagnosticLogs = 50 { request struct RetrieveLogsRequestRequest { IntentEnum intent = 0; TransferProtocolEnum requestedProtocol = 1; - optional CHAR_STRING<32> transferFileDesignator = 2; + optional char_string<32> transferFileDesignator = 2; } response struct RetrieveLogsResponse = 1 { StatusEnum status = 0; - LONG_OCTET_STRING logContent = 1; + long_octet_string logContent = 1; optional epoch_us UTCTimeStamp = 2; optional systime_us timeSinceBoot = 3; } + /** Retrieving diagnostic logs from a Node */ command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster GeneralDiagnostics = 51 { - enum BootReasonEnum : ENUM8 { +cluster GeneralDiagnostics = 51 { + revision 2; + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; kBrownOutReset = 2; @@ -642,7 +697,7 @@ server cluster GeneralDiagnostics = 51 { kSoftwareReset = 6; } - enum HardwareFaultEnum : ENUM8 { + enum HardwareFaultEnum : enum8 { kUnspecified = 0; kRadio = 1; kSensor = 2; @@ -656,7 +711,7 @@ server cluster GeneralDiagnostics = 51 { kTamperDetected = 10; } - enum InterfaceTypeEnum : ENUM8 { + enum InterfaceTypeEnum : enum8 { kUnspecified = 0; kWiFi = 1; kEthernet = 2; @@ -664,14 +719,14 @@ server cluster GeneralDiagnostics = 51 { kThread = 4; } - enum NetworkFaultEnum : ENUM8 { + enum NetworkFaultEnum : enum8 { kUnspecified = 0; kHardwareFailure = 1; kNetworkJammed = 2; kConnectionFailed = 3; } - enum RadioFaultEnum : ENUM8 { + enum RadioFaultEnum : enum8 { kUnspecified = 0; kWiFiFault = 1; kCellularFault = 2; @@ -713,11 +768,12 @@ server cluster GeneralDiagnostics = 51 { readonly attribute NetworkInterface networkInterfaces[] = 0; readonly attribute int16u rebootCount = 1; - readonly attribute int64u upTime = 2; - 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; @@ -727,17 +783,25 @@ server cluster GeneralDiagnostics = 51 { readonly attribute int16u clusterRevision = 65533; request struct TestEventTriggerRequest { - OCTET_STRING<16> enableKey = 0; - INT64U eventTrigger = 1; + octet_string<16> enableKey = 0; + int64u eventTrigger = 1; } + response struct TimeSnapshotResponse = 2 { + systime_ms systemTimeMs = 0; + nullable posix_ms posixTimeMs = 1; + } + /** Provide a means for certification tests to trigger some test-plan-specific events */ command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; + /** Take a snapshot of system time and epoch time. */ + command TimeSnapshot(): TimeSnapshotResponse = 1; } /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster SoftwareDiagnostics = 52 { - bitmap Feature : BITMAP32 { - kWaterMarks = 0x1; +cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { + kWatermarks = 0x1; } struct ThreadMetricsStruct { @@ -749,15 +813,15 @@ server cluster SoftwareDiagnostics = 52 { } info event SoftwareFault = 0 { - INT64U id = 0; - optional CHAR_STRING name = 1; - optional OCTET_STRING faultRecording = 2; + int64u id = 0; + optional char_string name = 1; + 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; @@ -765,24 +829,26 @@ server cluster SoftwareDiagnostics = 52 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; - command ResetWatermarks(): DefaultSuccess = 0; + /** Reception of this command SHALL reset the values: The StackFreeMinimum field of the ThreadMetrics attribute, CurrentHeapHighWaterMark attribute. */ + command access(invoke: manage) ResetWatermarks(): DefaultSuccess = 0; } /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ -server cluster ThreadNetworkDiagnostics = 53 { - enum ConnectionStatusEnum : ENUM8 { +cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; } - enum NetworkFaultEnum : ENUM8 { + enum NetworkFaultEnum : enum8 { kUnspecified = 0; kLinkDown = 1; kHardwareFailure = 2; kNetworkJammed = 3; } - enum RoutingRoleEnum : ENUM8 { + enum RoutingRoleEnum : enum8 { kUnspecified = 0; kUnassigned = 1; kSleepyEndDevice = 2; @@ -792,7 +858,7 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - bitmap Feature : BITMAP32 { + bitmap Feature : bitmap32 { kPacketCounts = 0x1; kErrorCounts = 0x2; kMLECounts = 0x4; @@ -864,56 +930,59 @@ server 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 NeighborTableStruct neighborTable[] = 7; readonly attribute RouteTableStruct routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; - readonly attribute nullable int8u weighting = 10; - readonly attribute nullable int8u dataVersion = 11; - readonly attribute nullable int8u stableDataVersion = 12; + readonly attribute nullable int16u weighting = 10; + readonly attribute nullable int16u dataVersion = 11; + readonly attribute nullable int16u 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 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; @@ -929,22 +998,26 @@ server cluster ThreadNetworkDiagnostics = 53 { } /** Commands to trigger a Node to allow a new Administrator to commission it. */ -server cluster AdministratorCommissioning = 60 { - enum CommissioningWindowStatusEnum : ENUM8 { +cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; kBasicWindowOpen = 2; } - enum StatusCode : ENUM8 { + enum StatusCode : enum8 { kBusy = 2; kPAKEParameterError = 3; kWindowNotOpen = 4; } + bitmap Feature : bitmap32 { + kBasic = 0x1; + } readonly attribute CommissioningWindowStatusEnum windowStatus = 0; readonly attribute nullable fabric_idx adminFabricIndex = 1; - readonly attribute nullable int16u adminVendorId = 2; + readonly attribute nullable vendor_id adminVendorId = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -953,30 +1026,34 @@ server cluster AdministratorCommissioning = 60 { readonly attribute int16u clusterRevision = 65533; request struct OpenCommissioningWindowRequest { - INT16U commissioningTimeout = 0; - OCTET_STRING PAKEPasscodeVerifier = 1; - INT16U discriminator = 2; - INT32U iterations = 3; - OCTET_STRING salt = 4; + int16u commissioningTimeout = 0; + octet_string PAKEPasscodeVerifier = 1; + int16u discriminator = 2; + int32u iterations = 3; + octet_string<32> salt = 4; } request struct OpenBasicCommissioningWindowRequest { - INT16U commissioningTimeout = 0; + int16u commissioningTimeout = 0; } + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using enhanced commissioning method. */ timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0; + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using basic commissioning method, if the node supports it. */ timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1; + /** This command is used by a current Administrator to instruct a Node to revoke any active Open Commissioning Window or Open Basic Commissioning Window command. */ timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ -server cluster OperationalCredentials = 62 { - enum CertificateChainTypeEnum : ENUM8 { +cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; } - enum NodeOperationalCertStatusEnum : ENUM8 { + enum NodeOperationalCertStatusEnum : enum8 { kOK = 0; kInvalidPublicKey = 1; kInvalidNodeOpId = 2; @@ -1008,7 +1085,7 @@ server cluster OperationalCredentials = 62 { readonly attribute FabricDescriptorStruct fabrics[] = 1; readonly attribute int8u supportedFabrics = 2; readonly attribute int8u commissionedFabrics = 3; - readonly attribute OCTET_STRING trustedRootCertificates[] = 4; + readonly attribute octet_string trustedRootCertificates[] = 4; readonly attribute int8u currentFabricIndex = 5; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -1018,33 +1095,49 @@ server cluster OperationalCredentials = 62 { readonly attribute int16u clusterRevision = 65533; request struct AttestationRequestRequest { - OCTET_STRING attestationNonce = 0; + octet_string<32> attestationNonce = 0; } + response struct AttestationResponse = 1 { + octet_string<900> attestationElements = 0; + octet_string<64> attestationSignature = 1; + } request struct CertificateChainRequestRequest { CertificateChainTypeEnum certificateType = 0; } + response struct CertificateChainResponse = 3 { + octet_string<600> certificate = 0; + } request struct CSRRequestRequest { - OCTET_STRING CSRNonce = 0; + octet_string<32> CSRNonce = 0; optional boolean isForUpdateNOC = 1; } + response struct CSRResponse = 5 { + octet_string NOCSRElements = 0; + octet_string attestationSignature = 1; + } request struct AddNOCRequest { - OCTET_STRING NOCValue = 0; - optional OCTET_STRING ICACValue = 1; - OCTET_STRING IPKValue = 2; - Int64u caseAdminSubject = 3; - VENDOR_ID adminVendorId = 4; + octet_string<400> NOCValue = 0; + optional octet_string<400> ICACValue = 1; + octet_string<16> IPKValue = 2; + int64u caseAdminSubject = 3; + vendor_id adminVendorId = 4; } request struct UpdateNOCRequest { - OCTET_STRING NOCValue = 0; - optional OCTET_STRING ICACValue = 1; + octet_string NOCValue = 0; + optional octet_string ICACValue = 1; } + response struct NOCResponse = 8 { + NodeOperationalCertStatusEnum statusCode = 0; + optional fabric_idx fabricIndex = 1; + optional char_string<128> debugText = 2; + } request struct UpdateFabricLabelRequest { - CHAR_STRING<32> label = 0; + char_string<32> label = 0; } request struct RemoveFabricRequest { @@ -1052,47 +1145,40 @@ server cluster OperationalCredentials = 62 { } request struct AddTrustedRootCertificateRequest { - OCTET_STRING rootCACertificate = 0; + octet_string rootCACertificate = 0; } - response struct AttestationResponse = 1 { - OCTET_STRING attestationElements = 0; - OCTET_STRING attestationSignature = 1; - } + /** Sender is requesting attestation information from the receiver. */ - response struct CertificateChainResponse = 3 { - OCTET_STRING certificate = 0; - } - response struct CSRResponse = 5 { - OCTET_STRING NOCSRElements = 0; - OCTET_STRING attestationSignature = 1; - } - response struct NOCResponse = 8 { - NodeOperationalCertStatusEnum statusCode = 0; - optional fabric_idx fabricIndex = 1; - optional CHAR_STRING debugText = 2; - } command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0; + /** Sender is requesting a device attestation certificate from the receiver. */ command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; + /** Sender is requesting a certificate signing request (CSR) from the receiver. */ command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; + /** Sender is requesting to add the new node operational certificates. */ command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; + /** Sender is requesting to update the node operational certificates. */ fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + /** This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. */ fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + /** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */ command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; + /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */ command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ -server cluster GroupKeyManagement = 63 { - enum GroupKeySecurityPolicyEnum : ENUM8 { +cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; } - bitmap Feature : BITMAP32 { + bitmap Feature : bitmap32 { kCacheAndSync = 0x1; } @@ -1136,30 +1222,33 @@ server cluster GroupKeyManagement = 63 { } request struct KeySetReadRequest { - INT16U groupKeySetID = 0; + int16u groupKeySetID = 0; } - request struct KeySetRemoveRequest { - INT16U groupKeySetID = 0; - } response struct KeySetReadResponse = 2 { GroupKeySetStruct groupKeySet = 0; } response struct KeySetReadAllIndicesResponse = 5 { - INT16U groupKeySetIDs[] = 0; + int16u groupKeySetIDs[] = 0; } + /** Write a new set of keys for the given key set id. */ fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + /** Read the keys for a given key set id. */ fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + /** Revoke a Root Key from a Group */ fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + /** Return the list of Group Key Sets associated with the accessing fabric */ fabric command access(invoke: administer) KeySetReadAllIndices(): KeySetReadAllIndicesResponse = 4; } /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ -server cluster FixedLabel = 64 { +cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1175,7 +1264,8 @@ server cluster FixedLabel = 64 { } /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ -server cluster UserLabel = 65 { +cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1214,15 +1304,46 @@ server cluster IcdManagement = 70 { readonly attribute int16u clusterRevision = 65533; } + /** An interface for configuring and controlling the functionality of a thermostat. */ -server cluster Thermostat = 513 { - enum SetpointAdjustMode : ENUM8 { - kHeat = 0; - kCool = 1; - kBoth = 2; +cluster Thermostat = 513 { + revision 6; + + enum ACCapacityFormatEnum : enum8 { + kBTUh = 0; + } + + enum ACCompressorTypeEnum : enum8 { + kUnknown = 0; + kT1 = 1; + kT2 = 2; + kT3 = 3; } - enum ThermostatControlSequence : ENUM8 { + enum ACLouverPositionEnum : enum8 { + kClosed = 1; + kOpen = 2; + kQuarter = 3; + kHalf = 4; + kThreeQuarters = 5; + } + + enum ACRefrigerantTypeEnum : enum8 { + kUnknown = 0; + kR22 = 1; + kR410a = 2; + kR407c = 3; + } + + enum ACTypeEnum : enum8 { + kUnknown = 0; + kCoolingFixed = 1; + kHeatPumpFixed = 2; + kCoolingInverter = 3; + kHeatPumpInverter = 4; + } + + enum ControlSequenceOfOperationEnum : enum8 { kCoolingOnly = 0; kCoolingWithReheat = 1; kHeatingOnly = 2; @@ -1231,13 +1352,29 @@ server cluster Thermostat = 513 { kCoolingAndHeatingWithReheat = 5; } - enum ThermostatRunningMode : ENUM8 { - kOff = 0; - kCool = 3; - kHeat = 4; + enum SetpointChangeSourceEnum : enum8 { + kManual = 0; + kSchedule = 1; + kExternal = 2; } - enum ThermostatSystemMode : ENUM8 { + enum SetpointRaiseLowerModeEnum : enum8 { + kHeat = 0; + kCool = 1; + kBoth = 2; + } + + enum StartOfWeekEnum : enum8 { + kSunday = 0; + kMonday = 1; + kTuesday = 2; + kWednesday = 3; + kThursday = 4; + kFriday = 5; + kSaturday = 6; + } + + enum SystemModeEnum : enum8 { kOff = 0; kAuto = 1; kCool = 3; @@ -1249,18 +1386,26 @@ server cluster Thermostat = 513 { kSleep = 9; } - bitmap DayOfWeek : BITMAP8 { - kSunday = 0x1; - kMonday = 0x2; - kTuesday = 0x4; - kWednesday = 0x8; - kThursday = 0x10; - kFriday = 0x20; - kSaturday = 0x40; - kAway = 0x80; + enum TemperatureSetpointHoldEnum : enum8 { + kSetpointHoldOff = 0; + kSetpointHoldOn = 1; } - bitmap Feature : BITMAP32 { + enum ThermostatRunningModeEnum : enum8 { + kOff = 0; + kCool = 3; + kHeat = 4; + } + + bitmap ACErrorCodeBitmap : bitmap32 { + kCompressorFail = 0x1; + kRoomSensorFail = 0x2; + kOutdoorSensorFail = 0x4; + kCoilSensorFail = 0x8; + kFanFail = 0x10; + } + + bitmap Feature : bitmap32 { kHeating = 0x1; kCooling = 0x2; kOccupancy = 0x4; @@ -1270,33 +1415,106 @@ server cluster Thermostat = 513 { kLocalTemperatureNotExposed = 0x40; } - bitmap ModeForSequence : BITMAP8 { + bitmap HVACSystemTypeBitmap : bitmap8 { + kCoolingStage = 0x3; + kHeatingStage = 0xC; + kHeatingIsHeatPump = 0x10; + kHeatingUsesFuel = 0x20; + } + + bitmap ProgrammingOperationModeBitmap : bitmap8 { + kScheduleActive = 0x1; + kAutoRecovery = 0x2; + kEconomy = 0x4; + } + + bitmap RelayStateBitmap : bitmap16 { + kHeat = 0x1; + kCool = 0x2; + kFan = 0x4; + kHeatStage2 = 0x8; + kCoolStage2 = 0x10; + kFanStage2 = 0x20; + kFanStage3 = 0x40; + } + + bitmap RemoteSensingBitmap : bitmap8 { + kLocalTemperature = 0x1; + kOutdoorTemperature = 0x2; + kOccupancy = 0x4; + } + + bitmap ScheduleDayOfWeekBitmap : bitmap8 { + kSunday = 0x1; + kMonday = 0x2; + kTuesday = 0x4; + kWednesday = 0x8; + kThursday = 0x10; + kFriday = 0x20; + kSaturday = 0x40; + kAway = 0x80; + } + + bitmap ScheduleModeBitmap : bitmap8 { kHeatSetpointPresent = 0x1; kCoolSetpointPresent = 0x2; } - struct ThermostatScheduleTransition { + struct WeeklyScheduleTransitionStruct { int16u transitionTime = 0; - nullable int16s heatSetpoint = 1; - nullable int16s coolSetpoint = 2; - } - - readonly attribute nullable int16s localTemperature = 0; - 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 int16s occupiedCoolingSetpoint = 17; - attribute int16s occupiedHeatingSetpoint = 18; - 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) ThermostatControlSequence controlSequenceOfOperation = 27; - attribute access(write: manage) enum8 systemMode = 28; + nullable temperature heatSetpoint = 1; + nullable temperature coolSetpoint = 2; + } + + readonly attribute nullable temperature localTemperature = 0; + readonly attribute optional nullable temperature outdoorTemperature = 1; + readonly attribute optional bitmap8 occupancy = 2; + readonly attribute optional temperature absMinHeatSetpointLimit = 3; + readonly attribute optional temperature absMaxHeatSetpointLimit = 4; + readonly attribute optional temperature absMinCoolSetpointLimit = 5; + readonly attribute optional temperature 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 RemoteSensingBitmap remoteSensing = 26; + attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27; + attribute access(write: manage) SystemModeEnum systemMode = 28; + readonly attribute optional ThermostatRunningModeEnum thermostatRunningMode = 30; + readonly attribute optional StartOfWeekEnum startOfWeek = 32; + readonly attribute optional int8u numberOfWeeklyTransitions = 33; + readonly attribute optional int8u numberOfDailyTransitions = 34; + attribute access(write: manage) optional TemperatureSetpointHoldEnum temperatureSetpointHold = 35; + attribute access(write: manage) optional nullable int16u temperatureSetpointHoldDuration = 36; + attribute access(write: manage) optional ProgrammingOperationModeBitmap thermostatProgrammingOperationMode = 37; + readonly attribute optional RelayStateBitmap thermostatRunningState = 41; + readonly attribute optional SetpointChangeSourceEnum 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 ACTypeEnum ACType = 64; + attribute access(write: manage) optional int16u ACCapacity = 65; + attribute access(write: manage) optional ACRefrigerantTypeEnum ACRefrigerantType = 66; + attribute access(write: manage) optional ACCompressorTypeEnum ACCompressorType = 67; + attribute access(write: manage) optional ACErrorCodeBitmap ACErrorCode = 68; + attribute access(write: manage) optional ACLouverPositionEnum ACLouverPosition = 69; + readonly attribute optional nullable temperature ACCoilTemperature = 70; + attribute access(write: manage) optional ACCapacityFormatEnum ACCapacityformat = 71; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1305,17 +1523,65 @@ server cluster Thermostat = 513 { readonly attribute int16u clusterRevision = 65533; request struct SetpointRaiseLowerRequest { - SetpointAdjustMode mode = 0; - INT8S amount = 1; + SetpointRaiseLowerModeEnum mode = 0; + int8s amount = 1; + } + + response struct GetWeeklyScheduleResponse = 0 { + int8u numberOfTransitionsForSequence = 0; + ScheduleDayOfWeekBitmap dayOfWeekForSequence = 1; + ScheduleModeBitmap modeForSequence = 2; + WeeklyScheduleTransitionStruct transitions[] = 3; + } + + request struct SetWeeklyScheduleRequest { + int8u numberOfTransitionsForSequence = 0; + ScheduleDayOfWeekBitmap dayOfWeekForSequence = 1; + ScheduleModeBitmap modeForSequence = 2; + WeeklyScheduleTransitionStruct transitions[] = 3; + } + + request struct GetWeeklyScheduleRequest { + ScheduleDayOfWeekBitmap daysToReturn = 0; + ScheduleModeBitmap modeToReturn = 1; } + /** Command description for SetpointRaiseLower */ command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0; + /** Command description for SetWeeklySchedule */ + command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1; + /** Command description for GetWeeklySchedule */ + command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2; + /** The Clear Weekly Schedule command is used to clear the weekly schedule. */ + command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3; } /** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ -server cluster ThermostatUserInterfaceConfiguration = 516 { - attribute enum8 temperatureDisplayMode = 0; - attribute access(write: manage) enum8 keypadLockout = 1; +cluster ThermostatUserInterfaceConfiguration = 516 { + revision 2; + + enum KeypadLockoutEnum : enum8 { + kNoLockout = 0; + kLockout1 = 1; + kLockout2 = 2; + kLockout3 = 3; + kLockout4 = 4; + kLockout5 = 5; + } + + enum ScheduleProgrammingVisibilityEnum : enum8 { + kScheduleProgrammingPermitted = 0; + kScheduleProgrammingDenied = 1; + } + + enum TemperatureDisplayModeEnum : enum8 { + kCelsius = 0; + kFahrenheit = 1; + } + + attribute TemperatureDisplayModeEnum temperatureDisplayMode = 0; + attribute access(write: manage) KeypadLockoutEnum keypadLockout = 1; + attribute access(write: manage) optional ScheduleProgrammingVisibilityEnum scheduleProgrammingVisibility = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1329,17 +1595,27 @@ endpoint 0 { binding cluster OtaSoftwareUpdateProvider; + server cluster Identify { + ram attribute identifyTime default = 0x0000; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 4; + + handle command Identify; + } + server cluster Descriptor { callback attribute deviceTypeList; callback attribute serverList; callback attribute clientList; callback attribute partsList; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; + } + + server cluster Binding { + callback attribute binding; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; } server cluster AccessControl { @@ -1347,72 +1623,93 @@ endpoint 0 { emits event AccessControlExtensionChanged; callback attribute acl; callback attribute extension; - callback attribute subjectsPerAccessControlEntry default = 4; - callback attribute targetsPerAccessControlEntry default = 3; - callback attribute accessControlEntriesPerFabric default = 3; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; + callback attribute subjectsPerAccessControlEntry; + callback attribute targetsPerAccessControlEntry; + callback attribute accessControlEntriesPerFabric; callback attribute attributeList; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster BasicInformation { emits event StartUp; - callback attribute dataModelRevision default = 10; + emits event ShutDown; + emits event Leave; + callback attribute dataModelRevision; callback attribute vendorName; callback attribute vendorID; callback attribute productName; callback attribute productID; persist attribute nodeLabel; - callback attribute location default = "XX"; - callback attribute hardwareVersion default = 0; + callback attribute location; + callback attribute hardwareVersion; callback attribute hardwareVersionString; - callback attribute softwareVersion default = 0; + callback attribute softwareVersion; callback attribute softwareVersionString; - callback attribute manufacturingDate default = "20210614123456ZZ"; + callback attribute manufacturingDate; callback attribute partNumber; callback attribute productURL; callback attribute productLabel; callback attribute serialNumber; persist attribute localConfigDisabled default = 0; - ram attribute reachable default = 1; callback attribute uniqueID; callback attribute capabilityMinima; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; + callback attribute specificationVersion; + callback attribute maxPathsPerInvoke; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; + ram attribute clusterRevision default = 3; } server cluster OtaSoftwareUpdateRequestor { - callback attribute defaultOTAProviders default = 0; + emits event StateTransition; + emits event VersionApplied; + emits event DownloadError; + callback attribute defaultOTAProviders; ram attribute updatePossible default = 1; ram attribute updateState default = 0; ram attribute updateStateProgress default = 0; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 1; + + handle command AnnounceOTAProvider; + } + + server cluster LocalizationConfiguration { + persist attribute activeLocale default = "en-US"; + callback attribute supportedLocales; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + } + + server cluster TimeFormatLocalization { + persist attribute hourFormat default = 0; + persist attribute activeCalendarType default = 0; + callback attribute supportedCalendarTypes; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + } + + server cluster UnitLocalization { + persist attribute temperatureUnit default = 0; + ram attribute featureMap default = 0x1; + ram attribute clusterRevision default = 1; } server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; - callback attribute regulatoryConfig default = 0; - callback attribute locationCapability default = 0; - callback attribute supportsConcurrentConnection default = 1; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; + callback attribute regulatoryConfig; + callback attribute locationCapability; + callback attribute supportsConcurrentConnection; ram attribute featureMap default = 0; ram attribute clusterRevision default = 1; + + handle command ArmFailSafe; + handle command ArmFailSafeResponse; + handle command SetRegulatoryConfig; + handle command SetRegulatoryConfigResponse; + handle command CommissioningComplete; + handle command CommissioningCompleteResponse; } server cluster NetworkCommissioning { @@ -1424,62 +1721,63 @@ endpoint 0 { ram attribute lastNetworkingStatus; ram attribute lastNetworkID; ram attribute lastConnectErrorValue; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; ram attribute featureMap default = 2; ram attribute clusterRevision default = 1; + + handle command ScanNetworks; + handle command ScanNetworksResponse; + handle command AddOrUpdateWiFiNetwork; + handle command AddOrUpdateThreadNetwork; + handle command RemoveNetwork; + handle command NetworkConfigResponse; + handle command ConnectNetwork; + handle command ConnectNetworkResponse; + handle command ReorderNetwork; } server cluster DiagnosticLogs { - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 1; + + handle command RetrieveLogsRequest; } server cluster GeneralDiagnostics { emits event BootReason; callback attribute networkInterfaces; - callback attribute rebootCount default = 0x0000; - callback attribute upTime default = 0x0000000000000000; + callback attribute rebootCount; + callback attribute upTime; + callback attribute totalOperationalHours; callback attribute bootReason; callback attribute activeHardwareFaults; callback attribute activeRadioFaults; callback attribute activeNetworkFaults; callback attribute testEventTriggersEnabled default = false; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; + ram attribute clusterRevision default = 0x0002; + + handle command TestEventTrigger; + handle command TimeSnapshot; + handle command TimeSnapshotResponse; } server cluster SoftwareDiagnostics { callback attribute threadMetrics; - callback attribute currentHeapFree default = 0x0000000000000000; - callback attribute currentHeapUsed default = 0x0000000000000000; - callback attribute currentHeapHighWatermark default = 0x0000000000000000; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; - ram attribute featureMap default = 1; + callback attribute currentHeapFree; + callback attribute currentHeapUsed; + callback attribute currentHeapHighWatermark; + callback attribute featureMap; ram attribute clusterRevision default = 1; } server cluster ThreadNetworkDiagnostics { callback attribute channel; callback attribute routingRole; - callback attribute networkName default = "0"; - callback attribute panId default = 0x0000; - callback attribute extendedPanId default = 0x0000000000000000; + callback attribute networkName; + callback attribute panId; + callback attribute extendedPanId; callback attribute meshLocalPrefix; - callback attribute overrunCount default = 0x0000000000000000; + callback attribute overrunCount; callback attribute neighborTable; callback attribute routeTable; callback attribute partitionId; @@ -1487,70 +1785,108 @@ endpoint 0 { callback attribute dataVersion; callback attribute stableDataVersion; callback attribute leaderRouterId; - callback attribute detachedRoleCount default = 0x0000; - callback attribute childRoleCount default = 0x0000; - callback attribute routerRoleCount default = 0x0000; - callback attribute leaderRoleCount default = 0x0000; - callback attribute attachAttemptCount default = 0x0000; - callback attribute partitionIdChangeCount default = 0x0000; - callback attribute betterPartitionAttachAttemptCount default = 0x0000; - callback attribute parentChangeCount default = 0x0000; - callback attribute txTotalCount default = 0x0000; - callback attribute txUnicastCount default = 0x0000; - callback attribute txBroadcastCount default = 0x0000; - callback attribute txAckRequestedCount default = 0x0000; - callback attribute txAckedCount default = 0x0000; - callback attribute txNoAckRequestedCount default = 0x0000; - callback attribute txDataCount default = 0x0000; - callback attribute txDataPollCount default = 0x0000; - callback attribute txBeaconCount default = 0x0000; - callback attribute txBeaconRequestCount default = 0x0000; - callback attribute txOtherCount default = 0x0000; - callback attribute txRetryCount default = 0x0000; - callback attribute txDirectMaxRetryExpiryCount default = 0x0000; - callback attribute txIndirectMaxRetryExpiryCount default = 0x0000; - callback attribute txErrCcaCount default = 0x0000; - callback attribute txErrAbortCount default = 0x0000; - callback attribute txErrBusyChannelCount default = 0x0000; - callback attribute rxTotalCount default = 0x0000; - callback attribute rxUnicastCount default = 0x0000; - callback attribute rxBroadcastCount default = 0x0000; - callback attribute rxDataCount default = 0x0000; - callback attribute rxDataPollCount default = 0x0000; - callback attribute rxBeaconCount default = 0x0000; - callback attribute rxBeaconRequestCount default = 0x0000; - callback attribute rxOtherCount default = 0x0000; - callback attribute rxAddressFilteredCount default = 0x0000; - callback attribute rxDestAddrFilteredCount default = 0x0000; - callback attribute rxDuplicatedCount default = 0x0000; - callback attribute rxErrNoFrameCount default = 0x0000; - callback attribute rxErrUnknownNeighborCount default = 0x0000; - callback attribute rxErrInvalidSrcAddrCount default = 0x0000; - callback attribute rxErrSecCount default = 0x0000; - callback attribute rxErrFcsCount default = 0x0000; - callback attribute rxErrOtherCount default = 0x0000; + callback attribute detachedRoleCount; + callback attribute childRoleCount; + callback attribute routerRoleCount; + callback attribute leaderRoleCount; + callback attribute attachAttemptCount; + callback attribute partitionIdChangeCount; + callback attribute betterPartitionAttachAttemptCount; + callback attribute parentChangeCount; + callback attribute txTotalCount; + callback attribute txUnicastCount; + callback attribute txBroadcastCount; + callback attribute txAckRequestedCount; + callback attribute txAckedCount; + callback attribute txNoAckRequestedCount; + callback attribute txDataCount; + callback attribute txDataPollCount; + callback attribute txBeaconCount; + callback attribute txBeaconRequestCount; + callback attribute txOtherCount; + callback attribute txRetryCount; + callback attribute txDirectMaxRetryExpiryCount; + callback attribute txIndirectMaxRetryExpiryCount; + callback attribute txErrCcaCount; + callback attribute txErrAbortCount; + callback attribute txErrBusyChannelCount; + callback attribute rxTotalCount; + callback attribute rxUnicastCount; + callback attribute rxBroadcastCount; + callback attribute rxDataCount; + callback attribute rxDataPollCount; + callback attribute rxBeaconCount; + callback attribute rxBeaconRequestCount; + callback attribute rxOtherCount; + callback attribute rxAddressFilteredCount; + callback attribute rxDestAddrFilteredCount; + callback attribute rxDuplicatedCount; + callback attribute rxErrNoFrameCount; + callback attribute rxErrUnknownNeighborCount; + callback attribute rxErrInvalidSrcAddrCount; + callback attribute rxErrSecCount; + callback attribute rxErrFcsCount; + callback attribute rxErrOtherCount; + callback attribute activeTimestamp; + callback attribute pendingTimestamp; + callback attribute delay; callback attribute securityPolicy; - callback attribute channelPage0Mask default = "0x0000"; + callback attribute channelPage0Mask; callback attribute operationalDatasetComponents; callback attribute activeNetworkFaultsList; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; ram attribute featureMap default = 0x000F; ram attribute clusterRevision default = 1; + + handle command ResetCounts; + } + + server cluster WiFiNetworkDiagnostics { + emits event Disconnection; + emits event AssociationFailure; + emits event ConnectionStatus; + callback attribute bssid; + callback attribute securityType; + callback attribute wiFiVersion; + callback attribute channelNumber; + callback attribute rssi; + callback attribute beaconLostCount; + callback attribute beaconRxCount; + callback attribute packetMulticastRxCount; + callback attribute packetMulticastTxCount; + callback attribute packetUnicastRxCount; + callback attribute packetUnicastTxCount; + callback attribute currentMaxRate; + callback attribute overrunCount; + ram attribute featureMap default = 3; + ram attribute clusterRevision default = 1; + + handle command ResetCounts; + } + + server cluster EthernetNetworkDiagnostics { + callback attribute PHYRate; + callback attribute fullDuplex; + callback attribute packetRxCount; + callback attribute packetTxCount; + callback attribute txErrCount; + callback attribute collisionCount; + callback attribute overrunCount; + callback attribute carrierDetect; + callback attribute timeSinceReset; + ram attribute featureMap default = 3; + ram attribute clusterRevision default = 1; } server cluster AdministratorCommissioning { - callback attribute windowStatus default = 0; - callback attribute adminFabricIndex default = 1; - callback attribute adminVendorId default = 0; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; - ram attribute featureMap default = 1; + callback attribute windowStatus; + callback attribute adminFabricIndex; + callback attribute adminVendorId; + ram attribute featureMap default = 0; ram attribute clusterRevision default = 1; + + handle command OpenCommissioningWindow; + handle command OpenBasicCommissioningWindow; + handle command RevokeCommissioning; } server cluster OperationalCredentials { @@ -1560,12 +1896,21 @@ endpoint 0 { callback attribute commissionedFabrics; callback attribute trustedRootCertificates; callback attribute currentFabricIndex; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 1; + + handle command AttestationRequest; + handle command AttestationResponse; + handle command CertificateChainRequest; + handle command CertificateChainResponse; + handle command CSRRequest; + handle command CSRResponse; + handle command AddNOC; + handle command UpdateNOC; + handle command NOCResponse; + handle command UpdateFabricLabel; + handle command RemoveFabric; + handle command AddTrustedRootCertificate; } server cluster GroupKeyManagement { @@ -1573,59 +1918,59 @@ endpoint 0 { callback attribute groupTable; callback attribute maxGroupsPerFabric; callback attribute maxGroupKeysPerFabric; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; + callback attribute featureMap; + callback attribute clusterRevision; + + handle command KeySetWrite; + handle command KeySetRead; + handle command KeySetReadResponse; + handle command KeySetRemove; + handle command KeySetReadAllIndices; + handle command KeySetReadAllIndicesResponse; } server cluster FixedLabel { callback attribute labelList; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 1; } server cluster UserLabel { callback attribute labelList; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 1; } - - server cluster IcdManagement { - callback attribute idleModeInterval default = 1; - callback attribute activeModeInterval default = 300; - callback attribute activeModeThreshold default = 300; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; - ram attribute featureMap default = 0x0000; - ram attribute clusterRevision default = 1; - } } endpoint 1 { device type ma_thermostat = 769, version 1; + binding cluster Identify; server cluster Identify { ram attribute identifyTime default = 0x0000; ram attribute identifyType default = 0x0; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 4; + + handle command Identify; + handle command TriggerEffect; + } + + server cluster Groups { + ram attribute nameSupport; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 4; + + handle command AddGroup; + handle command AddGroupResponse; + handle command ViewGroup; + handle command ViewGroupResponse; + handle command GetGroupMembership; + handle command GetGroupMembershipResponse; + handle command RemoveGroup; + handle command RemoveGroupResponse; + handle command RemoveAllGroups; + handle command AddGroupIfIdentifying; } server cluster Descriptor { @@ -1633,32 +1978,8 @@ endpoint 1 { callback attribute serverList; callback attribute clientList; callback attribute partsList; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; - ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; - } - - server cluster FixedLabel { - callback attribute labelList; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster UserLabel { - callback attribute labelList; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster Thermostat { @@ -1667,8 +1988,6 @@ endpoint 1 { ram attribute absMaxHeatSetpointLimit default = 3000; ram attribute absMinCoolSetpointLimit default = 1600; ram attribute absMaxCoolSetpointLimit default = 3200; - ram attribute PICoolingDemand; - ram attribute PIHeatingDemand; persist attribute occupiedCoolingSetpoint default = 0x0A28; persist attribute occupiedHeatingSetpoint default = 0x07D0; ram attribute minHeatSetpointLimit default = 700; @@ -1680,10 +1999,11 @@ endpoint 1 { persist attribute systemMode default = 0x01; callback attribute generatedCommandList; callback attribute acceptedCommandList; - callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0x23; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; + + handle command SetpointRaiseLower; } server cluster ThermostatUserInterfaceConfiguration { @@ -1691,7 +2011,6 @@ endpoint 1 { ram attribute keypadLockout default = 0x00; callback attribute generatedCommandList; callback attribute acceptedCommandList; - callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 2;