diff --git a/.github/workflows/examples-nxp.yaml b/.github/workflows/examples-nxp.yaml index c4b6eb148ae50b..f9c6392bdc71ed 100644 --- a/.github/workflows/examples-nxp.yaml +++ b/.github/workflows/examples-nxp.yaml @@ -70,7 +70,7 @@ jobs: run: | scripts/run_in_build_env.sh "\ ./scripts/build/build_examples.py \ - --target nxp-k32w0-freertos-lighting-factory \ + --target nxp-k32w0-freertos-lighting-factory-log-progress \ --target nxp-k32w0-freertos-contact-sensor-low-power-factory \ build \ --copy-artifacts-to out/artifacts \ @@ -79,7 +79,7 @@ jobs: run: | .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nxp k32w0+release light \ - out/artifacts/nxp-k32w0-freertos-lighting-factory/chip-k32w0x-light-example.elf \ + out/artifacts/nxp-k32w0-freertos-lighting-factory-log-progress/chip-k32w0x-light-example.elf \ /tmp/bloat_reports/ - name: Get K32W0 contact sensor size stats run: | diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a914e5ae369b50..68bf4b0310bffb 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -105,10 +105,8 @@ jobs: --known-failure app/reporting/reporting.cpp \ --known-failure app/reporting/tests/MockReportScheduler.cpp \ --known-failure app/reporting/tests/MockReportScheduler.h \ - --known-failure app/util/attribute-storage.cpp \ --known-failure app/util/attribute-storage-detail.h \ --known-failure app/util/attribute-storage.h \ - --known-failure app/util/attribute-table.cpp \ --known-failure app/util/attribute-table-detail.h \ --known-failure app/util/attribute-table.h \ --known-failure app/util/binding-table.cpp \ @@ -118,9 +116,7 @@ jobs: --known-failure app/util/DataModelHandler.h \ --known-failure app/util/ember-compatibility-functions.cpp \ --known-failure app/util/ember-compatibility-functions.h \ - --known-failure app/util/ember-global-attribute-access-interface.cpp \ --known-failure app/util/ember-global-attribute-access-interface.h \ - --known-failure app/util/ember-io-storage.cpp \ --known-failure app/util/ember-io-storage.h \ --known-failure app/util/endpoint-config-api.h \ --known-failure app/util/generic-callbacks.h \ @@ -135,7 +131,12 @@ jobs: --known-failure platform/GLibTypeDeleter.h \ --known-failure platform/SingletonConfigurationManager.cpp \ " - + # These ARE actually orphaned but due to dynamic-server we have code paths + # for them. Keeping them as a list as they still need review ... + # --known-failure app/util/attribute-table.cpp \ + # --known-failure app/util/ember-io-storage.cpp \ + # --known-failure app/util/ember-global-attribute-access-interface.cpp \ + # --known-failure app/util/attribute-storage.cpp \ - name: Check for matter lint errors if: always() run: | @@ -295,11 +296,13 @@ jobs: ':(exclude)examples/common/pigweed/rpc_services/Attributes.h' \ ':(exclude)src/app/codegen-data-model-provider/CodegenDataModelProvider_Write.cpp' \ ':(exclude)src/app/codegen-data-model-provider/tests/EmberReadWriteOverride.cpp' \ + ':(exclude)src/app/dynamic_server/DynamicDispatcher.cpp' \ ':(exclude)src/app/util/attribute-table.cpp' \ ':(exclude)src/app/util/attribute-table.h' \ ':(exclude)src/app/util/ember-compatibility-functions.cpp' \ ':(exclude)src/app/util/mock/CodegenEmberMocks.cpp' \ ':(exclude)src/app/zap-templates/templates/app/attributes/Accessors-src.zapt' \ + ':(exclude)src/darwin/Framework/CHIP/ServerEndpoint/MTRIMDispatch.mm' \ ':(exclude)zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp' \ && exit 1 || exit 0 diff --git a/build/chip/esp32/esp32_codegen.cmake b/build/chip/esp32/esp32_codegen.cmake index 7febb089875172..9148912d568652 100644 --- a/build/chip/esp32/esp32_codegen.cmake +++ b/build/chip/esp32/esp32_codegen.cmake @@ -75,7 +75,7 @@ macro(chip_app_component_zapgen ZAP_NAME) # When data model interface is used, provide a default code-generation data model as # part of zapgen. See `chip_data_model.cmake` for similar logic - set(CHIP_DATA_MODEL_INTERFACE "disabled" CACHE STRING "Data model interface option to use: enabled or disabled") + set(CHIP_DATA_MODEL_INTERFACE "enabled" CACHE STRING "Data model interface option to use: enabled or disabled") if ("${CHIP_DATA_MODEL_INTERFACE}" STREQUAL "enabled") target_sources(${COMPONENT_LIB} PRIVATE ${CODEGEN_DATA_MODEL_SOURCES}) diff --git a/config/esp32/components/chip/CMakeLists.txt b/config/esp32/components/chip/CMakeLists.txt index fde62765dda808..f2036570b01a15 100644 --- a/config/esp32/components/chip/CMakeLists.txt +++ b/config/esp32/components/chip/CMakeLists.txt @@ -33,7 +33,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/ota-image.cmake) set(CHIP_REQUIRE_COMPONENTS esp_eth freertos lwip bt mbedtls fatfs app_update console openthread nvs_flash spi_flash) -set(CHIP_DATA_MODEL_INTERFACE "disabled" CACHE STRING "Data model interface option to use: enabled or disabled") +set(CHIP_DATA_MODEL_INTERFACE "enabled" CACHE STRING "Data model interface option to use: enabled or disabled") if(NOT "${IDF_TARGET}" STREQUAL "esp32h2") list(APPEND CHIP_REQUIRE_COMPONENTS mdns) diff --git a/config/mbed/CMakeLists.txt b/config/mbed/CMakeLists.txt index 37dad135327e07..e74127b7c0073a 100644 --- a/config/mbed/CMakeLists.txt +++ b/config/mbed/CMakeLists.txt @@ -113,7 +113,7 @@ if (CONFIG_MBED_BSD_SOCKET_TRACE) endif() # Option can be set with `-DCHIP_DATA_MODEL_INTERFACE=enabled` or similar on the command line -set(CHIP_DATA_MODEL_INTERFACE "disabled" CACHE STRING "Data model interface option to use: enabled or disabled") +set(CHIP_DATA_MODEL_INTERFACE "enabled" CACHE STRING "Data model interface option to use: enabled or disabled") # ============================================================================== # Generate configuration for CHIP GN build system diff --git a/config/zephyr/Kconfig b/config/zephyr/Kconfig index 27598c7095c9aa..c98628e8070e7d 100644 --- a/config/zephyr/Kconfig +++ b/config/zephyr/Kconfig @@ -583,6 +583,7 @@ config CHIP_BLE_ADVERTISING_DURATION config USE_CHIP_DATA_MODEL_INTERFACE bool "Use a DataModel::Provider interface for data access" + default y help This enables a level of indiraction in the CHIP interaction model engine in accessing underlying data and executing operations such as diff --git a/src/app/BUILD.gn b/src/app/BUILD.gn index 0a000a2d005c6b..8849d39f507a34 100644 --- a/src/app/BUILD.gn +++ b/src/app/BUILD.gn @@ -226,6 +226,10 @@ static_library("interaction-model") { deps = [ "${chip_root}/src/app:events" ] + # Temporary dependency: codegen data provider instance should be provided + # by the application + deps += [ "${chip_root}/src/app/codegen-data-model-provider:instance-header" ] + public_deps = [ ":app_config", ":command-handler-impl", @@ -233,7 +237,6 @@ static_library("interaction-model") { ":paths", ":subscription-info-provider", "${chip_root}/src/app/MessageDef", - "${chip_root}/src/app/codegen-data-model-provider:instance-header", "${chip_root}/src/app/data-model-provider", "${chip_root}/src/app/icd/server:icd-server-config", "${chip_root}/src/app/icd/server:manager", @@ -291,13 +294,23 @@ static_library("interaction-model") { "clusters/ota-provider/ota-provider.cpp", "dynamic_server/AccessControl.cpp", "dynamic_server/AccessControl.h", + ] + + # DynamicDispatcher is actually an ember-override that takes over + # util/attribute-storage.cpp and util/attribute-table.cpp functions. + # + # We likely should formalize and change this with a proper DataModel::Provider that + # is consistent instead + sources += [ + "${chip_root}/src/app/util/ember-global-attribute-access-interface.cpp", + "${chip_root}/src/app/util/ember-io-storage.cpp", "dynamic_server/DynamicDispatcher.cpp", ] public_deps += [ ":global-attributes", "${chip_root}/src/access", - "${chip_root}/src/app/dynamic_server:mock-codegen-includes", + "${chip_root}/src/app/common:attribute-type", ] public_configs += [ ":config-controller-dynamic-server" ] diff --git a/src/app/clusters/microwave-oven-control-server/microwave-oven-control-server.cpp b/src/app/clusters/microwave-oven-control-server/microwave-oven-control-server.cpp index 73a3eb8a96774b..c012ddbb367eeb 100644 --- a/src/app/clusters/microwave-oven-control-server/microwave-oven-control-server.cpp +++ b/src/app/clusters/microwave-oven-control-server/microwave-oven-control-server.cpp @@ -248,11 +248,16 @@ void Instance::HandleSetCookingParameters(HandlerContext & ctx, const Commands:: if (startAfterSetting.HasValue()) { + ConcreteCommandPath commandPath(mEndpointId, OperationalState::Id, OperationalState::Commands::Start::Id); + +#if CHIP_CONFIG_USE_EMBER_DATA_MODEL + bool commandExists = ServerClusterCommandExists(commandPath) == Status::Success; +#else + bool commandExists = + InteractionModelEngine::GetInstance()->GetDataModelProvider()->GetAcceptedCommandInfo(commandPath).has_value(); +#endif VerifyOrExit( - ServerClusterCommandExists( - ConcreteCommandPath(mEndpointId, OperationalState::Id, OperationalState::Commands::Start::Id)) == Status::Success, - status = Status::InvalidCommand; - ChipLogError( + commandExists, status = Status::InvalidCommand; ChipLogError( Zcl, "Microwave Oven Control: Failed to set cooking parameters, Start command of operational state is not supported")); } diff --git a/src/app/common_flags.gni b/src/app/common_flags.gni index e5d5748153d09c..4dbbcb4fa3e145 100644 --- a/src/app/common_flags.gni +++ b/src/app/common_flags.gni @@ -32,7 +32,7 @@ declare_args() { if (matter_enable_recommended && current_os == "linux") { chip_use_data_model_interface = "check" } else { - chip_use_data_model_interface = "disabled" + chip_use_data_model_interface = "enabled" } # Whether we call `chipDie` on DM `check` errors diff --git a/src/app/dynamic_server/DynamicDispatcher.cpp b/src/app/dynamic_server/DynamicDispatcher.cpp index e1f458f0bc3df1..0c9825d6792eb4 100644 --- a/src/app/dynamic_server/DynamicDispatcher.cpp +++ b/src/app/dynamic_server/DynamicDispatcher.cpp @@ -32,7 +32,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -57,6 +59,8 @@ namespace { // AccessControl.cpp. constexpr EndpointId kSupportedEndpoint = 0; +DataVersion gMockDataVersion = 0; + } // anonymous namespace namespace chip { @@ -381,3 +385,63 @@ const EmberAfCluster * emberAfFindServerCluster(EndpointId endpoint, ClusterId c return nullptr; } + +unsigned emberAfMetadataStructureGeneration() +{ + // DynamicDispatcher at this point hardcodes a single OTA provider cluster. + // The structure does not change over time, so the current version stays at 0. + return 0; +} + +Protocols::InteractionModel::Status emberAfWriteAttribute(const ConcreteAttributePath & path, const EmberAfWriteDataInput & input) +{ + return Protocols::InteractionModel::Status::UnsupportedAttribute; +} + +Protocols::InteractionModel::Status emAfReadOrWriteAttribute(const EmberAfAttributeSearchRecord * attRecord, + const EmberAfAttributeMetadata ** metadata, uint8_t * buffer, + uint16_t readLength, bool write) +{ + return Protocols::InteractionModel::Status::UnsupportedAttribute; +} + +void emberAfAttributeChanged(EndpointId endpoint, ClusterId clusterId, AttributeId attributeId, + AttributesChangedListener * listener) +{ + gMockDataVersion++; + listener->MarkDirty(AttributePathParams(endpoint, clusterId, attributeId)); +} + +DataVersion * emberAfDataVersionStorage(const ConcreteClusterPath & aConcreteClusterPath) +{ + return &gMockDataVersion; +} + +Protocols::InteractionModel::Status emAfWriteAttributeExternal(const ConcreteAttributePath & path, + const EmberAfWriteDataInput & input) +{ + return Protocols::InteractionModel::Status::UnsupportedAttribute; +} + +Span emberAfDeviceTypeListFromEndpointIndex(unsigned endpointIndex, CHIP_ERROR & err) +{ + err = CHIP_ERROR_NOT_IMPLEMENTED; + return Span(); +} + +const EmberAfCluster * emberAfFindClusterInType(const EmberAfEndpointType * endpointType, ClusterId clusterId, + EmberAfClusterMask mask, uint8_t * index) +{ + if ((endpointType == &otaProviderEndpoint) && (clusterId == Clusters::OtaSoftwareUpdateProvider::Id)) + { + return &otaProviderCluster; + } + + return nullptr; +} + +const EmberAfAttributeMetadata * emberAfLocateAttributeMetadata(EndpointId endpoint, ClusterId clusterId, AttributeId attributeId) +{ + // no known attributes even for OTA + return nullptr; +} diff --git a/src/app/dynamic_server/mock_includes/zap-generated/endpoint_config.h b/src/app/dynamic_server/mock_includes/zap-generated/endpoint_config.h index 80fa88048d1782..08227c50ed59e9 100644 --- a/src/app/dynamic_server/mock_includes/zap-generated/endpoint_config.h +++ b/src/app/dynamic_server/mock_includes/zap-generated/endpoint_config.h @@ -21,3 +21,5 @@ // Some overrides to see that this is not used as a real "endpoint_config" that contains data #define GENERATED_DEFAULTS #error "Not a real codegen. This is a temporary include for dynamic-overrides only" #define GENERATED_CLUSTERS #error "Not a real codegen. This is a temporary include for dynamic-overrides only" + +#define ATTRIBUTE_LARGEST (1003) diff --git a/src/app/icd/client/BUILD.gn b/src/app/icd/client/BUILD.gn index 4d59a627a4bcbb..b56bb98ccd7f8a 100644 --- a/src/app/icd/client/BUILD.gn +++ b/src/app/icd/client/BUILD.gn @@ -46,7 +46,6 @@ source_set("handler") { ] public_deps = [ ":manager", - "${chip_root}/src/app", "${chip_root}/src/controller", "${chip_root}/src/lib/core", "${chip_root}/src/messaging", diff --git a/src/app/util/mock/include/zap-generated/endpoint_config.h b/src/app/util/mock/include/zap-generated/endpoint_config.h index 620e6e29880f36..76781a4cc886b4 100644 --- a/src/app/util/mock/include/zap-generated/endpoint_config.h +++ b/src/app/util/mock/include/zap-generated/endpoint_config.h @@ -1,4 +1,8 @@ // Number of fixed endpoints #define FIXED_ENDPOINT_COUNT (3) +// This is one of the defines that endpoint_config generally has. In particular this +// can (and is) used to size I/O buffers for attribute reads (like ember-io-storage.cpp). +// +// Define this to a large number, matching what an all-clusters-app has. #define ATTRIBUTE_LARGEST (1003) diff --git a/src/controller/java/BUILD.gn b/src/controller/java/BUILD.gn index 2ae828ad09c47e..c1e05cff40fb42 100644 --- a/src/controller/java/BUILD.gn +++ b/src/controller/java/BUILD.gn @@ -19,6 +19,7 @@ import("${chip_root}/build/chip/buildconfig_header.gni") import("${chip_root}/build/chip/java/config.gni") import("${chip_root}/build/chip/java/rules.gni") import("${chip_root}/build/chip/tests.gni") +import("${chip_root}/src/app/codegen-data-model-provider/model.gni") import("${chip_root}/src/app/common_flags.gni") import("${chip_root}/src/platform/device.gni") @@ -171,6 +172,15 @@ shared_library("jni") { defines += [ "CHIP_CONFIG_SKIP_APP_SPECIFIC_GENERATED_HEADER_INCLUDES=1" ] deps += [ "${chip_root}/src/controller:nodatamodel" ] + + # Temporary dependency: InteractionModelEngine NEEDS a codegen data model instance + # defined and application is supposed to provide it. This adds the sources + # in the same way "data_model" implementations do + # + # DynamicDispatcher in src/app:interaction-model implements the actual required + # ember callbacks in this case... + sources += codegen_data_model_SOURCES + public_deps = codegen_data_model_PUBLIC_DEPS } else { deps += [ "${chip_root}/src/controller/data_model" ] } diff --git a/src/darwin/Framework/CHIP/ServerEndpoint/MTRIMDispatch.mm b/src/darwin/Framework/CHIP/ServerEndpoint/MTRIMDispatch.mm index d21242956b01bf..f719e07f34fcce 100644 --- a/src/darwin/Framework/CHIP/ServerEndpoint/MTRIMDispatch.mm +++ b/src/darwin/Framework/CHIP/ServerEndpoint/MTRIMDispatch.mm @@ -50,6 +50,15 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) return Protocols::InteractionModel::Status::UnsupportedAttribute; } +Protocols::InteractionModel::Status emberAfWriteAttribute(const ConcreteAttributePath & path, const EmberAfWriteDataInput & input) +{ + assertChipStackLockedByCurrentThread(); + + // All of our attributes are handled via AttributeAccessInterface, so this + // should be unreached. + return Protocols::InteractionModel::Status::UnsupportedAttribute; +} + namespace chip { namespace app { diff --git a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj index a21e90d726ec0b..7893475aa6050c 100644 --- a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj +++ b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj @@ -266,6 +266,26 @@ 754784672BFE93B00089C372 /* MTRDeviceStorageBehaviorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 754784632BFE65B70089C372 /* MTRDeviceStorageBehaviorConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; 754F3DF427FBB94B00E60580 /* MTREventTLVValueDecoder_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 754F3DF327FBB94B00E60580 /* MTREventTLVValueDecoder_Internal.h */; }; 7560FD1C27FBBD3F005E85B3 /* MTREventTLVValueDecoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7560FD1B27FBBD3F005E85B3 /* MTREventTLVValueDecoder.mm */; }; + 7592BCF32CBEE98C00EB74A0 /* Instance.h in Headers */ = {isa = PBXBuildFile; fileRef = 7592BCF12CBEE98C00EB74A0 /* Instance.h */; }; + 7592BCF42CBEE98C00EB74A0 /* EmberMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 7592BCEF2CBEE98C00EB74A0 /* EmberMetadata.h */; }; + 7592BCF52CBEE98C00EB74A0 /* CodegenDataModelProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7592BCEB2CBEE98C00EB74A0 /* CodegenDataModelProvider.h */; }; + 7592BCF62CBEE98C00EB74A0 /* CodegenDataModelProvider_Read.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7592BCED2CBEE98C00EB74A0 /* CodegenDataModelProvider_Read.cpp */; }; + 7592BCF72CBEE98C00EB74A0 /* Instance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7592BCF22CBEE98C00EB74A0 /* Instance.cpp */; }; + 7592BCF82CBEE98C00EB74A0 /* EmberMetadata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7592BCF02CBEE98C00EB74A0 /* EmberMetadata.cpp */; }; + 7592BCF92CBEE98C00EB74A0 /* CodegenDataModelProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7592BCEC2CBEE98C00EB74A0 /* CodegenDataModelProvider.cpp */; }; + 7592BCFA2CBEE98C00EB74A0 /* CodegenDataModelProvider_Write.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7592BCEE2CBEE98C00EB74A0 /* CodegenDataModelProvider_Write.cpp */; }; + 7592BCFB2CBEE98C00EB74A0 /* CodegenDataModelProvider_Read.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7592BCED2CBEE98C00EB74A0 /* CodegenDataModelProvider_Read.cpp */; }; + 7592BCFC2CBEE98C00EB74A0 /* Instance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7592BCF22CBEE98C00EB74A0 /* Instance.cpp */; }; + 7592BCFD2CBEE98C00EB74A0 /* EmberMetadata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7592BCF02CBEE98C00EB74A0 /* EmberMetadata.cpp */; }; + 7592BCFE2CBEE98C00EB74A0 /* CodegenDataModelProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7592BCEC2CBEE98C00EB74A0 /* CodegenDataModelProvider.cpp */; }; + 7592BCFF2CBEE98C00EB74A0 /* CodegenDataModelProvider_Write.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7592BCEE2CBEE98C00EB74A0 /* CodegenDataModelProvider_Write.cpp */; }; + 7592BD002CBEE98C00EB74A0 /* Instance.h in Headers */ = {isa = PBXBuildFile; fileRef = 7592BCF12CBEE98C00EB74A0 /* Instance.h */; }; + 7592BD012CBEE98C00EB74A0 /* EmberMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 7592BCEF2CBEE98C00EB74A0 /* EmberMetadata.h */; }; + 7592BD022CBEE98C00EB74A0 /* CodegenDataModelProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7592BCEB2CBEE98C00EB74A0 /* CodegenDataModelProvider.h */; }; + 7592BD0B2CC6BCC300EB74A0 /* EmberAttributeDataBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7592BD0A2CC6BCC300EB74A0 /* EmberAttributeDataBuffer.cpp */; }; + 7592BD0C2CC6BCC300EB74A0 /* EmberAttributeDataBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7592BD092CC6BCC300EB74A0 /* EmberAttributeDataBuffer.h */; }; + 7592BD0D2CC6BCC300EB74A0 /* EmberAttributeDataBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7592BD092CC6BCC300EB74A0 /* EmberAttributeDataBuffer.h */; }; + 7592BD0E2CC6BCC300EB74A0 /* EmberAttributeDataBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7592BD0A2CC6BCC300EB74A0 /* EmberAttributeDataBuffer.cpp */; }; 7596A83E28751220004DAE0E /* MTRBaseClusters_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7596A83D28751220004DAE0E /* MTRBaseClusters_Internal.h */; }; 7596A84428762729004DAE0E /* MTRDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 7596A84228762729004DAE0E /* MTRDevice.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7596A84528762729004DAE0E /* MTRDevice.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7596A84328762729004DAE0E /* MTRDevice.mm */; }; @@ -729,6 +749,16 @@ 754784662BFE6B890089C372 /* MTRDeviceStorageBehaviorConfiguration_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRDeviceStorageBehaviorConfiguration_Internal.h; sourceTree = ""; }; 754F3DF327FBB94B00E60580 /* MTREventTLVValueDecoder_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTREventTLVValueDecoder_Internal.h; sourceTree = ""; }; 7560FD1B27FBBD3F005E85B3 /* MTREventTLVValueDecoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTREventTLVValueDecoder.mm; sourceTree = ""; }; + 7592BCEB2CBEE98C00EB74A0 /* CodegenDataModelProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CodegenDataModelProvider.h; sourceTree = ""; }; + 7592BCEC2CBEE98C00EB74A0 /* CodegenDataModelProvider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CodegenDataModelProvider.cpp; sourceTree = ""; }; + 7592BCED2CBEE98C00EB74A0 /* CodegenDataModelProvider_Read.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CodegenDataModelProvider_Read.cpp; sourceTree = ""; }; + 7592BCEE2CBEE98C00EB74A0 /* CodegenDataModelProvider_Write.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CodegenDataModelProvider_Write.cpp; sourceTree = ""; }; + 7592BCEF2CBEE98C00EB74A0 /* EmberMetadata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EmberMetadata.h; sourceTree = ""; }; + 7592BCF02CBEE98C00EB74A0 /* EmberMetadata.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = EmberMetadata.cpp; sourceTree = ""; }; + 7592BCF12CBEE98C00EB74A0 /* Instance.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Instance.h; sourceTree = ""; }; + 7592BCF22CBEE98C00EB74A0 /* Instance.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Instance.cpp; sourceTree = ""; }; + 7592BD092CC6BCC300EB74A0 /* EmberAttributeDataBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EmberAttributeDataBuffer.h; sourceTree = ""; }; + 7592BD0A2CC6BCC300EB74A0 /* EmberAttributeDataBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = EmberAttributeDataBuffer.cpp; sourceTree = ""; }; 7596A83D28751220004DAE0E /* MTRBaseClusters_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRBaseClusters_Internal.h; sourceTree = ""; }; 7596A84228762729004DAE0E /* MTRDevice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRDevice.h; sourceTree = ""; }; 7596A84328762729004DAE0E /* MTRDevice.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRDevice.mm; sourceTree = ""; }; @@ -1127,6 +1157,7 @@ 1E857311265519DE0050A4D9 /* app */ = { isa = PBXGroup; children = ( + 7521D2932CBECE3F00218E16 /* codegen-data-model-provider */, 75A202E72BA8DBB700A771DD /* reporting */, 5143041F2914CED9004DC7FE /* generic-callback-stubs.cpp */, 514C79F22B62ED5500DD6D7B /* attribute-storage.cpp */, @@ -1287,6 +1318,23 @@ path = ServerEndpoint; sourceTree = ""; }; + 7521D2932CBECE3F00218E16 /* codegen-data-model-provider */ = { + isa = PBXGroup; + children = ( + 7592BD092CC6BCC300EB74A0 /* EmberAttributeDataBuffer.h */, + 7592BD0A2CC6BCC300EB74A0 /* EmberAttributeDataBuffer.cpp */, + 7592BCEB2CBEE98C00EB74A0 /* CodegenDataModelProvider.h */, + 7592BCEC2CBEE98C00EB74A0 /* CodegenDataModelProvider.cpp */, + 7592BCED2CBEE98C00EB74A0 /* CodegenDataModelProvider_Read.cpp */, + 7592BCEE2CBEE98C00EB74A0 /* CodegenDataModelProvider_Write.cpp */, + 7592BCEF2CBEE98C00EB74A0 /* EmberMetadata.h */, + 7592BCF02CBEE98C00EB74A0 /* EmberMetadata.cpp */, + 7592BCF12CBEE98C00EB74A0 /* Instance.h */, + 7592BCF22CBEE98C00EB74A0 /* Instance.cpp */, + ); + path = "codegen-data-model-provider"; + sourceTree = ""; + }; 75A202E72BA8DBB700A771DD /* reporting */ = { isa = PBXGroup; children = ( @@ -1673,6 +1721,7 @@ 037C3DCE2991BD5100B7EEE2 /* CHIPCommandBridge.h in Headers */, 512431272BA0C8BF000BC136 /* SetMRPParametersCommand.h in Headers */, 037C3DD22991BD5200B7EEE2 /* InteractiveCommands.h in Headers */, + 7592BD0D2CC6BCC300EB74A0 /* EmberAttributeDataBuffer.h in Headers */, 037C3DAF2991BD4F00B7EEE2 /* DeviceControllerDelegateBridge.h in Headers */, B4FCD5712B603A6300832859 /* DownloadLogCommand.h in Headers */, 037C3DC32991BD5100B7EEE2 /* Commands.h in Headers */, @@ -1704,6 +1753,9 @@ 037C3DB72991BD5000B7EEE2 /* ModelCommandBridge.h in Headers */, 037C3DC52991BD5100B7EEE2 /* StorageManagementCommand.h in Headers */, 037C3DCC2991BD5100B7EEE2 /* MTRError_Utils.h in Headers */, + 7592BD002CBEE98C00EB74A0 /* Instance.h in Headers */, + 7592BD012CBEE98C00EB74A0 /* EmberMetadata.h in Headers */, + 7592BD022CBEE98C00EB74A0 /* CodegenDataModelProvider.h in Headers */, 037C3DAD2991BD4F00B7EEE2 /* PairingCommandBridge.h in Headers */, 037C3DBB2991BD5000B7EEE2 /* Commands.h in Headers */, 512431262BA0C8BA000BC136 /* ResetMRPParametersCommand.h in Headers */, @@ -1819,6 +1871,7 @@ 51E51FC0282AD37A00FC978D /* MTRDeviceControllerStartupParams_Internal.h in Headers */, 3DECCB702934AECD00585AEC /* MTRLogging.h in Headers */, 1E4D654E29C208DD00BC3478 /* MTRCommissionableBrowserResult.h in Headers */, + 7592BD0C2CC6BCC300EB74A0 /* EmberAttributeDataBuffer.h in Headers */, 9B231B042C62EF650030EB37 /* (null) in Headers */, 515BE4ED2B72C0C5000BC1FD /* MTRUnfairLock.h in Headers */, 998F286F26D55EC5001846C6 /* MTRP256KeypairBridge.h in Headers */, @@ -1833,6 +1886,9 @@ 51D0B12E2B6177FD006E3511 /* MTRAccessGrant.h in Headers */, 5109E9B52CB8B5DF0006884B /* MTRDeviceType.h in Headers */, 1E4D655029C208DD00BC3478 /* MTRCommissionableBrowserDelegate.h in Headers */, + 7592BCF32CBEE98C00EB74A0 /* Instance.h in Headers */, + 7592BCF42CBEE98C00EB74A0 /* EmberMetadata.h in Headers */, + 7592BCF52CBEE98C00EB74A0 /* CodegenDataModelProvider.h in Headers */, 7596A84828762783004DAE0E /* MTRAsyncCallbackWorkQueue.h in Headers */, 5A7947E527C0129F00434CF2 /* MTRDeviceController+XPC.h in Headers */, 51E95DFB2A78443C00A434F0 /* MTRSessionResumptionStorageBridge.h in Headers */, @@ -1992,11 +2048,17 @@ 0395470F2992DB37006D42A8 /* complete.c in Sources */, 03F430A82994112B00166449 /* editline.c in Sources */, 03F430AA2994113500166449 /* sysunix.c in Sources */, + 7592BD0E2CC6BCC300EB74A0 /* EmberAttributeDataBuffer.cpp in Sources */, B45373BF2A9FEA9100807602 /* adopt.c in Sources */, B4F773CB2CB54B61008C6B23 /* LeakChecker.mm in Sources */, B45373D12A9FEB0C00807602 /* alloc.c in Sources */, B45373DD2A9FEB5300807602 /* base64-decode.c in Sources */, B45373D22A9FEB0C00807602 /* buflist.c in Sources */, + 7592BCFB2CBEE98C00EB74A0 /* CodegenDataModelProvider_Read.cpp in Sources */, + 7592BCFC2CBEE98C00EB74A0 /* Instance.cpp in Sources */, + 7592BCFD2CBEE98C00EB74A0 /* EmberMetadata.cpp in Sources */, + 7592BCFE2CBEE98C00EB74A0 /* CodegenDataModelProvider.cpp in Sources */, + 7592BCFF2CBEE98C00EB74A0 /* CodegenDataModelProvider_Write.cpp in Sources */, B45373C12A9FEA9100807602 /* close.c in Sources */, B45373D42A9FEB0C00807602 /* context.c in Sources */, B45373E52A9FEBA400807602 /* date.c in Sources */, @@ -2096,6 +2158,11 @@ 515C1C6F284F9FFB00A48F0C /* MTRFramework.mm in Sources */, 51029DF6293AA6100087AFB0 /* MTROperationalCertificateIssuer.mm in Sources */, 27A53C1827FBC6920053F131 /* MTRAttestationTrustStoreBridge.mm in Sources */, + 7592BCF62CBEE98C00EB74A0 /* CodegenDataModelProvider_Read.cpp in Sources */, + 7592BCF72CBEE98C00EB74A0 /* Instance.cpp in Sources */, + 7592BCF82CBEE98C00EB74A0 /* EmberMetadata.cpp in Sources */, + 7592BCF92CBEE98C00EB74A0 /* CodegenDataModelProvider.cpp in Sources */, + 7592BCFA2CBEE98C00EB74A0 /* CodegenDataModelProvider_Write.cpp in Sources */, 93B2CF9A2B56E45C00E4D187 /* MTRClusterNames.mm in Sources */, 998F287126D56940001846C6 /* MTRP256KeypairBridge.mm in Sources */, 516416012B6B483C00D5CE11 /* MTRIMDispatch.mm in Sources */, @@ -2153,6 +2220,7 @@ 5109E9B42CB8B5DF0006884B /* MTRDeviceType.mm in Sources */, 3D843757294AD25A0070D20A /* MTRCertificateInfo.mm in Sources */, 5A7947E427C0129600434CF2 /* MTRDeviceController+XPC.mm in Sources */, + 7592BD0B2CC6BCC300EB74A0 /* EmberAttributeDataBuffer.cpp in Sources */, 5A6FEC9027B563D900F25F42 /* MTRDeviceControllerOverXPC.mm in Sources */, 516415FC2B6ACA8300D5CE11 /* MTRServerAccessControl.mm in Sources */, B289D4222639C0D300D4E314 /* MTROnboardingPayloadParser.mm in Sources */,