Add better APIs for initializing MTRCluster instances from Swift. (#29915)
diff --git a/src/darwin/Framework/CHIP/MTRDefines.h b/src/darwin/Framework/CHIP/MTRDefines.h
index add0689..00ff4b9 100644
--- a/src/darwin/Framework/CHIP/MTRDefines.h
+++ b/src/darwin/Framework/CHIP/MTRDefines.h
@@ -67,7 +67,7 @@
#if MTR_ENABLE_PROVISIONAL
#define MTR_PROVISIONALLY_AVAILABLE MTR_NEWLY_AVAILABLE
#else
-#define MTR_PROVISIONALLY_AVAILABLE NS_UNAVAILABLE MTR_HIDDEN
+#define MTR_PROVISIONALLY_AVAILABLE API_UNAVAILABLE(ios, macos, tvos, watchos) MTR_HIDDEN
#endif
#ifndef MTR_PER_CONTROLLER_STORAGE_ENABLED
diff --git a/src/darwin/Framework/CHIP/templates/MTRClusters-swift.zapt b/src/darwin/Framework/CHIP/templates/MTRClusters-swift.zapt
new file mode 100644
index 0000000..2fc3162
--- /dev/null
+++ b/src/darwin/Framework/CHIP/templates/MTRClusters-swift.zapt
@@ -0,0 +1,15 @@
+{{> header excludeZapComment=true}}
+
+private let clusterQueue = DispatchQueue(label: "MTRCluster completion dispatch")
+
+{{#zcl_clusters}}
+{{#if (isSupported (asUpperCamelCase name preserveAcronyms=true))}}
+{{swiftAvailability (asUpperCamelCase name preserveAcronyms=true) minimalRelease="Future"}}
+extension MTRCluster{{asUpperCamelCase name preserveAcronyms=true}} {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+{{/if}}
+{{/zcl_clusters}}
\ No newline at end of file
diff --git a/src/darwin/Framework/CHIP/templates/availability.yaml b/src/darwin/Framework/CHIP/templates/availability.yaml
index bd7f01d..563f58e 100644
--- a/src/darwin/Framework/CHIP/templates/availability.yaml
+++ b/src/darwin/Framework/CHIP/templates/availability.yaml
@@ -74,10 +74,10 @@
- release: "Initial release"
versions:
- ios: "16.1"
- macos: "13.0"
- watchos: "9.1"
- tvos: "16.1"
+ iOS: "16.1"
+ macOS: "13.0"
+ watchOS: "9.1"
+ tvOS: "16.1"
introduced:
clusters:
- Identify
@@ -4722,10 +4722,10 @@
- release: "First dot-release"
versions:
- ios: "16.2"
- macos: "13.1"
- watchos: "9.2"
- tvos: "16.2"
+ iOS: "16.2"
+ macOS: "13.1"
+ watchOS: "9.2"
+ tvOS: "16.2"
introduced:
attributes:
TestCluster:
@@ -4778,10 +4778,10 @@
- release: "First major API revamp"
versions:
- ios: "16.4"
- macos: "13.3"
- watchos: "9.4"
- tvos: "16.4"
+ iOS: "16.4"
+ macOS: "13.3"
+ watchOS: "9.4"
+ tvOS: "16.4"
introduced:
clusters:
- OTASoftwareUpdateProvider
@@ -6723,10 +6723,10 @@
- release: "First after major API revamp"
versions:
- ios: "16.5"
- macos: "13.4"
- watchos: "9.5"
- tvos: "16.5"
+ iOS: "16.5"
+ macOS: "13.4"
+ watchOS: "9.5"
+ tvOS: "16.5"
introduced:
ids:
attributes:
@@ -7031,10 +7031,10 @@
- release: "Fall 2023"
versions:
- ios: "17.0"
- macos: "14.0"
- watchos: "10.0"
- tvos: "17.0"
+ iOS: "17.0"
+ macOS: "14.0"
+ watchOS: "10.0"
+ tvOS: "17.0"
introduced:
attributes:
BasicInformation:
@@ -7515,10 +7515,10 @@
- release: "Fall 2023 #2"
versions:
- ios: "17.1"
- macos: "14.1"
- watchos: "10.1"
- tvos: "17.1"
+ iOS: "17.1"
+ macOS: "14.1"
+ watchOS: "10.1"
+ tvOS: "17.1"
introduced:
bitmaps:
TimeFormatLocalization:
@@ -7583,10 +7583,10 @@
- release: "Fall 2023 #3"
versions:
- ios: "17.2"
- macos: "14.2"
- watchos: "10.2"
- tvos: "17.2"
+ iOS: "17.2"
+ macOS: "14.2"
+ watchOS: "10.2"
+ tvOS: "17.2"
introduced:
command payloads:
TimeSynchronization:
diff --git a/src/darwin/Framework/CHIP/templates/templates.json b/src/darwin/Framework/CHIP/templates/templates.json
index 47804e5..42a2ffc 100644
--- a/src/darwin/Framework/CHIP/templates/templates.json
+++ b/src/darwin/Framework/CHIP/templates/templates.json
@@ -80,6 +80,11 @@
"output": "src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm"
},
{
+ "path": "MTRClusters-swift.zapt",
+ "name": "Swift ZCL synchronous API Header extensions",
+ "output": "src/darwin/Framework/CHIP/zap-generated/MTRClusters.swift"
+ },
+ {
"path": "MTRStructsObjc.zapt",
"name": "Objc reflections of MTR spec structs header",
"output": "src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h"
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.swift b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.swift
new file mode 100644
index 0000000..22ff7e4
--- /dev/null
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.swift
@@ -0,0 +1,678 @@
+/*
+ *
+ * Copyright (c) 2022 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+private let clusterQueue = DispatchQueue(label: "MTRCluster completion dispatch")
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterIdentify {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterGroups {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterScenes {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterOnOff {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterOnOffSwitchConfiguration {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterLevelControl {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBinaryInputBasic {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterPulseWidthModulation {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterDescriptor {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBinding {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterAccessControl {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterActions {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBasicInformation {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterOTASoftwareUpdateProvider {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterOTASoftwareUpdateRequestor {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterLocalizationConfiguration {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterTimeFormatLocalization {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterUnitLocalization {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterPowerSourceConfiguration {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterPowerSource {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterGeneralCommissioning {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterNetworkCommissioning {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterDiagnosticLogs {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterGeneralDiagnostics {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterSoftwareDiagnostics {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterThreadNetworkDiagnostics {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterWiFiNetworkDiagnostics {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterEthernetNetworkDiagnostics {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterTimeSynchronization {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBridgedDeviceBasicInformation {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterSwitch {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterAdministratorCommissioning {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterOperationalCredentials {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterGroupKeyManagement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterFixedLabel {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterUserLabel {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBooleanState {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterICDManagement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterModeSelect {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterLaundryWasherMode {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterRefrigeratorAndTemperatureControlledCabinetMode {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterLaundryWasherControls {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterRVCRunMode {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterRVCCleanMode {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterTemperatureControl {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterRefrigeratorAlarm {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterDishwasherMode {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterAirQuality {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterSmokeCOAlarm {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterDishwasherAlarm {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterOperationalState {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterRVCOperationalState {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterHEPAFilterMonitoring {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterActivatedCarbonFilterMonitoring {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterDoorLock {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterWindowCovering {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBarrierControl {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterPumpConfigurationAndControl {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterThermostat {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterFanControl {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterThermostatUserInterfaceConfiguration {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterColorControl {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBallastConfiguration {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterIlluminanceMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterTemperatureMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterPressureMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterFlowMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterRelativeHumidityMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterOccupancySensing {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterCarbonMonoxideConcentrationMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterCarbonDioxideConcentrationMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterNitrogenDioxideConcentrationMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterOzoneConcentrationMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterPM25ConcentrationMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterFormaldehydeConcentrationMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterPM1ConcentrationMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterPM10ConcentrationMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterRadonConcentrationMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterWakeOnLAN {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterChannel {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterTargetNavigator {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterMediaPlayback {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterMediaInput {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterLowPower {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterKeypadInput {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterContentLauncher {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterAudioOutput {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterApplicationLauncher {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterApplicationBasic {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterAccountLogin {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterElectricalMeasurement {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterUnitTesting {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterSampleMEI {
+ public convenience init(device : MTRDevice, endpointID: UInt) {
+ self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+ }
+}
+
diff --git a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
index 603dea9..462cc59 100644
--- a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
+++ b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
@@ -1513,6 +1513,23 @@
XCTAssertNotEqual(attributeReportsReceived, 0);
XCTAssertNotEqual(eventReportsReceived, 0);
+ // Check that we can read one of those attributes we received.
+ __auto_type * descriptorCluster = [[MTRClusterDescriptor alloc] initWithDevice:device endpointID:@(0) queue:queue];
+ __auto_type * partsListDictionary = [descriptorCluster readAttributePartsListWithParams:nil];
+ XCTAssertNotNil(partsListDictionary);
+
+ __auto_type * responseValue = @{
+ MTRAttributePathKey : [MTRAttributePath attributePathWithEndpointID:@(0) clusterID:@(MTRClusterIDTypeDescriptorID) attributeID:@(MTRAttributeIDTypeClusterDescriptorAttributePartsListID)],
+ MTRDataKey : partsListDictionary,
+ };
+
+ NSError * error;
+ __auto_type * report = [[MTRAttributeReport alloc] initWithResponseValue:responseValue error:&error];
+ XCTAssertNil(error);
+ XCTAssertNotNil(report);
+ XCTAssertNotNil(report.value);
+ XCTAssertTrue([report.value isKindOfClass:NSArray.class]);
+
// Before resubscribe, first test write failure and expected value effects
NSNumber * testEndpointID = @(1);
NSNumber * testClusterID = @(8);
diff --git a/src/darwin/Framework/CHIPTests/MTRSwiftDeviceTests.swift b/src/darwin/Framework/CHIPTests/MTRSwiftDeviceTests.swift
index b800588..aa4f21c 100644
--- a/src/darwin/Framework/CHIPTests/MTRSwiftDeviceTests.swift
+++ b/src/darwin/Framework/CHIPTests/MTRSwiftDeviceTests.swift
@@ -100,8 +100,8 @@
// Because we are using things from Matter.framework that are flagged
// as only being available starting with macOS 13.5, we need to flag our
// code with the same availability annotation.
-@available(macOS, introduced: 14.1)
-@available(iOS, introduced: 17.1)
+@available(macOS, introduced: 14.2)
+@available(iOS, introduced: 17.2)
class MTRSwiftDeviceTests : XCTestCase {
static var sStackInitRan : Bool = false
static var sNeedsStackShutdown : Bool = true
@@ -292,6 +292,22 @@
XCTAssertNotEqual(attributeReportsReceived, 0)
XCTAssertNotEqual(eventReportsReceived, 0)
+ // Check that we can read one of those attributes we received.
+ let descriptorCluster = MTRClusterDescriptor(device: device, endpointID: 0)
+ let partsListDictionary = descriptorCluster.readAttributePartsList(with: nil)
+ XCTAssertNotNil(partsListDictionary);
+
+ let path = MTRAttributePath(endpointID: 0,
+ clusterID: MTRClusterIDType.descriptorID.rawValue as NSNumber,
+ attributeID: MTRAttributeIDType.clusterDescriptorAttributePartsListID.rawValue as NSNumber)
+ let responseValue : [String: Any] = [
+ MTRAttributePathKey: path,
+ MTRDataKey: partsListDictionary!,
+ ]
+ let report = try! MTRAttributeReport(responseValue: responseValue)
+ XCTAssertNotNil(report.value)
+ XCTAssertTrue(report.value is [NSNumber])
+
// Before resubscribe, first test write failure and expected value effects
let testEndpointID = 1 as NSNumber
let testClusterID = 8 as NSNumber
diff --git a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
index b2fc3f8..2b88a47 100644
--- a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
+++ b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
@@ -178,6 +178,7 @@
51B22C222740CB1D008D5055 /* MTRCommandPayloadsObjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B22C212740CB1D008D5055 /* MTRCommandPayloadsObjc.h */; settings = {ATTRIBUTES = (Public, ); }; };
51B22C262740CB32008D5055 /* MTRStructsObjc.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51B22C252740CB32008D5055 /* MTRStructsObjc.mm */; };
51B22C2A2740CB47008D5055 /* MTRCommandPayloadsObjc.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51B22C292740CB47008D5055 /* MTRCommandPayloadsObjc.mm */; };
+ 51B6C5C62AD85B3D003F4D3A /* MTRClusters.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B6C5C52AD85B3D003F4D3A /* MTRClusters.swift */; };
51C8E3F82825CDB600D47D00 /* MTRTestKeys.m in Sources */ = {isa = PBXBuildFile; fileRef = 51C8E3F72825CDB600D47D00 /* MTRTestKeys.m */; };
51C984622A61CE2A00B0AD9A /* MTRFabricInfoChecker.m in Sources */ = {isa = PBXBuildFile; fileRef = 51C984602A61CE2A00B0AD9A /* MTRFabricInfoChecker.m */; };
51CFDDB12AC5F78F00DA7CA5 /* EmptyDataModelHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51CFDDB02AC5F78F00DA7CA5 /* EmptyDataModelHandler.cpp */; };
@@ -540,6 +541,9 @@
51B22C212740CB1D008D5055 /* MTRCommandPayloadsObjc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRCommandPayloadsObjc.h; sourceTree = "<group>"; };
51B22C252740CB32008D5055 /* MTRStructsObjc.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRStructsObjc.mm; sourceTree = "<group>"; };
51B22C292740CB47008D5055 /* MTRCommandPayloadsObjc.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRCommandPayloadsObjc.mm; sourceTree = "<group>"; };
+ 51B6C5C52AD85B3D003F4D3A /* MTRClusters.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MTRClusters.swift; sourceTree = "<group>"; };
+ 51B6C5C72AD85B47003F4D3A /* MTRCommandPayloads_Internal.zapt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MTRCommandPayloads_Internal.zapt; sourceTree = "<group>"; };
+ 51B6C5C92AD85B50003F4D3A /* MTRClusters-swift.zapt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "MTRClusters-swift.zapt"; sourceTree = "<group>"; };
51C8E3F72825CDB600D47D00 /* MTRTestKeys.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MTRTestKeys.m; sourceTree = "<group>"; };
51C984602A61CE2A00B0AD9A /* MTRFabricInfoChecker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MTRFabricInfoChecker.m; sourceTree = "<group>"; };
51C984612A61CE2A00B0AD9A /* MTRFabricInfoChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRFabricInfoChecker.h; sourceTree = "<group>"; };
@@ -991,6 +995,7 @@
51B22C1D2740CB0A008D5055 /* MTRStructsObjc.h */,
51B22C252740CB32008D5055 /* MTRStructsObjc.mm */,
5178E67D2AE098210069DF72 /* MTRCommandTimedCheck.mm */,
+ 51B6C5C52AD85B3D003F4D3A /* MTRClusters.swift */,
);
path = "zap-generated";
sourceTree = "<group>";
@@ -1024,8 +1029,10 @@
3D843728294984AF0070D20A /* MTRClusters.zapt */,
3D843720294984AF0070D20A /* MTRClusters_Internal.zapt */,
3D843726294984AF0070D20A /* MTRClusters-src.zapt */,
+ 51B6C5C92AD85B50003F4D3A /* MTRClusters-swift.zapt */,
3D84371A294984AF0070D20A /* MTRCommandPayloadsObjc.zapt */,
3D843727294984AF0070D20A /* MTRCommandPayloadsObjc-src.zapt */,
+ 51B6C5C72AD85B47003F4D3A /* MTRCommandPayloads_Internal.zapt */,
3D84371D294984AF0070D20A /* MTREventTLVValueDecoder-src.zapt */,
3D84371F294984AF0070D20A /* MTRStructsObjc.zapt */,
3D843722294984AF0070D20A /* MTRStructsObjc-src.zapt */,
@@ -1555,6 +1562,7 @@
};
B202528C2459E34F00F97062 = {
CreatedOnToolsVersion = 11.4.1;
+ LastSwiftMigration = 1420;
};
B20252952459E34F00F97062 = {
CreatedOnToolsVersion = 11.4.1;
@@ -1729,6 +1737,7 @@
2C222AD1255C620600E446B9 /* MTRBaseDevice.mm in Sources */,
1EC3238D271999E2002A8BF0 /* cluster-objects.cpp in Sources */,
3CF134A9289D8D800017A19E /* MTRCSRInfo.mm in Sources */,
+ 51B6C5C62AD85B3D003F4D3A /* MTRClusters.swift in Sources */,
991DC0892475F47D00C13860 /* MTRDeviceController.mm in Sources */,
B2E0D7B7245B0B5C003C5B48 /* MTRQRCodeSetupPayloadParser.mm in Sources */,
514304202914CED9004DC7FE /* generic-callback-stubs.cpp in Sources */,
@@ -2036,6 +2045,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CHIP_ROOT = "$(PROJECT_DIR)/../../..";
+ CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
@@ -2065,6 +2075,11 @@
INFOPLIST_FILE = CHIP/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
LIBRARY_SEARCH_PATHS = "$(TEMP_DIR)/out/lib";
OTHER_CFLAGS = "-fmacro-prefix-map=$(SRCROOT)/CHIP/=";
OTHER_LDFLAGS = "";
@@ -2103,6 +2118,8 @@
PRODUCT_BUNDLE_IDENTIFIER = com.csa.matter;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
TAPI_VERIFY_MODE = Pedantic;
TARGETED_DEVICE_FAMILY = "1,2,3,4";
VERSION_INFO_EXPORT_DECL = "__attribute__((visibility(\"hidden\")))";
@@ -2112,6 +2129,7 @@
BA09EB752474881D00605257 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
"HEADER_SEARCH_PATHS[arch=*]" = "$(PROJECT_DIR)/../../../src";
@@ -2200,6 +2218,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CHIP_ROOT = "$(PROJECT_DIR)/../../..";
+ CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
@@ -2229,6 +2248,11 @@
INFOPLIST_FILE = CHIP/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
LIBRARY_SEARCH_PATHS = "$(TEMP_DIR)/out/lib";
OTHER_CFLAGS = "-fmacro-prefix-map=$(SRCROOT)/CHIP/=";
OTHER_LDFLAGS = "";
@@ -2268,6 +2292,7 @@
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
STRIP_STYLE = "non-global";
+ SWIFT_VERSION = 5.0;
TAPI_VERIFY_MODE = Pedantic;
TARGETED_DEVICE_FAMILY = "1,2,3,4";
VERSION_INFO_EXPORT_DECL = "__attribute__((visibility(\"hidden\")))";
@@ -2277,6 +2302,7 @@
BA09EB792474882200605257 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = "";